From 8db1eadcb7900d6db6f8899703f9d1d02f595f69 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 28 Sep 2026 10:29:14 +0000 Subject: [PATCH] test: migrate `math/iter/utils/continued-fraction` to ULP-based assertions Replace the relative-tolerance (`delta`/`tol`) floating-point assertions in `test/test.js` with ULP-based assertions using `@stdlib/assert/is-almost-same-value`, per the tracking issue. Each converted site uses the minimum required ULP value, as measured against `@stdlib/number/float64/base/ulp-difference`: 2 for the two `[3,4,12,4]` fixtures, 1 for the two `0.3` continued-fraction sequences, and 0 for the remaining sites, which return exactly representable results. The now-unused `abs` and `EPS` requires are dropped. Only test files are changed. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_0165ZHkBWycywuobReCi8YRh --- .../utils/continued-fraction/test/test.js | 103 +++--------------- 1 file changed, 13 insertions(+), 90 deletions(-) diff --git a/lib/node_modules/@stdlib/math/iter/utils/continued-fraction/test/test.js b/lib/node_modules/@stdlib/math/iter/utils/continued-fraction/test/test.js index 12eba1004b29..9c87f6c8c010 100644 --- a/lib/node_modules/@stdlib/math/iter/utils/continued-fraction/test/test.js +++ b/lib/node_modules/@stdlib/math/iter/utils/continued-fraction/test/test.js @@ -21,13 +21,12 @@ // MODULES // var tape = require( 'tape' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var array2iterator = require( '@stdlib/array/to-iterator' ); var iterEmpty = require( '@stdlib/iter/empty' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var iterContinuedFractionSeq = require( '@stdlib/math/iter/sequences/continued-fraction' ); var PI = require( '@stdlib/constants/float64/pi' ); -var abs = require( '@stdlib/math/base/special/abs' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var iterContinuedFraction = require( './../lib' ); @@ -158,8 +157,6 @@ tape( 'the function throws an error if provided an invalid option', function tes tape( 'the function evaluates the terms of the continued fraction', function test( t ) { var expected; - var delta; - var tol; var it; var v; @@ -177,121 +174,61 @@ tape( 'the function evaluates the terms of the continued fraction', function tes v = iterContinuedFraction( it ); expected = 3.245; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.25 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 2 ), true, 'returns expected value' ); it = array2iterator( [ -3, -4, -12, -4 ] ); v = iterContinuedFraction( it ); expected = -3.245; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.25 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 2 ), true, 'returns expected value' ); it = iterContinuedFractionSeq( PI ); v = iterContinuedFraction( it ); expected = PI; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); it = iterContinuedFractionSeq( -PI ); v = iterContinuedFraction( it ); expected = -PI; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); it = array2iterator( [ 0, 2 ] ); v = iterContinuedFraction( it ); expected = 0.5; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); it = array2iterator( [ 0, 10 ] ); v = iterContinuedFraction( it ); expected = 0.1; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); it = iterContinuedFractionSeq( 0.3 ); v = iterContinuedFraction( it ); expected = 0.3; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 1 ), true, 'returns expected value' ); it = iterContinuedFractionSeq( -0.5 ); v = iterContinuedFraction( it ); expected = -0.5; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); it = iterContinuedFractionSeq( -0.3 ); v = iterContinuedFraction( it ); expected = -0.3; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 1 ), true, 'returns expected value' ); it = iterContinuedFractionSeq( -0.1 ); v = iterContinuedFraction( it ); expected = -0.1; - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); t.end(); }); @@ -358,8 +295,6 @@ tape( 'the function supports specifying an iteration limit', function test( t ) tape( 'the function supports specifying a tolerance', function test( t ) { var expected; - var delta; - var tol; var it; var v; @@ -369,13 +304,7 @@ tape( 'the function supports specifying a tolerance', function test( t ) { }); expected = 3.1415926530119025; // [ 3; 7, 15, 1, 292 ] - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); it = iterContinuedFractionSeq( -PI ); v = iterContinuedFraction( it, { @@ -383,13 +312,7 @@ tape( 'the function supports specifying a tolerance', function test( t ) { }); expected = -3.1415926530119025; // [ -3; -7, -15, -1, -292 ] - if ( v === expected ) { - t.strictEqual( v, expected, 'returns expected value' ); - } else { - delta = abs( v - expected ); - tol = 1.0 * EPS * abs( expected ); - t.strictEqual( delta <= tol, true, 'actual: '+v+'. expected: '+expected+'. delta: '+delta+'. tol: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( v, expected, 0 ), true, 'returns expected value' ); t.end(); });