From ea236363b30914045783baab42224111f92a7ea4 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 8 Sep 2026 10:19:10 +0000 Subject: [PATCH] test: migrate `stats/base/dists/normal/quantile` to ULP-based assertions Replace computed relative tolerance assertions with `isAlmostSameValue` ULP comparisons in the fixture loops of `test.quantile.js`, `test.factory.js`, and `test.native.js`. The maximum observed ULP difference over the full 1000-point R fixture is 1024 for the main, factory, and native implementations alike, so all three files use a bound of 1024 ULP, which is the minimum bound which passes. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01D1uMqViBMp6d36XsPu1bQR --- .../base/dists/normal/quantile/test/test.factory.js | 13 ++----------- .../base/dists/normal/quantile/test/test.native.js | 13 ++----------- .../dists/normal/quantile/test/test.quantile.js | 13 ++----------- 3 files changed, 6 insertions(+), 33 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.factory.js b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.factory.js index d2e51d789548..2f7d1c9f36cc 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.factory.js @@ -21,11 +21,10 @@ // MODULES // var tape = require( 'tape' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var abs = require( '@stdlib/math/base/special/abs' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var factory = require( './../lib/factory.js' ); @@ -153,9 +152,7 @@ tape( 'if `sigma` equals `0`, the created function evaluates a degenerate distri tape( 'the created function evaluates the quantile for `x` given parameters `mu` and `sigma`', function test( t ) { var expected; var quantile; - var delta; var sigma; - var tol; var mu; var x; var y; @@ -168,13 +165,7 @@ tape( 'the created function evaluates the quantile for `x` given parameters `mu` for ( i = 0; i < x.length; i++ ) { quantile = factory( mu[i], sigma[i] ); y = quantile( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', mu:'+mu[i]+', sigma: '+sigma[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 2100.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. mu: '+mu[i]+'. sigma: '+sigma[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1024 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.native.js index 14b4e3dbfb2b..dcfdfeffe82e 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.native.js @@ -22,11 +22,10 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var abs = require( '@stdlib/math/base/special/abs' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -122,9 +121,7 @@ tape( 'if provided `sigma` equals `0`, the function evaluates a degenerate distr tape( 'the function evaluates the quantile for `x` given parameters `mu` and `sigma`', opts, function test( t ) { var expected; - var delta; var sigma; - var tol; var mu; var x; var y; @@ -136,13 +133,7 @@ tape( 'the function evaluates the quantile for `x` given parameters `mu` and `si sigma = data.sigma; for ( i = 0; i < x.length; i++ ) { y = quantile( x[i], mu[i], sigma[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', mu:'+mu[i]+', sigma: '+sigma[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 2100.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. mu: '+mu[i]+'. sigma: '+sigma[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1024 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.quantile.js b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.quantile.js index 3dd2dcde0342..28eac26d5a9f 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.quantile.js +++ b/lib/node_modules/@stdlib/stats/base/dists/normal/quantile/test/test.quantile.js @@ -21,11 +21,10 @@ // MODULES // var tape = require( 'tape' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var abs = require( '@stdlib/math/base/special/abs' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var quantile = require( './../lib' ); @@ -113,9 +112,7 @@ tape( 'if provided `sigma` equals `0`, the function evaluates a degenerate distr tape( 'the function evaluates the quantile for `x` given parameters `mu` and `sigma`', function test( t ) { var expected; - var delta; var sigma; - var tol; var mu; var x; var y; @@ -127,13 +124,7 @@ tape( 'the function evaluates the quantile for `x` given parameters `mu` and `si sigma = data.sigma; for ( i = 0; i < x.length; i++ ) { y = quantile( x[i], mu[i], sigma[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', mu:'+mu[i]+', sigma: '+sigma[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 2100.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. mu: '+mu[i]+'. sigma: '+sigma[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1024 ), true, 'returns expected value' ); } t.end(); });