From cbc87792e8046d32f27996b4af5e684681b05f2f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 26 Jul 2026 09:19:17 +0000 Subject: [PATCH] test: migrate `math/base/special/cscd` to ULP-based testing Replaces relative-tolerance comparisons (EPS-scaled delta/tol) with `isAlmostSameValue` ULP-difference assertions per stdlib-js#11352. The tightest passing bound was determined empirically to be 2 ULPs for both the negative- and positive-value fixture sets, and confirmed deterministic across repeated runs. --- .../math/base/special/cscd/test/test.js | 27 +++++-------------- .../base/special/cscd/test/test.native.js | 27 +++++-------------- 2 files changed, 14 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/cscd/test/test.js b/lib/node_modules/@stdlib/math/base/special/cscd/test/test.js index f98498e56be9..4f2ed1bbec37 100644 --- a/lib/node_modules/@stdlib/math/base/special/cscd/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/cscd/test/test.js @@ -22,10 +22,9 @@ var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var cscd = require( './../lib' ); @@ -83,12 +82,12 @@ tape( 'the function returns `+0` if provided `+infinity`', function test( t ) { tape( 'the function computes the cosecant in degrees (negative values)', function test( t ) { var expected; - var delta; - var tol; + var ULP; var x; var y; var i; + ULP = 2; x = negative.x; expected = negative.expected; @@ -98,25 +97,19 @@ tape( 'the function computes the cosecant in degrees (negative values)', functio t.strictEqual( y, NINF, 'x: '+x[i]+'. E: '+expected[i] ); continue; } - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = 1.4 * EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); } t.end(); }); tape( 'the function computes the cosecant in degrees (positive values)', function test( t ) { var expected; - var delta; - var tol; + var ULP; var x; var y; var i; + ULP = 2; x = positive.x; expected = positive.expected; @@ -126,13 +119,7 @@ tape( 'the function computes the cosecant in degrees (positive values)', functio t.strictEqual( y, PINF, 'x: '+x[i]+'. E: '+expected[i] ); continue; } - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = 1.4 * EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/cscd/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/cscd/test/test.native.js index f1488488ccc6..0048b196998f 100644 --- a/lib/node_modules/@stdlib/math/base/special/cscd/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/cscd/test/test.native.js @@ -23,10 +23,9 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -92,12 +91,12 @@ tape( 'the function returns `+0` if provided `+infinity`', opts, function test( tape( 'the function computes the cosecant in degrees (negative values)', opts, function test( t ) { var expected; - var delta; - var tol; + var ULP; var x; var y; var i; + ULP = 2; x = negative.x; expected = negative.expected; @@ -107,25 +106,19 @@ tape( 'the function computes the cosecant in degrees (negative values)', opts, f t.strictEqual( y, NINF, 'x: '+x[i]+'. E: '+expected[i] ); continue; } - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = 1.4 * EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); } t.end(); }); tape( 'the function computes the cosecant in degrees (positive values)', opts, function test( t ) { var expected; - var delta; - var tol; + var ULP; var x; var y; var i; + ULP = 2; x = positive.x; expected = positive.expected; @@ -135,13 +128,7 @@ tape( 'the function computes the cosecant in degrees (positive values)', opts, f t.strictEqual( y, PINF, 'x: '+x[i]+'. E: '+expected[i] ); continue; } - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = 1.4 * EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], ULP ), true, 'returns expected value' ); } t.end(); });