From b97f7529ac34be79c4884d5fd178d2f316a4d2b9 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 12 Oct 2026 21:14:11 +0000 Subject: [PATCH 1/2] test: migrate `stats/base/dists/erlang/pdf` 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_01LjXCCBpdm51wAD4HxwLMCy --- .../base/dists/erlang/pdf/test/test.native.js | 39 +++++-------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js index a02bdcf2b76a..81da900dba58 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js @@ -24,10 +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 // @@ -141,13 +140,13 @@ tape( 'if provided `lambda <= 0`, the function returns `NaN`', opts, function te tape( 'the function evaluates the pdf for `x` given large `k` and `lambda`', opts, function test( t ) { var expected; var lambda; - var delta; - var tol; + var ULP; var i; var k; var x; var y; + ULP = 271; expected = bothLarge.expected; x = bothLarge.x; k = bothLarge.k; @@ -155,13 +154,7 @@ tape( 'the function evaluates the pdf for `x` given large `k` and `lambda`', opt for ( i = 0; i < x.length; i++ ) { y = pdf( x[i], k[i], lambda[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', k: '+k[i]+', lambda: '+lambda[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 180.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. k: '+k[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); } t.end(); }); @@ -169,13 +162,13 @@ tape( 'the function evaluates the pdf for `x` given large `k` and `lambda`', opt tape( 'the function evaluates the pdf for `x` given large shape parameter `k`', opts, function test( t ) { var expected; var lambda; - var delta; - var tol; + var ULP; var i; var k; var x; var y; + ULP = 154; expected = largeShape.expected; x = largeShape.x; k = largeShape.k; @@ -183,13 +176,7 @@ tape( 'the function evaluates the pdf for `x` given large shape parameter `k`', for ( i = 0; i < x.length; i++ ) { y = pdf( x[i], k[i], lambda[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', k: '+k[i]+', lambda: '+lambda[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 90.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. k: '+k[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); } t.end(); }); @@ -197,13 +184,13 @@ tape( 'the function evaluates the pdf for `x` given large shape parameter `k`', tape( 'the function evaluates the pdf for `x` given large rate parameter `lambda`', opts, function test( t ) { var expected; var lambda; - var delta; - var tol; + var ULP; var i; var k; var x; var y; + ULP = 146; expected = largeRate.expected; x = largeRate.x; k = largeRate.k; @@ -211,13 +198,7 @@ tape( 'the function evaluates the pdf for `x` given large rate parameter `lambda for ( i = 0; i < x.length; i++ ) { y = pdf( x[i], k[i], lambda[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', k: '+k[i]+', lambda: '+lambda[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = abs( y - expected[ i ] ); - tol = 100.0 * EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[ i ]+'. k: '+k[i]+'. lambda: '+lambda[i]+'. y: '+y+'. E: '+expected[ i ]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); } t.end(); }); From 41452e66bdfef29bf5d0581b8b76bbede91a046e Mon Sep 17 00:00:00 2001 From: Athan Date: Tue, 13 Oct 2026 12:37:50 +0200 Subject: [PATCH 2/2] test: inline ULP values Signed-off-by: Athan --- .../stats/base/dists/erlang/pdf/test/test.native.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js index 81da900dba58..436fb3f5f400 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/erlang/pdf/test/test.native.js @@ -140,13 +140,11 @@ tape( 'if provided `lambda <= 0`, the function returns `NaN`', opts, function te tape( 'the function evaluates the pdf for `x` given large `k` and `lambda`', opts, function test( t ) { var expected; var lambda; - var ULP; var i; var k; var x; var y; - ULP = 271; expected = bothLarge.expected; x = bothLarge.x; k = bothLarge.k; @@ -154,7 +152,7 @@ tape( 'the function evaluates the pdf for `x` given large `k` and `lambda`', opt for ( i = 0; i < x.length; i++ ) { y = pdf( x[i], k[i], lambda[i] ); - t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); + t.strictEqual( isAlmostSameValue( y, expected[ i ], 271 ), true, 'returns expected value' ); } t.end(); }); @@ -162,13 +160,11 @@ tape( 'the function evaluates the pdf for `x` given large `k` and `lambda`', opt tape( 'the function evaluates the pdf for `x` given large shape parameter `k`', opts, function test( t ) { var expected; var lambda; - var ULP; var i; var k; var x; var y; - ULP = 154; expected = largeShape.expected; x = largeShape.x; k = largeShape.k; @@ -176,7 +172,7 @@ tape( 'the function evaluates the pdf for `x` given large shape parameter `k`', for ( i = 0; i < x.length; i++ ) { y = pdf( x[i], k[i], lambda[i] ); - t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); + t.strictEqual( isAlmostSameValue( y, expected[ i ], 154 ), true, 'returns expected value' ); } t.end(); }); @@ -184,13 +180,11 @@ tape( 'the function evaluates the pdf for `x` given large shape parameter `k`', tape( 'the function evaluates the pdf for `x` given large rate parameter `lambda`', opts, function test( t ) { var expected; var lambda; - var ULP; var i; var k; var x; var y; - ULP = 146; expected = largeRate.expected; x = largeRate.x; k = largeRate.k; @@ -198,7 +192,7 @@ tape( 'the function evaluates the pdf for `x` given large rate parameter `lambda for ( i = 0; i < x.length; i++ ) { y = pdf( x[i], k[i], lambda[i] ); - t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); + t.strictEqual( isAlmostSameValue( y, expected[ i ], 146 ), true, 'returns expected value' ); } t.end(); });