From daab20d89d91cf8a17c12e28fc0bda475a7a1c5c Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 11 Oct 2026 21:11:14 +0000 Subject: [PATCH] test: migrate `stats/base/snanstdevch` to ULP-based assertions Ref: https://github.com/stdlib-js/stdlib/issues/11352 Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01AtqS3EoAjWia2i1d1JYGDD --- .../base/snanstdevch/test/test.ndarray.js | 18 ++++++++---------- .../snanstdevch/test/test.ndarray.native.js | 14 ++++---------- .../base/snanstdevch/test/test.snanstdevch.js | 18 ++++++++---------- .../test/test.snanstdevch.native.js | 14 ++++---------- 4 files changed, 24 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.js b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.js index d2b5c28f1486..2add06aad40d 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.js @@ -23,14 +23,18 @@ 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 Float32Array = require( '@stdlib/array/float32' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var snanstdevch = require( './../lib/ndarray.js' ); +// VARIABLES // + +var ULP = 1; + + // TESTS // tape( 'main export is a function', function test( t ) { @@ -46,8 +50,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 +58,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevch( 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, ULP ), 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 = snanstdevch( 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, ULP ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, NaN ] ); diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.native.js index caa0ac5f5fca..57064c2b92da 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.ndarray.native.js @@ -23,17 +23,17 @@ 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 sqrt = require( '@stdlib/math/base/special/sqrt' ); 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' ); // VARIABLES // +var ULP = 1; var snanstdevch = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( snanstdevch instanceof Error ) @@ -55,8 +55,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 +63,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevch( 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, ULP ), 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 = snanstdevch( 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, ULP ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, NaN ] ); diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.js b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.js index f1175c82e730..555edb7146b8 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.js @@ -22,15 +22,19 @@ 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 sqrt = require( '@stdlib/math/base/special/sqrt' ); var Float32Array = require( '@stdlib/array/float32' ); +var isAlmostSameValuef = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var snanstdevch = require( './../lib/snanstdevch.js' ); +// VARIABLES // + +var ULP = 1; + + // TESTS // tape( 'main export is a function', function test( t ) { @@ -46,8 +50,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 +58,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevch( 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, ULP ), 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 = snanstdevch( 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, ULP ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, NaN ] ); diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.native.js b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.native.js index c0b55f119ebd..8b9c529db227 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.native.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevch/test/test.snanstdevch.native.js @@ -23,17 +23,17 @@ 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 sqrt = require( '@stdlib/math/base/special/sqrt' ); 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' ); // VARIABLES // +var ULP = 1; var snanstdevch = tryRequire( resolve( __dirname, './../lib/snanstdevch.native.js' ) ); var opts = { 'skip': ( snanstdevch instanceof Error ) @@ -55,8 +55,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 +63,13 @@ tape( 'the function calculates the population standard deviation of a strided ar v = snanstdevch( 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, ULP ), 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 = snanstdevch( 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, ULP ), true, 'returns expected value' ); x = new Float32Array( [ -4.0, NaN ] );