From 3c8e9912e3487938df76bdd89faf810ed8028043 Mon Sep 17 00:00:00 2001 From: GUNJ JOSHI Date: Sat, 3 Aug 2024 06:31:53 +0530 Subject: [PATCH 1/2] refactor: use int64_t, check last bit, cast to double --- .../base/special/binomcoef/benchmark/c/native/benchmark.c | 4 ++-- .../@stdlib/math/base/special/binomcoef/src/main.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/c/native/benchmark.c index 070552abc4ae..96d1831ef01a 100644 --- a/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/binomcoef/benchmark/c/native/benchmark.c @@ -91,8 +91,8 @@ static double rand_double( void ) { */ static double benchmark( void ) { double elapsed; - double n; - double k; + int64_t n; + int64_t k; double y; double t; int i; diff --git a/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c b/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c index db5846659d48..937482c60e27 100644 --- a/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c @@ -53,7 +53,7 @@ double stdlib_base_binomcoef( const int64_t n, const int64_t k ) { nc = n; if ( nc < 0 ) { nc = -nc + k - 1; - if ( stdlib_base_is_odd( (double)k ) ) { + if ( k & 1 ) { sgn *= -1.0; } } @@ -64,7 +64,7 @@ double stdlib_base_binomcoef( const int64_t n, const int64_t k ) { return sgn; } if ( k == 1 || k == nc - 1 ) { - return sgn * nc; + return sgn * (double)nc; } // Minimize the number of computed terms by leveraging symmetry: From 6a5c059ce3639dd576126f0d2c0cdd5566989aac Mon Sep 17 00:00:00 2001 From: GUNJ JOSHI Date: Sat, 3 Aug 2024 06:40:34 +0530 Subject: [PATCH 2/2] docs: remove is-odd inclusion --- .../@stdlib/math/base/special/binomcoef/manifest.json | 3 --- .../@stdlib/math/base/special/binomcoef/src/main.c | 1 - 2 files changed, 4 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/binomcoef/manifest.json b/lib/node_modules/@stdlib/math/base/special/binomcoef/manifest.json index 3d8560d1ff72..35256c729628 100644 --- a/lib/node_modules/@stdlib/math/base/special/binomcoef/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/binomcoef/manifest.json @@ -41,7 +41,6 @@ "@stdlib/math/base/napi/binary", "@stdlib/math/base/special/floor", "@stdlib/math/base/special/gcd", - "@stdlib/math/base/assert/is-odd", "@stdlib/constants/float64/pinf", "@stdlib//constants/float64/max-safe-integer" ] @@ -61,7 +60,6 @@ "dependencies": [ "@stdlib/math/base/special/floor", "@stdlib/math/base/special/gcd", - "@stdlib/math/base/assert/is-odd", "@stdlib/constants/float64/pinf", "@stdlib//constants/float64/max-safe-integer" ] @@ -81,7 +79,6 @@ "dependencies": [ "@stdlib/math/base/special/floor", "@stdlib/math/base/special/gcd", - "@stdlib/math/base/assert/is-odd", "@stdlib/constants/float64/pinf", "@stdlib//constants/float64/max-safe-integer" ] diff --git a/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c b/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c index 937482c60e27..c116935a1e7a 100644 --- a/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/binomcoef/src/main.c @@ -19,7 +19,6 @@ #include "stdlib/math/base/special/binomcoef.h" #include "stdlib/math/base/special/floor.h" #include "stdlib/math/base/special/gcd.h" -#include "stdlib/math/base/assert/is_odd.h" #include "stdlib/constants/float64/pinf.h" #include "stdlib//constants/float64/max_safe_integer.h" #include