From 2d3b6c58c92b0e047b4212edf84cc819bbfc36d7 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 21 Aug 2026 22:18:34 +0000 Subject: [PATCH] test: migrate `stats/base/dists/poisson/mgf` to ULP-based assertions Replaces the relative-tolerance assertions in the `stats/base/dists/poisson/mgf` test files with ULP-based assertions using `@stdlib/assert/is-almost-same-value`. The measured maximum ULP difference over the full Julia fixture set is 0, so the assertions use a bound of 0 ULP. Ref: https://github.com/stdlib-js/stdlib/issues/11352 Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01WqLxC1CYmvaZzPBjqzzu6o --- .../dists/poisson/mgf/test/test.factory.js | 33 +++---------------- .../base/dists/poisson/mgf/test/test.mgf.js | 33 +++---------------- .../dists/poisson/mgf/test/test.native.js | 33 +++---------------- 3 files changed, 12 insertions(+), 87 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.factory.js b/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.factory.js index 78efb1fcdd57..9cf6695d7aac 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.factory.js +++ b/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.factory.js @@ -21,9 +21,8 @@ // 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 EPS = require( '@stdlib/constants/float64/eps' ); var factory = require( './../lib/factory.js' ); @@ -89,9 +88,7 @@ tape( 'if provided a nonpositive `lambda`, the created function always returns ` tape( 'the created function evaluates the mgf for `x` given small `lambda` values', function test( t ) { var expected; var lambda; - var delta; var mgf; - var tol; var x; var y; var i; @@ -102,13 +99,7 @@ tape( 'the created function evaluates the mgf for `x` given small `lambda` value for ( i = 0; i < x.length; i++ ) { mgf = factory( lambda[i] ); y = mgf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 0 ), true, 'returns expected value' ); } t.end(); }); @@ -116,9 +107,7 @@ tape( 'the created function evaluates the mgf for `x` given small `lambda` value tape( 'the created function evaluates the mgf for `x` given medium `lambda` values', function test( t ) { var expected; var lambda; - var delta; var mgf; - var tol; var x; var y; var i; @@ -129,13 +118,7 @@ tape( 'the created function evaluates the mgf for `x` given medium `lambda` valu for ( i = 0; i < x.length; i++ ) { mgf = factory( lambda[i] ); y = mgf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 0 ), true, 'returns expected value' ); } t.end(); }); @@ -143,9 +126,7 @@ tape( 'the created function evaluates the mgf for `x` given medium `lambda` valu tape( 'the created function evaluates the mgf for `x` given large `lambda` values', function test( t ) { var expected; var lambda; - var delta; var mgf; - var tol; var x; var y; var i; @@ -156,13 +137,7 @@ tape( 'the created function evaluates the mgf for `x` given large `lambda` value for ( i = 0; i < x.length; i++ ) { mgf = factory( lambda[i] ); y = mgf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 0 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.mgf.js b/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.mgf.js index a0a650414b95..319adaf41963 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.mgf.js +++ b/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.mgf.js @@ -21,12 +21,11 @@ // 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 exp = require( '@stdlib/math/base/special/exp' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var mgf = require( './../lib' ); @@ -81,8 +80,6 @@ tape( 'the function evaluates the mgf for `t` given a small `lambda`', function var expected; var lambda; var values; - var delta; - var tol; var y; var i; @@ -91,13 +88,7 @@ tape( 'the function evaluates the mgf for `t` given a small `lambda`', function lambda = small.lambda; for ( i = 0; i < values.length; i++ ) { y = mgf( values[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 't: ' + values[ 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. t: ' + values[ 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(); }); @@ -106,8 +97,6 @@ tape( 'the function evaluates the mgf for `t` given a medium `lambda`', function var expected; var lambda; var values; - var delta; - var tol; var y; var i; @@ -116,13 +105,7 @@ tape( 'the function evaluates the mgf for `t` given a medium `lambda`', function lambda = medium.lambda; for ( i = 0; i < values.length; i++ ) { y = mgf( values[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 't: ' + values[ 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. t: ' + values[ 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(); }); @@ -131,8 +114,6 @@ tape( 'the function evaluates the mgf for `t` given a large range `lambda`', fun var expected; var values; var lambda; - var delta; - var tol; var y; var i; @@ -141,13 +122,7 @@ tape( 'the function evaluates the mgf for `t` given a large range `lambda`', fun lambda = large.lambda; for ( i = 0; i < values.length; i++ ) { y = mgf( values[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 't: ' + values[ 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. t: ' + values[ 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(); }); diff --git a/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.native.js b/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.native.js index dc32a960af8c..809a6d112ee4 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.native.js @@ -22,13 +22,12 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); 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 exp = require( '@stdlib/math/base/special/exp' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var EPS = require( '@stdlib/constants/float64/eps' ); // FIXTURES // @@ -90,8 +89,6 @@ tape( 'the function evaluates the mgf for `t` given a small `lambda`', opts, fun var expected; var lambda; var values; - var delta; - var tol; var y; var i; @@ -100,13 +97,7 @@ tape( 'the function evaluates the mgf for `t` given a small `lambda`', opts, fun lambda = small.lambda; for ( i = 0; i < values.length; i++ ) { y = mgf( values[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 't: ' + values[ 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. t: ' + values[ 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(); }); @@ -115,8 +106,6 @@ tape( 'the function evaluates the mgf for `t` given a medium `lambda`', opts, fu var expected; var lambda; var values; - var delta; - var tol; var y; var i; @@ -125,13 +114,7 @@ tape( 'the function evaluates the mgf for `t` given a medium `lambda`', opts, fu lambda = medium.lambda; for ( i = 0; i < values.length; i++ ) { y = mgf( values[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 't: ' + values[ 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. t: ' + values[ 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(); }); @@ -140,8 +123,6 @@ tape( 'the function evaluates the mgf for `t` given a large range `lambda`', opt var expected; var values; var lambda; - var delta; - var tol; var y; var i; @@ -150,13 +131,7 @@ tape( 'the function evaluates the mgf for `t` given a large range `lambda`', opt lambda = large.lambda; for ( i = 0; i < values.length; i++ ) { y = mgf( values[ i ], lambda[ i ] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 't: ' + values[ 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. t: ' + values[ 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(); });