From 554dbc2996e9d50cfb9c08d6a399dbbd8c132bdb Mon Sep 17 00:00:00 2001 From: Aryan Kumar Date: Wed, 2 Sep 2026 14:51:26 -0700 Subject: [PATCH 1/2] test: migrate stats/base/dists/weibull/quantile to ULP-based assertions --- .../weibull/quantile/test/test.factory.js | 33 ++------------- .../weibull/quantile/test/test.native.js | 41 ++----------------- .../weibull/quantile/test/test.quantile.js | 33 ++------------- 3 files changed, 12 insertions(+), 95 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.factory.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.factory.js index 764f9bdc8a47..3303548527be 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.factory.js @@ -22,10 +22,9 @@ var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); 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' ); @@ -169,8 +168,6 @@ tape( 'the created function evaluates the quantile for `p` given large `lambda` var expected; var quantile; var lambda; - var delta; - var tol; var i; var k; var p; @@ -183,13 +180,7 @@ tape( 'the created function evaluates the quantile for `p` given large `lambda` for ( i = 0; i < p.length; i++ ) { quantile = factory( k[i], lambda[i] ); y = quantile( p[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'p: '+p[i]+', lambda: '+lambda[i]+', k: '+k[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 1.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: '+p[ i ]+'. lambda: '+lambda[i]+'. k: '+k[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 0 ), true, 'returns expected value' ); } t.end(); }); @@ -198,8 +189,6 @@ tape( 'the created function evaluates the quantile for `p` given large shape par var expected; var quantile; var lambda; - var delta; - var tol; var i; var k; var p; @@ -212,13 +201,7 @@ tape( 'the created function evaluates the quantile for `p` given large shape par for ( i = 0; i < p.length; i++ ) { quantile = factory( k[i], lambda[i] ); y = quantile( p[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'p: '+p[i]+', lambda: '+lambda[i]+', k: '+k[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 1.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: '+p[ i ]+'. lambda: '+lambda[i]+'. k: '+k[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); @@ -227,8 +210,6 @@ tape( 'the created function evaluates the quantile for `p` given large scale par var expected; var quantile; var lambda; - var delta; - var tol; var i; var k; var p; @@ -241,13 +222,7 @@ tape( 'the created function evaluates the quantile for `p` given large scale par for ( i = 0; i < p.length; i++ ) { quantile = factory( k[i], lambda[i] ); y = quantile( p[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'p: '+p[i]+', lambda: '+lambda[i]+', k: '+k[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 5.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: '+p[ i ]+'. lambda: '+lambda[i]+'. k: '+k[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 6 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js index 01979a730a2d..5c4c65e4c904 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js @@ -24,11 +24,9 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var tryRequire = require( '@stdlib/utils/try-require' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var EPS = require( '@stdlib/constants/float64/eps' ); - // FIXTURES // @@ -96,8 +94,6 @@ tape( 'if provided `k <= 0` or `lambda <= 0`, the function returns `NaN`', opts, tape( 'the function evaluates the quantile for `p` given large `k` and `lambda`', opts, function test( t ) { var expected; var lambda; - var delta; - var tol; var p; var k; var y; @@ -109,13 +105,7 @@ tape( 'the function evaluates the quantile for `p` given large `k` and `lambda`' lambda = bothLarge.lambda; for ( i = 0; i < p.length; i++ ) { y = quantile( p[ i ], k[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'p: ' + p[ i ] + ', k: ' + k[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 2.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: ' + p[ i ] + '. k: ' + k[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 0 ), true, 'returns expected value' ); } t.end(); }); @@ -123,8 +113,6 @@ tape( 'the function evaluates the quantile for `p` given large `k` and `lambda`' tape( 'the function evaluates the quantile for `p` given large `lambda`', opts, function test( t ) { var expected; var lambda; - var delta; - var tol; var p; var k; var y; @@ -136,20 +124,7 @@ tape( 'the function evaluates the quantile for `p` given large `lambda`', opts, lambda = largeScale.lambda; for ( i = 0; i < p.length; i++ ) { y = quantile( p[ i ], k[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'p: ' + p[ i ] + ', k: ' + k[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] ); - } else { - delta = abs( y - expected[ i ] ); - if ( k[ i ] > 4.0 || - lambda[ i ] > 4.0 || - p[ i ] < 0.01 || - p[ i ] > 0.99 ) { - tol = 8.0 * EPS * abs( expected[ i ] ); // Increase the tolerance factor for extreme values - } else { - tol = 2.0 * EPS * abs( expected[ i ] ); - } - t.ok( delta <= tol, 'within tolerance. p: ' + p[ i ] + '. k: ' + k[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 6 ), true, 'returns expected value' ); } t.end(); }); @@ -157,8 +132,6 @@ tape( 'the function evaluates the quantile for `p` given large `lambda`', opts, tape( 'the function evaluates the quantile for `p` given large `k`', opts, function test( t ) { var expected; var lambda; - var delta; - var tol; var p; var k; var y; @@ -170,13 +143,7 @@ tape( 'the function evaluates the quantile for `p` given large `k`', opts, funct lambda = largeShape.lambda; for ( i = 0; i < p.length; i++ ) { y = quantile( p[ i ], k[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'p: ' + p[ i ] + ', k: ' + k[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 2.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: ' + p[ i ] + '. k: ' + k[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.quantile.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.quantile.js index 307611f13e46..3a5ac73bc503 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.quantile.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.quantile.js @@ -22,10 +22,9 @@ var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); 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' ); @@ -119,8 +118,6 @@ tape( 'if provided a nonpositive `lambda`, the function returns `NaN`', function tape( 'the function evaluates the p-th quantile given large parameters `lambda` and `k`', function test( t ) { var expected; var lambda; - var delta; - var tol; var p; var k; var y; @@ -132,13 +129,7 @@ tape( 'the function evaluates the p-th quantile given large parameters `lambda` k = bothLarge.k; for ( i = 0; i < p.length; i++ ) { y = quantile( p[i], k[i], lambda[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'p: '+p[i]+', k: '+k[i]+', lambda: '+lambda[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 1.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: '+p[ i ]+'. k: '+k[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 0 ), true, 'returns expected value' ); } t.end(); }); @@ -146,8 +137,6 @@ tape( 'the function evaluates the p-th quantile given large parameters `lambda` tape( 'the function evaluates the p-th quantile given large shape parameter `lambda`', function test( t ) { var expected; var lambda; - var delta; - var tol; var p; var k; var y; @@ -159,13 +148,7 @@ tape( 'the function evaluates the p-th quantile given large shape parameter `lam k = largeShape.k; for ( i = 0; i < p.length; i++ ) { y = quantile( p[i], k[i], lambda[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'p: '+p[i]+', k: '+k[i]+', lambda: '+lambda[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 1.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: '+p[ i ]+'. k: '+k[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); @@ -173,8 +156,6 @@ tape( 'the function evaluates the p-th quantile given large shape parameter `lam tape( 'the function evaluates the p-th quantile given large scale parameter `k`', function test( t ) { var expected; var lambda; - var delta; - var tol; var p; var k; var y; @@ -186,13 +167,7 @@ tape( 'the function evaluates the p-th quantile given large scale parameter `k`' k = largeScale.k; for ( i = 0; i < p.length; i++ ) { y = quantile( p[i], k[i], lambda[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'p: '+p[i]+', k: '+k[i]+', lambda: '+lambda[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 5.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. p: '+p[ i ]+'. k: '+k[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 6 ), true, 'returns expected value' ); } t.end(); }); From 37076768dcf13d5fcfb54f3e36c517b14393ab59 Mon Sep 17 00:00:00 2001 From: Aryan Kumar Date: Wed, 2 Sep 2026 15:01:47 -0700 Subject: [PATCH 2/2] fix: one additional empty line stdlib/section-header-empty-lines --- .../stats/base/dists/weibull/quantile/test/test.native.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js index 5c4c65e4c904..fbc3bc109685 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/weibull/quantile/test/test.native.js @@ -28,6 +28,7 @@ var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); + // FIXTURES // var bothLarge = require( './fixtures/julia/both_large.json' );