From bd17eb6c99662f3cc0e6b7a2473e036e4ec6bc72 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 16 Oct 2026 22:26:23 +0000 Subject: [PATCH] test: migrate `blas/base/zscal` to ULP-based assertions Ref: https://github.com/stdlib-js/stdlib/issues/11352 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01JWk616aRCqjJE8a6APAnsC --- 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: skipped - task: lint_markdown_pkg_readmes status: na - task: lint_markdown_docs status: na - 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: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../blas/base/zscal/test/test.ndarray.js | 27 +++++++------------ .../base/zscal/test/test.ndarray.native.js | 27 +++++++------------ .../blas/base/zscal/test/test.zscal.js | 25 ++++++----------- .../blas/base/zscal/test/test.zscal.native.js | 25 ++++++----------- 4 files changed, 34 insertions(+), 70 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.js index 3ac91f3eda2a..64107b7cabf0 100644 --- a/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.js @@ -24,8 +24,7 @@ var tape = require( 'tape' ); var Complex128Array = require( '@stdlib/array/complex128' ); var Complex128 = require( '@stdlib/complex/float64/ctor' ); var Float64Array = require( '@stdlib/array/float64' ); -var EPS = require( '@stdlib/constants/float64/eps' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var zscal = require( './../lib/ndarray.js' ); @@ -38,22 +37,14 @@ var zscal = require( './../lib/ndarray.js' ); * @param {Object} t - test object * @param {Collection} actual - actual values * @param {Collection} expected - expected values -* @param {number} rtol - relative tolerance +* @param {NonNegativeInteger} ulp - maximum allowed ULP difference */ -function isApprox( t, actual, expected, rtol ) { - var delta; - var tol; +function isApprox( t, actual, expected, ulp ) { var i; t.strictEqual( actual.length, expected.length, 'returns expected value' ); for ( i = 0; i < expected.length; i++ ) { - if ( actual[ i ] === expected[ i ] ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } else { - delta = abs( actual[ i ] - expected[ i ] ); - tol = rtol * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. actual: '+actual[ i ]+'. expected: '+expected[ i ]+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( actual[ i ], expected[ i ], ulp ), true, 'returns expected value' ); } } @@ -111,7 +102,7 @@ tape( 'the function scales elements from `x` by `alpha`', function test( t ) { 3.0 ]); - isApprox( t, viewX, expected, 1.0 ); + isApprox( t, viewX, expected, 1 ); t.end(); }); @@ -155,7 +146,7 @@ tape( 'the function supports a `x` stride', function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -199,7 +190,7 @@ tape( 'the function supports a negative `x` stride', function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -243,7 +234,7 @@ tape( 'the function supports a `x` offset', function test( t ) { -4.1 // 3 ]); - isApprox( t, viewX, expected, 8.0 ); + isApprox( t, viewX, expected, 10 ); t.end(); }); @@ -326,6 +317,6 @@ tape( 'the function supports complex access patterns', function test( t ) { -0.2 // 2 ]); - isApprox( t, viewX, expected, 10.0 ); + isApprox( t, viewX, expected, 10 ); t.end(); }); diff --git a/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.native.js index 78a041e2d7ce..2ce98284cc48 100644 --- a/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/base/zscal/test/test.ndarray.native.js @@ -25,8 +25,7 @@ var tape = require( 'tape' ); var Complex128Array = require( '@stdlib/array/complex128' ); var Complex128 = require( '@stdlib/complex/float64/ctor' ); var Float64Array = require( '@stdlib/array/float64' ); -var EPS = require( '@stdlib/constants/float64/eps' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -47,22 +46,14 @@ var opts = { * @param {Object} t - test object * @param {Collection} actual - actual values * @param {Collection} expected - expected values -* @param {number} rtol - relative tolerance +* @param {NonNegativeInteger} ulp - maximum allowed ULP difference */ -function isApprox( t, actual, expected, rtol ) { - var delta; - var tol; +function isApprox( t, actual, expected, ulp ) { var i; t.strictEqual( actual.length, expected.length, 'returns expected value' ); for ( i = 0; i < expected.length; i++ ) { - if ( actual[ i ] === expected[ i ] ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } else { - delta = abs( actual[ i ] - expected[ i ] ); - tol = rtol * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. actual: '+actual[ i ]+'. expected: '+expected[ i ]+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( actual[ i ], expected[ i ], ulp ), true, 'returns expected value' ); } } @@ -120,7 +111,7 @@ tape( 'the function scales elements from `x` by `alpha`', opts, function test( t 3.0 ]); - isApprox( t, viewX, expected, 1.0 ); + isApprox( t, viewX, expected, 1 ); t.end(); }); @@ -164,7 +155,7 @@ tape( 'the function supports a `x` stride', opts, function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -208,7 +199,7 @@ tape( 'the function supports a negative `x` stride', opts, function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -252,7 +243,7 @@ tape( 'the function supports a `x` offset', opts, function test( t ) { -4.1 // 3 ]); - isApprox( t, viewX, expected, 8.0 ); + isApprox( t, viewX, expected, 10 ); t.end(); }); @@ -335,6 +326,6 @@ tape( 'the function supports complex access patterns', opts, function test( t ) -0.2 // 2 ]); - isApprox( t, viewX, expected, 10.0 ); + isApprox( t, viewX, expected, 10 ); t.end(); }); diff --git a/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.js b/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.js index da2df09846d6..c80333042958 100644 --- a/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.js +++ b/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.js @@ -24,8 +24,7 @@ var tape = require( 'tape' ); var Complex128Array = require( '@stdlib/array/complex128' ); var Complex128 = require( '@stdlib/complex/float64/ctor' ); var Float64Array = require( '@stdlib/array/float64' ); -var EPS = require( '@stdlib/constants/float64/eps' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var zscal = require( './../lib/zscal.js' ); @@ -38,22 +37,14 @@ var zscal = require( './../lib/zscal.js' ); * @param {Object} t - test object * @param {Collection} actual - actual values * @param {Collection} expected - expected values -* @param {number} rtol - relative tolerance +* @param {NonNegativeInteger} ulp - maximum allowed ULP difference */ -function isApprox( t, actual, expected, rtol ) { - var delta; - var tol; +function isApprox( t, actual, expected, ulp ) { var i; t.strictEqual( actual.length, expected.length, 'returns expected value' ); for ( i = 0; i < expected.length; i++ ) { - if ( actual[ i ] === expected[ i ] ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } else { - delta = abs( actual[ i ] - expected[ i ] ); - tol = rtol * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. actual: '+actual[ i ]+'. expected: '+expected[ i ]+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( actual[ i ], expected[ i ], ulp ), true, 'returns expected value' ); } } @@ -103,7 +94,7 @@ tape( 'the function scales elements from `x` by `alpha`', function test( t ) { 0.08 // 4 ]); - isApprox( t, viewX, expected, 1.0 ); + isApprox( t, viewX, expected, 1 ); t.end(); }); @@ -147,7 +138,7 @@ tape( 'the function supports a `x` stride', function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -191,7 +182,7 @@ tape( 'the function supports a negative `x` stride', function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -271,6 +262,6 @@ tape( 'the function supports view offsets', function test( t ) { 3.0 ]); - isApprox( t, viewX, expected, 1.0 ); + isApprox( t, viewX, expected, 2 ); t.end(); }); diff --git a/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.native.js b/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.native.js index fb6ef40b6ab9..dde4a90a3512 100644 --- a/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.native.js +++ b/lib/node_modules/@stdlib/blas/base/zscal/test/test.zscal.native.js @@ -25,8 +25,7 @@ var tape = require( 'tape' ); var Complex128Array = require( '@stdlib/array/complex128' ); var Complex128 = require( '@stdlib/complex/float64/ctor' ); var Float64Array = require( '@stdlib/array/float64' ); -var EPS = require( '@stdlib/constants/float64/eps' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -47,22 +46,14 @@ var opts = { * @param {Object} t - test object * @param {Collection} actual - actual values * @param {Collection} expected - expected values -* @param {number} rtol - relative tolerance +* @param {NonNegativeInteger} ulp - maximum allowed ULP difference */ -function isApprox( t, actual, expected, rtol ) { - var delta; - var tol; +function isApprox( t, actual, expected, ulp ) { var i; t.strictEqual( actual.length, expected.length, 'returns expected value' ); for ( i = 0; i < expected.length; i++ ) { - if ( actual[ i ] === expected[ i ] ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } else { - delta = abs( actual[ i ] - expected[ i ] ); - tol = rtol * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. actual: '+actual[ i ]+'. expected: '+expected[ i ]+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( actual[ i ], expected[ i ], ulp ), true, 'returns expected value' ); } } @@ -112,7 +103,7 @@ tape( 'the function scales elements from `x` by `alpha`', opts, function test( t 0.08 // 4 ]); - isApprox( t, viewX, expected, 1.0 ); + isApprox( t, viewX, expected, 1 ); t.end(); }); @@ -156,7 +147,7 @@ tape( 'the function supports a `x` stride', opts, function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -200,7 +191,7 @@ tape( 'the function supports a negative `x` stride', opts, function test( t ) { 2.0 ]); - isApprox( t, viewX, expected, 5.0 ); + isApprox( t, viewX, expected, 4 ); t.end(); }); @@ -280,6 +271,6 @@ tape( 'the function supports view offsets', opts, function test( t ) { 3.0 ]); - isApprox( t, viewX, expected, 1.0 ); + isApprox( t, viewX, expected, 2 ); t.end(); });