From b93cf7bcaf19697d69203e89c14c036fd071b0cf Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 27 Sep 2026 21:18:08 +0000 Subject: [PATCH] test: migrate `stats/base/snanstdevtk` to ULP-based assertions Replaces the computed EPS/tolerance idiom (`abs( v - expected ) <= tol`) with `isAlmostSameValuef` ULP-difference comparisons in the package's four strided-array test files. Mirrors the approach already used in the sibling `stats/base/snanstdev` package. Ref: #11352 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01WLQVoEVhUdPCfyaqueCuD5 --- 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 --- --- .../stats/base/snanstdevtk/test/test.ndarray.js | 13 +++---------- .../base/snanstdevtk/test/test.ndarray.native.js | 13 +++---------- .../stats/base/snanstdevtk/test/test.snanstdevtk.js | 13 +++---------- .../snanstdevtk/test/test.snanstdevtk.native.js | 13 +++---------- 4 files changed, 12 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.js b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.js index 9dafbfb11a98..8bda8897ec62 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.js @@ -23,10 +23,9 @@ var tape = require( 'tape' ); var floor = require( '@stdlib/math/base/special/floor' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var Float32Array = require( '@stdlib/array/float32' ); var snanstdevtk = require( './../lib/ndarray.js' ); @@ -46,8 +45,6 @@ tape( 'the function has an arity of 5', function test( t ) { tape( 'the function calculates the population standard deviation of a strided array (ignoring `NaN` values)', function test( t ) { var expected; - var delta; - var tol; var x; var v; var i; @@ -56,17 +53,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevtk( x.length, 0, x, 1, 0 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-1) ) ); - 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( [ 1.0, NaN, NaN, -2.0, NaN, -4.0, NaN, 5.0, NaN, 0.0, 3.0, NaN ] ); // eslint-disable-line max-len v = snanstdevtk( x.length, 0, x, 1, 0 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-6) ) ); - 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, NaN ] ); diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.native.js index 0767ae9d1280..89a509df8fdf 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.ndarray.native.js @@ -23,10 +23,9 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var floor = require( '@stdlib/math/base/special/floor' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var Float32Array = require( '@stdlib/array/float32' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -55,8 +54,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 (ignoring `NaN` values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var v; var i; @@ -65,17 +62,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevtk( x.length, 0, x, 1, 0 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-1) ) ); - 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( [ 1.0, NaN, NaN, -2.0, NaN, -4.0, NaN, 5.0, NaN, 0.0, 3.0, NaN ] ); // eslint-disable-line max-len v = snanstdevtk( x.length, 0, x, 1, 0 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-6) ) ); - 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, NaN ] ); diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.js b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.js index ce532e740a7e..56507958645f 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.js @@ -22,10 +22,9 @@ var tape = require( 'tape' ); var floor = require( '@stdlib/math/base/special/floor' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var Float32Array = require( '@stdlib/array/float32' ); var snanstdevtk = require( './../lib/snanstdevtk.js' ); @@ -46,8 +45,6 @@ tape( 'the function has an arity of 4', function test( t ) { tape( 'the function calculates the population standard deviation of a strided array (ignoring `NaN` values)', function test( t ) { var expected; - var delta; - var tol; var x; var v; var i; @@ -56,17 +53,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevtk( x.length, 0, x, 1 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-1) ) ); - 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( [ 1.0, NaN, NaN, -2.0, NaN, -4.0, NaN, 5.0, NaN, 0.0, 3.0, NaN ] ); // eslint-disable-line max-len v = snanstdevtk( x.length, 0, x, 1 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-6) ) ); - 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, NaN ] ); diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.native.js b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.native.js index 064e09550b63..77da84364122 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.native.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevtk/test/test.snanstdevtk.native.js @@ -23,10 +23,9 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var floor = require( '@stdlib/math/base/special/floor' ); -var abs = require( '@stdlib/math/base/special/abs' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); -var EPS = require( '@stdlib/constants/float32/eps' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var Float32Array = require( '@stdlib/array/float32' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -55,8 +54,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 (ignoring `NaN` values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var v; var i; @@ -65,17 +62,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevtk( x.length, 0, x, 1 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-1) ) ); - 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( [ 1.0, NaN, NaN, -2.0, NaN, -4.0, NaN, 5.0, NaN, 0.0, 3.0, NaN ] ); // eslint-disable-line max-len v = snanstdevtk( x.length, 0, x, 1 ); expected = float64ToFloat32( sqrt( 53.5/(x.length-6) ) ); - 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, NaN ] );