From 515297c6f2317f5e44aa9c000e4dac83099c44c3 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Fri, 4 Apr 2025 20:10:26 -0700 Subject: [PATCH 1/2] test: add tests for IEEE 754-2019 compliance --- 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: na - 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/sin/test/test.js | 12 ++++++++++++ .../math/base/special/sin/test/test.native.js | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/node_modules/@stdlib/math/base/special/sin/test/test.js b/lib/node_modules/@stdlib/math/base/special/sin/test/test.js index 382a814e5863..28540c4d146e 100644 --- a/lib/node_modules/@stdlib/math/base/special/sin/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/sin/test/test.js @@ -208,3 +208,15 @@ tape( 'the function returns `NaN` if provided `-infinity`', function test( t ) { t.equal( isnan( v ), true, 'returns expected value' ); t.end(); }); + +tape( 'the function returns `+0` if provided `+0`', function test( t ) { + var v = sin( 0.0 ); + t.equal( v, 0.0, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `-0` if provided `-0`', function test( t ) { + var v = sin( -0.0 ); + t.equal( v, -0.0, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js index 2a7188362898..ed0e4ef01053 100644 --- a/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js @@ -217,3 +217,15 @@ tape( 'the function returns `NaN` if provided `-infinity`', opts, function test( t.equal( isnan( v ), true, 'returns expected value' ); t.end(); }); + +tape( 'the function returns `+0` if provided `+0`', opts, function test( t ) { + var v = sin( 0.0 ); + t.equal( v, 0.0, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `-0` if provided `-0`', opts, function test( t ) { + var v = sin( -0.0 ); + t.equal( v, -0.0, 'returns expected value' ); + t.end(); +}); From 4729fd9fa0a7596e7de1ac5eca92a98e3cc5db6b Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Fri, 4 Apr 2025 20:42:26 -0700 Subject: [PATCH 2/2] refactor: use helper functions for zero checks --- 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: na - 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/sin/test/test.js | 14 ++++++++------ .../math/base/special/sin/test/test.native.js | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/sin/test/test.js b/lib/node_modules/@stdlib/math/base/special/sin/test/test.js index 28540c4d146e..0b1764e9eeca 100644 --- a/lib/node_modules/@stdlib/math/base/special/sin/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/sin/test/test.js @@ -26,6 +26,8 @@ var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); var EPS = require( '@stdlib/constants/float64/eps' ); var abs = require( '@stdlib/math/base/special/abs' ); +var isNegativeZero = require( '@stdlib/assert/is-negative-zero' ); +var isPositiveZero = require( '@stdlib/assert/is-positive-zero' ); var sin = require( './../lib' ); @@ -209,14 +211,14 @@ tape( 'the function returns `NaN` if provided `-infinity`', function test( t ) { t.end(); }); -tape( 'the function returns `+0` if provided `+0`', function test( t ) { - var v = sin( 0.0 ); - t.equal( v, 0.0, 'returns expected value' ); +tape( 'the function returns `-0` if provided `-0`', function test( t ) { + var v = sin( -0.0 ); + t.strictEqual( isNegativeZero( v ), true, 'returns expected value' ); t.end(); }); -tape( 'the function returns `-0` if provided `-0`', function test( t ) { - var v = sin( -0.0 ); - t.equal( v, -0.0, 'returns expected value' ); +tape( 'the function returns `+0` if provided `+0`', function test( t ) { + var v = sin( 0.0 ); + t.strictEqual( isPositiveZero( v ), true, 'returns expected value' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js index ed0e4ef01053..59bfd91aed5e 100644 --- a/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/sin/test/test.native.js @@ -27,6 +27,8 @@ var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); var EPS = require( '@stdlib/constants/float64/eps' ); var abs = require( '@stdlib/math/base/special/abs' ); +var isNegativeZero = require( '@stdlib/assert/is-negative-zero' ); +var isPositiveZero = require( '@stdlib/assert/is-positive-zero' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -218,14 +220,14 @@ tape( 'the function returns `NaN` if provided `-infinity`', opts, function test( t.end(); }); -tape( 'the function returns `+0` if provided `+0`', opts, function test( t ) { - var v = sin( 0.0 ); - t.equal( v, 0.0, 'returns expected value' ); +tape( 'the function returns `-0` if provided `-0`', opts, function test( t ) { + var v = sin( -0.0 ); + t.strictEqual( isNegativeZero( v ), true, 'returns expected value' ); t.end(); }); -tape( 'the function returns `-0` if provided `-0`', opts, function test( t ) { - var v = sin( -0.0 ); - t.equal( v, -0.0, 'returns expected value' ); +tape( 'the function returns `+0` if provided `+0`', opts, function test( t ) { + var v = sin( 0.0 ); + t.strictEqual( isPositiveZero( v ), true, 'returns expected value' ); t.end(); });