From fc23445b2eee8503ae019896a15f3f9f003990ac Mon Sep 17 00:00:00 2001 From: nakul-krishnakumar Date: Sun, 14 Sep 2025 13:53:20 +0530 Subject: [PATCH 1/3] refactor: added proper `Float32` casting in `math/base/special/fast/absf` --- 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: passed - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - 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/fast/absf/lib/main.js | 12 +++++++++--- .../@stdlib/math/base/special/fast/absf/test/test.js | 9 +++++---- .../math/base/special/fast/absf/test/test.native.js | 9 +++++---- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js b/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js index 10e72f6a3dec..46219538596f 100644 --- a/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js @@ -18,6 +18,11 @@ 'use strict'; +// MODULES // + +var f32 = require( '@stdlib/number/float64/base/to-float32' ); + + // MAIN // /** @@ -47,10 +52,11 @@ * // returns NaN */ function absf( x ) { - if ( x < 0.0 ) { - return -x; + x = f32( x ); + if ( f32( x < 0.0 ) ) { + return -f32( x ); } - return x; + return f32( x ); } diff --git a/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.js b/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.js index f2cd2e2cdafa..4eee1d49c9df 100644 --- a/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.js @@ -21,6 +21,7 @@ // MODULES // var tape = require( 'tape' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); var isNegativeZerof = require( '@stdlib/math/base/assert/is-negative-zerof' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var PINF = require( '@stdlib/constants/float32/pinf' ); @@ -37,14 +38,14 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function computes the absolute value of a number', function test( t ) { - t.strictEqual( absf( -2.0 ), 2.0, 'returns expected value' ); - t.strictEqual( absf( 3.0 ), 3.0, 'returns expected value' ); - t.strictEqual( absf( 0.0 ), 0.0, 'returns expected value' ); + t.strictEqual( absf( f32( -2.0 ) ), f32( 2.0 ), 'returns expected value' ); + t.strictEqual( absf( f32( 3.0 ) ), f32( 3.0 ), 'returns expected value' ); + t.strictEqual( absf( f32( 0.0 ) ), f32( 0.0 ), 'returns expected value' ); t.end(); }); tape( 'the function returns `-0` if provided `-0` (not IEEE 754 compliant)', function test( t ) { - t.strictEqual( isNegativeZerof( absf( -0.0 ) ), true, 'returns expected value' ); + t.strictEqual( isNegativeZerof( absf( f32( -0.0 ) ) ), true, 'returns expected value' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.native.js index 383486019aac..e6520e52ba83 100644 --- a/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/fast/absf/test/test.native.js @@ -22,6 +22,7 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); +var f32 = require( '@stdlib/number/float64/base/to-float32' ); var isNegativeZerof = require( '@stdlib/math/base/assert/is-negative-zerof' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var PINF = require( '@stdlib/constants/float32/pinf' ); @@ -46,14 +47,14 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function computes the absolute value of a number', opts, function test( t ) { - t.strictEqual( absf( -2.0 ), 2.0, 'returns expected value' ); - t.strictEqual( absf( 3.0 ), 3.0, 'returns expected value' ); - t.strictEqual( absf( 0.0 ), 0.0, 'returns expected value' ); + t.strictEqual( absf( f32( -2.0 ) ), f32( 2.0 ), 'returns expected value' ); + t.strictEqual( absf( f32( 3.0 ) ), f32( 3.0 ), 'returns expected value' ); + t.strictEqual( absf( f32( 0.0 ) ), f32( 0.0 ), 'returns expected value' ); t.end(); }); tape( 'the function returns `-0` if provided `-0` (not IEEE 754 compliant)', opts, function test( t ) { - t.strictEqual( isNegativeZerof( absf( -0.0 ) ), true, 'returns expected value' ); + t.strictEqual( isNegativeZerof( absf( f32( -0.0 ) ) ), true, 'returns expected value' ); t.end(); }); From 33c57b3e2593c0bbd80e892f29890c4d34426735 Mon Sep 17 00:00:00 2001 From: nakul-krishnakumar Date: Sun, 14 Sep 2025 14:06:58 +0530 Subject: [PATCH 2/3] chore: removed extra casting --- 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: na - 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 --- --- lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js b/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js index 46219538596f..6157a6e3135f 100644 --- a/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js @@ -52,7 +52,6 @@ var f32 = require( '@stdlib/number/float64/base/to-float32' ); * // returns NaN */ function absf( x ) { - x = f32( x ); if ( f32( x < 0.0 ) ) { return -f32( x ); } From 493a9ca272aea400e5a0149dbc98c301950bd9a8 Mon Sep 17 00:00:00 2001 From: Athan Date: Sun, 14 Sep 2025 03:34:19 -0700 Subject: [PATCH 3/3] chore: clean-up Signed-off-by: Athan --- .../@stdlib/math/base/special/fast/absf/lib/main.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js b/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js index 6157a6e3135f..090626bc5844 100644 --- a/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js +++ b/lib/node_modules/@stdlib/math/base/special/fast/absf/lib/main.js @@ -23,6 +23,11 @@ var f32 = require( '@stdlib/number/float64/base/to-float32' ); +// VARIABLES // + +var ZERO = f32( 0.0 ); + + // MAIN // /** @@ -52,10 +57,11 @@ var f32 = require( '@stdlib/number/float64/base/to-float32' ); * // returns NaN */ function absf( x ) { - if ( f32( x < 0.0 ) ) { - return -f32( x ); + x = f32( x ); + if ( x < ZERO ) { + return f32( -x ); } - return f32( x ); + return x; }