From dda566baedeb05d7c67405f2d4bac78194c0fd67 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Tue, 25 Mar 2025 00:32:57 -0700 Subject: [PATCH 1/2] chore: use FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/math/base/special/factorial2/README.md | 4 ++-- .../include/stdlib/math/base/special/factorial2.h | 2 +- .../@stdlib/math/base/special/factorial2/lib/main.js | 8 ++------ .../@stdlib/math/base/special/factorial2/manifest.json | 9 ++++++--- .../@stdlib/math/base/special/factorial2/src/main.c | 5 ++--- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2/README.md b/lib/node_modules/@stdlib/math/base/special/factorial2/README.md index 4e7604e6373c..f6e4bd0882ba 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2/README.md +++ b/lib/node_modules/@stdlib/math/base/special/factorial2/README.md @@ -130,10 +130,10 @@ double out = stdlib_base_factorial2( 3 ); The function accepts the following arguments: -- **x**: `[in] int32_t` input value. +- **n**: `[in] int32_t` input value. ```c -double stdlib_base_factorial2( const int32_t x ); +double stdlib_base_factorial2( const int32_t n ); ``` diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2/include/stdlib/math/base/special/factorial2.h b/lib/node_modules/@stdlib/math/base/special/factorial2/include/stdlib/math/base/special/factorial2.h index 194e096fa5e9..3e9803c23f8e 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2/include/stdlib/math/base/special/factorial2.h +++ b/lib/node_modules/@stdlib/math/base/special/factorial2/include/stdlib/math/base/special/factorial2.h @@ -31,7 +31,7 @@ extern "C" { /** * Evaluates the double factorial of `n`. */ -double stdlib_base_factorial2( const int32_t x ); +double stdlib_base_factorial2( const int32_t n ); #ifdef __cplusplus } diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js b/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js index 1b13dfc706b1..03e86265e5c4 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js @@ -24,11 +24,7 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isInteger = require( '@stdlib/math/base/assert/is-integer' ); var isEven = require( '@stdlib/math/base/assert/is-even' ); var PINF = require( '@stdlib/constants/float64/pinf' ); - - -// VARIABLES // - -var MAX_FACTORIAL2 = 301; // TODO: consider extracting as a constant +var FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL = require( '@stdlib/constants/float64/max-safe-nth-double-factorial' ); // eslint-disable-line id-length // MAIN // @@ -63,7 +59,7 @@ function factorial2( n ) { if ( isnan( n ) ) { return NaN; } - if ( n >= MAX_FACTORIAL2 ) { + if ( n >= FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL ) { return PINF; } if ( n < 0 || isInteger( n ) === false ) { diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2/manifest.json b/lib/node_modules/@stdlib/math/base/special/factorial2/manifest.json index 8321ace7977a..e919c0549ad8 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/factorial2/manifest.json @@ -40,7 +40,8 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/assert/is-integer", "@stdlib/math/base/assert/is-even", - "@stdlib/constants/float64/pinf" + "@stdlib/constants/float64/pinf", + "@stdlib/constants/float64/max-safe-nth-double-factorial" ] }, { @@ -57,7 +58,8 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/assert/is-integer", "@stdlib/math/base/assert/is-even", - "@stdlib/constants/float64/pinf" + "@stdlib/constants/float64/pinf", + "@stdlib/constants/float64/max-safe-nth-double-factorial" ] }, { @@ -74,7 +76,8 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/assert/is-integer", "@stdlib/math/base/assert/is-even", - "@stdlib/constants/float64/pinf" + "@stdlib/constants/float64/pinf", + "@stdlib/constants/float64/max-safe-nth-double-factorial" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c b/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c index 545e8228f0d1..92352efff63b 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c @@ -21,10 +21,9 @@ #include "stdlib/math/base/assert/is_integer.h" #include "stdlib/math/base/assert/is_even.h" #include "stdlib/constants/float64/pinf.h" +#include "stdlib/constants/float64/max_safe_nth_double_factorial.h" #include -#define MAX_FACTORIAL2 301 - /** * Evaluates the double factorial of `n`. * @@ -43,7 +42,7 @@ double stdlib_base_factorial2( const int32_t n ) { if ( stdlib_base_is_nan( n ) ) { return 0.0/0.0; // NaN } - if ( n >= MAX_FACTORIAL2 ) { + if ( n >= STDLIB_CONSTANT_FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL ) { return STDLIB_CONSTANT_FLOAT64_PINF; } if ( n < 0 || !stdlib_base_is_integer( n ) ) { From a25e4319ff747f26ae99e10562c4bb2a3015e01a Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Tue, 25 Mar 2025 12:38:45 -0700 Subject: [PATCH 2/2] fix: inequality check for divergence --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../@stdlib/math/base/special/factorial2/lib/main.js | 2 +- .../@stdlib/math/base/special/factorial2/src/main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js b/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js index 03e86265e5c4..8c1168450cb2 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/factorial2/lib/main.js @@ -59,7 +59,7 @@ function factorial2( n ) { if ( isnan( n ) ) { return NaN; } - if ( n >= FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL ) { + if ( n > FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL ) { return PINF; } if ( n < 0 || isInteger( n ) === false ) { diff --git a/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c b/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c index 92352efff63b..b7eadad72dd5 100644 --- a/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/factorial2/src/main.c @@ -42,7 +42,7 @@ double stdlib_base_factorial2( const int32_t n ) { if ( stdlib_base_is_nan( n ) ) { return 0.0/0.0; // NaN } - if ( n >= STDLIB_CONSTANT_FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL ) { + if ( n > STDLIB_CONSTANT_FLOAT64_MAX_SAFE_NTH_DOUBLE_FACTORIAL ) { return STDLIB_CONSTANT_FLOAT64_PINF; } if ( n < 0 || !stdlib_base_is_integer( n ) ) {