From 23899aff4264006a8e57aa9c23e6fe54874fb54c Mon Sep 17 00:00:00 2001 From: Athan Date: Thu, 8 Oct 2026 14:29:36 +0000 Subject: [PATCH] test: migrate `stats/base/snanstdevyc` to ULP-based assertions Replaces relative tolerance assertions with ULP-based assertions using `@stdlib/number/float32/base/assert/is-almost-same-value`, mirroring the already migrated `stats/base/snanstdevpn` and `stats/base/snanstdevwd` packages. The ULP bound was tightened to the measured minimum of `1`. Ref: https://github.com/stdlib-js/stdlib/issues/11352 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01KEjj6wCAAtneuEjf7cRxy9 --- .../stats/base/snanstdevyc/test/test.ndarray.js | 13 +++---------- .../base/snanstdevyc/test/test.ndarray.native.js | 13 +++---------- .../stats/base/snanstdevyc/test/test.snanstdevyc.js | 13 +++---------- .../snanstdevyc/test/test.snanstdevyc.native.js | 13 +++---------- 4 files changed, 12 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.ndarray.js b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.ndarray.js index 42a76da8b19f..ee12ea402fec 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.ndarray.js @@ -23,11 +23,10 @@ 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 snanstdevyc = 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 = snanstdevyc( 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 = snanstdevyc( 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/snanstdevyc/test/test.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.ndarray.native.js index 7d6407592715..65bcb73ea764 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.ndarray.native.js @@ -23,12 +23,11 @@ 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' ); @@ -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 = snanstdevyc( 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 = snanstdevyc( 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/snanstdevyc/test/test.snanstdevyc.js b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.snanstdevyc.js index 595e14a8b2a1..54bae477f4e5 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.snanstdevyc.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.snanstdevyc.js @@ -22,12 +22,11 @@ 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 snanstdevyc = require( './../lib/snanstdevyc.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 = snanstdevyc( 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 = snanstdevyc( 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/snanstdevyc/test/test.snanstdevyc.native.js b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.snanstdevyc.native.js index 74ce2afb767a..0d8f60a36400 100644 --- a/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.snanstdevyc.native.js +++ b/lib/node_modules/@stdlib/stats/base/snanstdevyc/test/test.snanstdevyc.native.js @@ -23,12 +23,11 @@ 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' ); @@ -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 = snanstdevyc( 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 = snanstdevyc( 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 ] );