From 393aa064b4ab7b1f9d1fc07ac6a93559ebb69a99 Mon Sep 17 00:00:00 2001 From: GUNJ JOSHI Date: Sun, 24 Aug 2025 22:30:54 +0530 Subject: [PATCH] refactor: modify C implementation to accept float values --- 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: na - 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: passed - task: lint_c_benchmarks status: passed - 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 --- --- .../math/base/special/negafibonaccif/README.md | 15 +++++++-------- .../negafibonaccif/benchmark/c/native/benchmark.c | 5 ++--- .../special/negafibonaccif/examples/c/example.c | 7 +++---- .../stdlib/math/base/special/negafibonaccif.h | 4 +--- .../base/special/negafibonaccif/manifest.json | 9 ++++++--- .../math/base/special/negafibonaccif/src/addon.c | 2 +- .../math/base/special/negafibonaccif/src/main.c | 13 +++++++------ 7 files changed, 27 insertions(+), 28 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/README.md b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/README.md index e6863918cb3f..02832613e1ac 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/README.md +++ b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/README.md @@ -174,19 +174,19 @@ logEachMap( 'negafibonaccif(%d) = %0.4f', v, negafibonaccif ); Computes the nth [negaFibonacci number][fibonacci-number] as a [single-precision floating-point number][ieee754]. ```c -float out = stdlib_base_negafibonaccif( 0 ); +float out = stdlib_base_negafibonaccif( 0.0f ); // returns 0.0f -out = stdlib_base_negafibonaccif( -1 ); +out = stdlib_base_negafibonaccif( -1.0f ); // returns 1.0f ``` The function accepts the following arguments: -- **n**: `[in] int32_t` input value. +- **n**: `[in] float` input value. ```c -float stdlib_base_negafibonaccif( const int32_t n ); +float stdlib_base_negafibonaccif( const float n ); ``` @@ -210,15 +210,14 @@ float stdlib_base_negafibonaccif( const int32_t n ); ```c #include "stdlib/math/base/special/negafibonaccif.h" #include -#include int main( void ) { - int32_t i; + float i; float v; - for ( i = 0; i > -37; i-- ) { + for ( i = 0.0f; i > -37.0f; i-- ) { v = stdlib_base_negafibonaccif( i ); - printf( "negafibonaccif(%d) = %f\n", i, v ); + printf( "negafibonaccif(%f) = %f\n", i, v ); } } ``` diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/benchmark/c/native/benchmark.c index 745bb0c18285..13d47c2918b7 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/benchmark/c/native/benchmark.c @@ -17,7 +17,6 @@ */ #include "stdlib/math/base/special/negafibonaccif.h" -#include #include #include #include @@ -91,14 +90,14 @@ static float rand_float( void ) { * @return elapsed time in seconds */ static double benchmark( void ) { - int32_t x[ 100 ]; + float x[ 100 ]; double elapsed; double t; float y; int i; for ( i = 0; i < 100; i++ ) { - x[ i ] = (int32_t)floorf( 36.0f*rand_float()); + x[ i ] = floorf( 36.0f*rand_float()); } t = tic(); diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/examples/c/example.c index 1b0e5d3a3ffc..bd3f0ffa275a 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/examples/c/example.c +++ b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/examples/c/example.c @@ -18,14 +18,13 @@ #include "stdlib/math/base/special/negafibonaccif.h" #include -#include int main( void ) { - int32_t i; + float i; float v; - for ( i = 0; i > -37; i-- ) { + for ( i = 0.0f; i > -37.0f; i-- ) { v = stdlib_base_negafibonaccif( i ); - printf( "negafibonaccif(%d) = %f\n", i, v ); + printf( "negafibonaccif(%f) = %f\n", i, v ); } } diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/include/stdlib/math/base/special/negafibonaccif.h b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/include/stdlib/math/base/special/negafibonaccif.h index fe0e896c179f..e77dc051fd02 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/include/stdlib/math/base/special/negafibonaccif.h +++ b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/include/stdlib/math/base/special/negafibonaccif.h @@ -19,8 +19,6 @@ #ifndef STDLIB_MATH_BASE_SPECIAL_NEGAFIBONACCIF_H #define STDLIB_MATH_BASE_SPECIAL_NEGAFIBONACCIF_H -#include - /* * If C++, prevent name mangling so that the compiler emits a binary file having undecorated names, thus mirroring the behavior of a C compiler. */ @@ -31,7 +29,7 @@ extern "C" { /** * Computes the nth negaFibonacci number as a single-precision floating-point number. */ -float stdlib_base_negafibonaccif( const int32_t n ); +float stdlib_base_negafibonaccif( const float n ); #ifdef __cplusplus } diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/manifest.json b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/manifest.json index 8a5106e3b52a..e9741610b33c 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/manifest.json @@ -38,7 +38,8 @@ "dependencies": [ "@stdlib/math/base/napi/unary", "@stdlib/constants/float32/max-safe-nth-fibonacci", - "@stdlib/math/base/special/absf" + "@stdlib/math/base/special/absf", + "@stdlib/math/base/assert/is-integerf" ] }, { @@ -53,7 +54,8 @@ "libpath": [], "dependencies": [ "@stdlib/constants/float32/max-safe-nth-fibonacci", - "@stdlib/math/base/special/absf" + "@stdlib/math/base/special/absf", + "@stdlib/math/base/assert/is-integerf" ] }, { @@ -68,7 +70,8 @@ "libpath": [], "dependencies": [ "@stdlib/constants/float32/max-safe-nth-fibonacci", - "@stdlib/math/base/special/absf" + "@stdlib/math/base/special/absf", + "@stdlib/math/base/assert/is-integerf" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/addon.c b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/addon.c index 44a432addee4..6336f262d790 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/addon.c +++ b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/addon.c @@ -19,4 +19,4 @@ #include "stdlib/math/base/special/negafibonaccif.h" #include "stdlib/math/base/napi/unary.h" -STDLIB_MATH_BASE_NAPI_MODULE_I_F( stdlib_base_negafibonaccif ) +STDLIB_MATH_BASE_NAPI_MODULE_F_F( stdlib_base_negafibonaccif ) diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/main.c b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/main.c index e44f3b297ed2..8493e1333668 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/negafibonaccif/src/main.c @@ -17,9 +17,10 @@ */ #include "stdlib/math/base/special/negafibonaccif.h" +#include "stdlib/math/base/assert/is_integerf.h" #include "stdlib/math/base/special/absf.h" #include "stdlib/constants/float32/max_safe_nth_fibonacci.h" -#include +#include static const float negafibonaccif_value[ 37 ] = { 0.0f, @@ -68,17 +69,17 @@ static const float negafibonaccif_value[ 37 ] = { * @return output value * * @example -* float out = stdlib_base_negafibonaccif( -1 ); +* float out = stdlib_base_negafibonaccif( -1.0f ); * // returns 1.0f */ -float stdlib_base_negafibonaccif( const int32_t n ) { - int32_t an; - if ( n > 0 ) { +float stdlib_base_negafibonaccif( const float n ) { + float an; + if ( !stdlib_base_is_integerf( n ) || n > 0.0f ) { return 0.0f / 0.0f; // NaN } an = stdlib_base_absf( n ); if ( an > STDLIB_CONSTANT_FLOAT32_MAX_SAFE_NTH_FIBONACCI ) { return 0.0f / 0.0f; // NaN } - return negafibonaccif_value[ an ]; + return negafibonaccif_value[ (size_t)an ]; }