From bcddbc8bb144f7ed1f607fcc0a6d1fe1690fe146 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 02:16:51 +0000 Subject: [PATCH] test: migrate `stats/incr/nanmpcorr` to ULP-based assertions Replace relative tolerance assertions with ULP difference assertions using `@stdlib/assert/is-almost-same-value`. Each assertion uses the minimum ULP bound which passes over the full set of test data. In order for the measured ULP bounds to be reproducible, pin the pseudorandom dataset seed, as previously done in the `stats/incr/mapcorr` and `stats/incr/nanmapcorr` migrations. Ref: https://github.com/stdlib-js/stdlib/issues/11352 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018DvFCXoqTpjUSaCsQzyyJB --- .../@stdlib/stats/incr/nanmpcorr/test/test.js | 43 +++---------------- 1 file changed, 7 insertions(+), 36 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/incr/nanmpcorr/test/test.js b/lib/node_modules/@stdlib/stats/incr/nanmpcorr/test/test.js index 0f876228cd67..3acbccaadd86 100644 --- a/lib/node_modules/@stdlib/stats/incr/nanmpcorr/test/test.js +++ b/lib/node_modules/@stdlib/stats/incr/nanmpcorr/test/test.js @@ -21,12 +21,11 @@ // MODULES // var tape = require( 'tape' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var randu = require( '@stdlib/random/base/randu' ); -var abs = require( '@stdlib/math/base/special/abs' ); var pow = require( '@stdlib/math/base/special/pow' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var incrnanmpcorr = require( './../lib' ); @@ -330,12 +329,10 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment var validData; var expected; var actual; - var delta; var means; var prev; var data; var acc; - var tol; var d; var N; var M; @@ -347,7 +344,7 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment N = 10; M = 100; - data = datasets( N, M, randu.seed ); + data = datasets( N, M, 123456 ); // Define the window size: W = 10; @@ -377,12 +374,8 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment } if ( isnan( expected ) ) { t.equal( isnan( actual ), true, 'returns NaN for window: '+i ); - } else if ( actual === expected ) { - t.equal( actual, expected, 'returns expected value. dataset: '+i+'. window: '+j+'.' ); } else { - delta = abs( actual - expected ); - tol = 5.0e5 * EPS * abs( expected ); - t.equal( delta < tol, true, 'dataset: '+i+'. window: '+j+'. expected: '+expected+'. actual: '+actual+'. tol: '+tol+'. delta: '+delta+'.' ); + t.strictEqual( isAlmostSameValue( actual, expected, 2457 ), true, 'returns expected value' ); } } } @@ -394,11 +387,9 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment var expected; var actual; var means; - var delta; var data; var prev; var acc; - var tol; var d; var N; var M; @@ -410,7 +401,7 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment N = 10; M = 100; - data = datasets( N, M, randu.seed ); + data = datasets( N, M, 123456 ); validData = []; for ( i = 0; i < N; i++ ) { d = data[ i ]; @@ -450,12 +441,8 @@ tape( 'the accumulator function computes a moving sample Pearson product-moment } if ( isnan( expected ) ) { t.equal( isnan( actual ), true, 'dataset: '+i+', window: '+j+' returns NaN as expected' ); - } else if ( actual === expected ) { - t.equal( actual, expected, 'returns expected value. dataset: '+i+'. window: '+j+'.' ); } else { - delta = abs( actual - expected ); - tol = 5.0e5 * EPS * abs( expected ); - t.equal( delta < tol, true, 'dataset: '+i+'. window: '+j+'. expected: '+expected+'. actual: '+actual+'. tol: '+tol+'. delta: '+delta+'.' ); + t.strictEqual( isAlmostSameValue( actual, expected, 0 ), true, 'returns expected value' ); } } } @@ -467,10 +454,8 @@ tape( 'if not provided an input value, the accumulator function returns the curr var expected; var actual; var means; - var delta; var prev; var data; - var tol; var acc; var W; var N; @@ -509,13 +494,7 @@ tape( 'if not provided an input value, the accumulator function returns the curr expected = pcorr( validData, means[ 0 ], means[ 1 ], false ); prev = expected; } - if ( actual === expected ) { - t.equal( actual, expected, 'returns expected value. window: '+i+'.' ); - } else { - delta = abs( actual - expected ); - tol = 2.0 * EPS * abs( expected ); - t.equal( delta < tol, true, 'window: '+i+'. expected: '+expected+'. actual: '+actual+'. tol: '+tol+'. delta: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( actual, expected, 2 ), true, 'returns expected value' ); } t.end(); }); @@ -525,10 +504,8 @@ tape( 'if not provided an input value, the accumulator function returns the curr var expected; var actual; var means; - var delta; var prev; var data; - var tol; var acc; var W; var N; @@ -575,13 +552,7 @@ tape( 'if not provided an input value, the accumulator function returns the curr expected = pcorr( validData, means[ 0 ], means[ 1 ], true ); prev = expected; } - if ( actual === expected ) { - t.equal( actual, expected, 'returns expected value. window: '+i+'.' ); - } else { - delta = abs( actual - expected ); - tol = 2.0 * EPS * abs( expected ); - t.equal( delta < tol, true, 'window: '+i+'. expected: '+expected+'. actual: '+actual+'. tol: '+tol+'. delta: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( actual, expected, 0 ), true, 'returns expected value' ); } t.end(); });