From bb070b3d5435ee3acf1d1b5e4f3c9defed99bc19 Mon Sep 17 00:00:00 2001 From: Athan Reines Date: Sun, 4 Oct 2026 18:25:06 +0000 Subject: [PATCH] test: migrate `stats/strided/sstdevtk` to ULP-based assertions Replaces relative tolerance assertions with ULP difference assertions via `@stdlib/number/float32/base/assert/is-almost-same-value`. The measured ULP difference is `1` for both the JavaScript and C implementations, so assertions use a bound of `1` ULP. Ref: https://github.com/stdlib-js/stdlib/issues/11352 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01KxF75yiDdfVHBFJAQ4kd5R --- 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 --- --- .../@stdlib/stats/strided/sstdevtk/test/test.ndarray.js | 9 ++------- .../stats/strided/sstdevtk/test/test.ndarray.native.js | 9 ++------- .../@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.js | 9 ++------- .../stats/strided/sstdevtk/test/test.sstdevtk.native.js | 9 ++------- 4 files changed, 8 insertions(+), 28 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.js b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.js index 525b1541db08..d9764e291d37 100644 --- a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.js @@ -22,11 +22,10 @@ var tape = require( 'tape' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); var Float32Array = require( '@stdlib/array/float32' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var sstdevtk = require( './../lib/ndarray.js' ); @@ -45,8 +44,6 @@ tape( 'the function has an arity of 5', function test( t ) { tape( 'the function calculates the population standard deviation of a strided array', function test( t ) { var expected; - var delta; - var tol; var x; var v; @@ -54,9 +51,7 @@ tape( 'the function calculates the population standard deviation of a strided ar v = sstdevtk( x.length, 0, x, 1, 0 ); expected = float64ToFloat32( sqrt( 53.5/x.length ) ); - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'within tolerance. Actual: '+v+'. E: '+expected+'. tol: '+tol+'. Δ: '+delta+'.' ); + t.strictEqual( isAlmostSameValuef( v, expected, 1 ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, -4.0 ] ); v = sstdevtk( x.length, 0, x, 1, 0 ); diff --git a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.native.js b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.native.js index 917cbb81a727..dcfe51a1e6b9 100644 --- a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.ndarray.native.js @@ -23,11 +23,10 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); var Float32Array = require( '@stdlib/array/float32' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -54,8 +53,6 @@ tape( 'the function has an arity of 5', opts, function test( t ) { tape( 'the function calculates the population standard deviation of a strided array', opts, function test( t ) { var expected; - var delta; - var tol; var x; var v; @@ -63,9 +60,7 @@ tape( 'the function calculates the population standard deviation of a strided ar v = sstdevtk( x.length, 0, x, 1, 0 ); expected = float64ToFloat32( sqrt( 53.5/x.length ) ); - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'within tolerance. Actual: '+v+'. E: '+expected+'. tol: '+tol+'. Δ: '+delta+'.' ); + t.strictEqual( isAlmostSameValuef( v, expected, 1 ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, -4.0 ] ); v = sstdevtk( x.length, 0, x, 1, 0 ); diff --git a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.js b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.js index 7e5192e11387..68dc834e7396 100644 --- a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.js +++ b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.js @@ -22,11 +22,10 @@ var tape = require( 'tape' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); var Float32Array = require( '@stdlib/array/float32' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var sstdevtk = require( './../lib/sstdevtk.js' ); @@ -45,8 +44,6 @@ tape( 'the function has an arity of 4', function test( t ) { tape( 'the function calculates the population standard deviation of a strided array', function test( t ) { var expected; - var delta; - var tol; var x; var v; @@ -54,9 +51,7 @@ tape( 'the function calculates the population standard deviation of a strided ar v = sstdevtk( x.length, 0, x, 1 ); expected = float64ToFloat32( sqrt( 53.5/x.length ) ); - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'within tolerance. Actual: '+v+'. E: '+expected+'. tol: '+tol+'. Δ: '+delta+'.' ); + t.strictEqual( isAlmostSameValuef( v, expected, 1 ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, -4.0 ] ); v = sstdevtk( x.length, 0, x, 1 ); diff --git a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.native.js b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.native.js index 2aed3408d827..ffc95f950488 100644 --- a/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.native.js +++ b/lib/node_modules/@stdlib/stats/strided/sstdevtk/test/test.sstdevtk.native.js @@ -23,11 +23,10 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); var Float32Array = require( '@stdlib/array/float32' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -54,8 +53,6 @@ tape( 'the function has an arity of 4', opts, function test( t ) { tape( 'the function calculates the population standard deviation of a strided array', opts, function test( t ) { var expected; - var delta; - var tol; var x; var v; @@ -63,9 +60,7 @@ tape( 'the function calculates the population standard deviation of a strided ar v = sstdevtk( x.length, 0, x, 1 ); expected = float64ToFloat32( sqrt( 53.5/x.length ) ); - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'within tolerance. Actual: '+v+'. E: '+expected+'. tol: '+tol+'. Δ: '+delta+'.' ); + t.strictEqual( isAlmostSameValuef( v, expected, 1 ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, -4.0 ] ); v = sstdevtk( x.length, 0, x, 1 );