From 531570545f3df4676d4ceef1418372b0441de6f7 Mon Sep 17 00:00:00 2001 From: GUNJ JOSHI Date: Sat, 23 Aug 2025 23:51:36 +0530 Subject: [PATCH] refactor: modify C implementation to accept float --- 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: 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 --- --- .../@stdlib/math/base/special/lucasf/README.md | 15 +++++++-------- .../special/lucasf/benchmark/c/native/benchmark.c | 4 ++-- .../math/base/special/lucasf/examples/c/example.c | 7 +++---- .../include/stdlib/math/base/special/lucasf.h | 4 +--- .../@stdlib/math/base/special/lucasf/lib/main.js | 5 ++--- .../math/base/special/lucasf/manifest.json | 9 ++++++--- .../@stdlib/math/base/special/lucasf/src/addon.c | 2 +- .../@stdlib/math/base/special/lucasf/src/main.c | 13 ++++++++----- 8 files changed, 30 insertions(+), 29 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/README.md b/lib/node_modules/@stdlib/math/base/special/lucasf/README.md index 5e4db9edaf6d..93cf837a8a9c 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/README.md +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/README.md @@ -164,19 +164,19 @@ logEachMap( 'lucasf(%d) = %0.1f', x, lucasf ); Computes the nth [Lucas number][lucas-number] as a single-precision floating-point number. ```c -float out = stdlib_base_lucasf( 0 ); +float out = stdlib_base_lucasf( 0.0f ); // returns 2.0f -out = stdlib_base_lucasf( 1 ); +out = stdlib_base_lucasf( 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_lucasf( const int32_t n ); +float stdlib_base_lucasf( const float n ); ``` @@ -200,15 +200,14 @@ float stdlib_base_lucasf( const int32_t n ); ```c #include "stdlib/math/base/special/lucasf.h" #include -#include int main( void ) { - int32_t i; + float i; float v; - for ( i = 0; i < 35; i++ ) { + for ( i = 0.0f; i < 35.0f; i++ ) { v = stdlib_base_lucasf( i ); - printf( "lucasf(%d) = %f\n", i, v ); + printf( "lucasf(%f) = %f\n", i, v ); } } ``` diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/lucasf/benchmark/c/native/benchmark.c index 94348a3434a4..00a8f22bf66a 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/benchmark/c/native/benchmark.c @@ -91,14 +91,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)( 34.0f*rand_float() ); + x[ i ] = ( 34.0f*rand_float() ); } t = tic(); diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/examples/c/example.c b/lib/node_modules/@stdlib/math/base/special/lucasf/examples/c/example.c index 8006af174d82..9f691b2ee0d9 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/examples/c/example.c +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/examples/c/example.c @@ -18,14 +18,13 @@ #include "stdlib/math/base/special/lucasf.h" #include -#include int main( void ) { - int32_t i; + float i; float v; - for ( i = 0; i < 35; i++ ) { + for ( i = 0.0f; i < 35.0f; i++ ) { v = stdlib_base_lucasf( i ); - printf( "lucasf(%d) = %f\n", i, v ); + printf( "lucasf(%f) = %f\n", i, v ); } } diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/include/stdlib/math/base/special/lucasf.h b/lib/node_modules/@stdlib/math/base/special/lucasf/include/stdlib/math/base/special/lucasf.h index 304d39d8292d..6e61fa8f6e6a 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/include/stdlib/math/base/special/lucasf.h +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/include/stdlib/math/base/special/lucasf.h @@ -19,8 +19,6 @@ #ifndef STDLIB_MATH_BASE_SPECIAL_LUCASF_H #define STDLIB_MATH_BASE_SPECIAL_LUCASF_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 Lucas number as a single-precision floating-point number. */ -float stdlib_base_lucasf( const int32_t n ); +float stdlib_base_lucasf( const float n ); #ifdef __cplusplus } diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/lib/main.js b/lib/node_modules/@stdlib/math/base/special/lucasf/lib/main.js index eca8b6cd176c..6341e984c1ae 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/lib/main.js @@ -21,7 +21,7 @@ // MODULES // var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); -var isIntegerf = require( '@stdlib/math/base/assert/is-integerf' ); +var isNonNegativeIntegerf = require( '@stdlib/math/base/assert/is-nonnegative-integerf' ); var MAX_LUCAS = require( '@stdlib/constants/float32/max-safe-nth-lucas' ); var LUCAS = require( './lucas.json' ); @@ -77,8 +77,7 @@ var LUCAS = require( './lucas.json' ); function lucasf( n ) { if ( isnanf( n ) || - isIntegerf( n ) === false || - n < 0 || + !isNonNegativeIntegerf( n ) || n > MAX_LUCAS ) { return NaN; diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/manifest.json b/lib/node_modules/@stdlib/math/base/special/lucasf/manifest.json index ce09484e2d1b..e11a4317e6d1 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/manifest.json @@ -37,7 +37,8 @@ "libpath": [], "dependencies": [ "@stdlib/math/base/napi/unary", - "@stdlib/constants/float32/max-safe-nth-lucas" + "@stdlib/constants/float32/max-safe-nth-lucas", + "@stdlib/math/base/assert/is-nonnegative-integerf" ] }, { @@ -51,7 +52,8 @@ "libraries": [], "libpath": [], "dependencies": [ - "@stdlib/constants/float32/max-safe-nth-lucas" + "@stdlib/constants/float32/max-safe-nth-lucas", + "@stdlib/math/base/assert/is-nonnegative-integerf" ] }, { @@ -65,7 +67,8 @@ "libraries": [], "libpath": [], "dependencies": [ - "@stdlib/constants/float32/max-safe-nth-lucas" + "@stdlib/constants/float32/max-safe-nth-lucas", + "@stdlib/math/base/assert/is-nonnegative-integerf" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/src/addon.c b/lib/node_modules/@stdlib/math/base/special/lucasf/src/addon.c index ddf87ddef388..15cd79df657a 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/src/addon.c +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/src/addon.c @@ -19,4 +19,4 @@ #include "stdlib/math/base/special/lucasf.h" #include "stdlib/math/base/napi/unary.h" -STDLIB_MATH_BASE_NAPI_MODULE_I_F( stdlib_base_lucasf ) +STDLIB_MATH_BASE_NAPI_MODULE_F_F( stdlib_base_lucasf ) diff --git a/lib/node_modules/@stdlib/math/base/special/lucasf/src/main.c b/lib/node_modules/@stdlib/math/base/special/lucasf/src/main.c index bb9fac21342d..5b82f020b9c9 100644 --- a/lib/node_modules/@stdlib/math/base/special/lucasf/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/lucasf/src/main.c @@ -17,7 +17,10 @@ */ #include "stdlib/math/base/special/lucasf.h" +#include "stdlib/math/base/assert/is_nonnegative_integerf.h" #include "stdlib/constants/float32/max_safe_nth_lucas.h" +#include +#include static const int32_t lucas_value[ 35 ] = { 2, @@ -64,16 +67,16 @@ static const int32_t lucas_value[ 35 ] = { * @return output value * * @example -* float out = stdlib_base_lucasf( 1 ); +* float out = stdlib_base_lucasf( 1.0f ); * // returns 1.0f * * @example -* float out = stdlib_base_lucasf( -1 ); +* float out = stdlib_base_lucasf( -1.0f ); * // returns NaN */ -float stdlib_base_lucasf( const int32_t n ) { - if ( n < 0 || n > STDLIB_CONSTANT_FLOAT32_MAX_SAFE_NTH_LUCAS ) { +float stdlib_base_lucasf( const float n ) { + if ( !stdlib_base_is_nonnegative_integerf( n ) || n > STDLIB_CONSTANT_FLOAT32_MAX_SAFE_NTH_LUCAS ) { return 0.0f / 0.0f; // NaN } - return lucas_value[ n ]; + return lucas_value[ (size_t)n ]; }