From e29544d07e9d6be7e9ff2e8209c1d7c6188cefa8 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 31 Jul 2026 21:19:15 +0000 Subject: [PATCH] test: migrate `math/base/special/logitf` to ULP-based testing Replaces the relative tolerance idiom (delta/tol computed with EPS) with `@stdlib/number/float32/base/assert/is-almost-same-value`, tightened to the minimum ULP bound (1) that passes the full fixture set. Ref: https://github.com/stdlib-js/stdlib/issues/11352 --- .../math/base/special/logitf/test/test.js | 38 ++++----------- .../base/special/logitf/test/test.native.js | 48 +++++-------------- 2 files changed, 21 insertions(+), 65 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/logitf/test/test.js b/lib/node_modules/@stdlib/math/base/special/logitf/test/test.js index c2f30e4d9fb5..e378f77959e4 100644 --- a/lib/node_modules/@stdlib/math/base/special/logitf/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/logitf/test/test.js @@ -24,11 +24,15 @@ var tape = require( 'tape' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var PINF = require( '@stdlib/constants/float32/pinf' ); var NINF = require( '@stdlib/constants/float32/ninf' ); -var EPS = require( '@stdlib/constants/float32/eps' ); -var absf = require( '@stdlib/math/base/special/absf' ); +var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var logitf = require( './../lib' ); +// VARIABLES // + +var ULP = 1; + + // FIXTURES // var small = require( './fixtures/python/small.json' ); @@ -72,8 +76,6 @@ tape( 'the function returns `+Infinity` when provided `1`', function test( t ) { tape( 'the function evaluates the logit of `x` for the interval `(0,0.25]`', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -82,21 +84,13 @@ tape( 'the function evaluates the logit of `x` for the interval `(0,0.25]`', fun x = small.x; for ( i = 0; i < x.length; i++ ) { y = logitf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = absf( y - expected[i] ); - tol = EPS * absf( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+y+'. E: '+expected[i]+' Δ: '+delta+'. tol: '+tol ); - } + t.strictEqual( isAlmostSameValue( y, expected[i], ULP ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the logit of `x` for the interval `[0.25,0.75]`', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -105,21 +99,13 @@ tape( 'the function evaluates the logit of `x` for the interval `[0.25,0.75]`', x = medium.x; for ( i = 0; i < x.length; i++ ) { y = logitf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = absf( y - expected[i] ); - tol = EPS * absf( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+y+'. E: '+expected[i]+' Δ: '+delta+'. tol: '+tol ); - } + t.strictEqual( isAlmostSameValue( y, expected[i], ULP ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the logit of `x` for the interval `[0.75,1)`', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -128,13 +114,7 @@ tape( 'the function evaluates the logit of `x` for the interval `[0.75,1)`', fun x = large.x; for ( i = 0; i < x.length; i++ ) { y = logitf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = absf( y - expected[i] ); - tol = EPS * absf( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+y+'. E: '+expected[i]+' Δ: '+delta+'. tol: '+tol ); - } + t.strictEqual( isAlmostSameValue( y, expected[i], ULP ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/logitf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/logitf/test/test.native.js index adc7901af844..0cb4b8a3afdc 100644 --- a/lib/node_modules/@stdlib/math/base/special/logitf/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/logitf/test/test.native.js @@ -25,24 +25,24 @@ var tape = require( 'tape' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var PINF = require( '@stdlib/constants/float32/pinf' ); var NINF = require( '@stdlib/constants/float32/ninf' ); -var EPS = require( '@stdlib/constants/float32/eps' ); -var absf = require( '@stdlib/math/base/special/absf' ); +var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var tryRequire = require( '@stdlib/utils/try-require' ); -// FIXTURES // - -var small = require( './fixtures/python/small.json' ); -var medium = require( './fixtures/python/medium.json' ); -var large = require( './fixtures/python/large.json' ); - - // VARIABLES // var logitf = tryRequire( resolve( __dirname, './../lib/native.js' ) ); var opts = { 'skip': ( logitf instanceof Error ) }; +var ULP = 1; + + +// FIXTURES // + +var small = require( './fixtures/python/small.json' ); +var medium = require( './fixtures/python/medium.json' ); +var large = require( './fixtures/python/large.json' ); // TESTS // @@ -81,8 +81,6 @@ tape( 'the function returns `+Infinity` when provided `1`', opts, function test( tape( 'the function evaluates the logit of `x` for the interval `(0,0.25]`', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -91,21 +89,13 @@ tape( 'the function evaluates the logit of `x` for the interval `(0,0.25]`', opt x = small.x; for ( i = 0; i < x.length; i++ ) { y = logitf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = absf( y - expected[i] ); - tol = EPS * absf( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+y+'. E: '+expected[i]+' Δ: '+delta+'. tol: '+tol ); - } + t.strictEqual( isAlmostSameValue( y, expected[i], ULP ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the logit of `x` for the interval `[0.25,0.75]`', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -114,21 +104,13 @@ tape( 'the function evaluates the logit of `x` for the interval `[0.25,0.75]`', x = medium.x; for ( i = 0; i < x.length; i++ ) { y = logitf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = absf( y - expected[i] ); - tol = EPS * absf( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+y+'. E: '+expected[i]+' Δ: '+delta+'. tol: '+tol ); - } + t.strictEqual( isAlmostSameValue( y, expected[i], ULP ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the logit of `x` for the interval `[0.75,1)`', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -137,13 +119,7 @@ tape( 'the function evaluates the logit of `x` for the interval `[0.75,1)`', opt x = large.x; for ( i = 0; i < x.length; i++ ) { y = logitf( x[i] ); - if ( y === expected[i] ) { - t.strictEqual( y, expected[i], 'x: '+x[i]+', y: '+y+', expected: '+expected[i] ); - } else { - delta = absf( y - expected[i] ); - tol = EPS * absf( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. v: '+y+'. E: '+expected[i]+' Δ: '+delta+'. tol: '+tol ); - } + t.strictEqual( isAlmostSameValue( y, expected[i], ULP ), true, 'returns expected value' ); } t.end(); });