From 1032c5c8bf6fd73a9c9819381b700eb1f34dc9af Mon Sep 17 00:00:00 2001 From: Arjan Date: Wed, 29 Jul 2026 12:09:05 +0530 Subject: [PATCH 1/2] test: migrate `math/base/special/log1p` to ULP difference testing --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown_pkg_readmes status: na - task: lint_markdown_docs status: na - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- .../math/base/special/log1p/test/test.js | 89 +++++++------------ .../base/special/log1p/test/test.native.js | 89 +++++++------------ 2 files changed, 64 insertions(+), 114 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1p/test/test.js b/lib/node_modules/@stdlib/math/base/special/log1p/test/test.js index dca22bfed028..f892aa4c1c8a 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1p/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/log1p/test/test.js @@ -23,12 +23,11 @@ var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var ln = require( '@stdlib/math/base/special/ln' ); var incrspace = require( '@stdlib/array/base/incrspace' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var log1p = require( './../lib' ); @@ -56,9 +55,7 @@ tape( 'main export is a function', function test( t ) { tape( 'the function agrees with `ln(x+1)` for most `x`', function test( t ) { var expected; - var delta; var val; - var tol; var x; var y; var i; @@ -68,209 +65,187 @@ tape( 'the function agrees with `ln(x+1)` for most `x`', function test( t ) { val = x[ i ]; y = log1p( val ); expected = ln( val + 1.0 ); - delta = abs( y - expected ); - tol = 1.0e-12 * abs( expected ); - t.ok( delta <= tol, 'within tolerance. x: ' + val + '. Value: ' + y + '. Expected: ' + expected + '. Tolerance: ' + tol + '.' ); + t.strictEqual( isAlmostSameValue( y, expected, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative medium numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = mediumNegative.x; expected = mediumNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive medium numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = mediumPositive.x; expected = mediumPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative small numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = smallNegative.x; expected = smallNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive small numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = smallPositive.x; expected = smallPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative tiny numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = tinyNegative.x; expected = tinyNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive tiny numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = tinyPositive.x; expected = tinyPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative large numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = largeNegative.x; expected = largeNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive large numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = largePositive.x; expected = largePositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive big numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = bigPositive.x; expected = bigPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive huge numbers', function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = hugePositive.x; expected = hugePositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js index 0222507100b8..7ca1a1b1e339 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js @@ -24,13 +24,12 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var ln = require( '@stdlib/math/base/special/ln' ); var incrspace = require( '@stdlib/array/base/incrspace' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); var tryRequire = require( '@stdlib/utils/try-require' ); -var EPS = require( '@stdlib/constants/float64/eps' ); // FIXTURES // @@ -65,9 +64,7 @@ tape( 'main export is a function', opts, function test( t ) { tape( 'the function agrees with `ln(x+1)` for most `x`', opts, function test( t ) { var expected; - var delta; var val; - var tol; var x; var y; var i; @@ -77,209 +74,187 @@ tape( 'the function agrees with `ln(x+1)` for most `x`', opts, function test( t val = x[ i ]; y = log1p( val ); expected = ln( val + 1.0 ); - delta = abs( y - expected ); - tol = 1.0e-12 * abs( expected ); - t.ok( delta <= tol, 'within tolerance. x: ' + val + '. Value: ' + y + '. Expected: ' + expected + '. Tolerance: ' + tol + '.' ); + t.strictEqual( isAlmostSameValue( y, expected, 1), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative medium numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = mediumNegative.x; expected = mediumNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive medium numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = mediumPositive.x; expected = mediumPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative small numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = smallNegative.x; expected = smallNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive small numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = smallPositive.x; expected = smallPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative tiny numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = tinyNegative.x; expected = tinyNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive tiny numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = tinyPositive.x; expected = tinyPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for negative large numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = largeNegative.x; expected = largeNegative.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive large numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = largePositive.x; expected = largePositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive big numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = bigPositive.x; expected = bigPositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function accurately computes `ln(x+1)` for positive huge numbers', opts, function test( t ) { var expected; - var delta; - var tol; var v; var x; var i; + var e; x = hugePositive.x; expected = hugePositive.expected; for ( i = 0; i < x.length; i++ ) { v = log1p( x[ i ] ); - delta = abs( v - expected[ i ] ); - tol = EPS * abs( expected[ i ] ); - t.ok( delta <= tol, 'within tolerance. x: ' + x[ i ] + '. Value: ' + v + '. Expected: ' + expected[ i ] + '. Tolerance: ' + tol + '.' ); + e = expected[ i ]; + t.strictEqual( isAlmostSameValue( v, e, 1 ), true, 'returns expected value' ); } t.end(); }); From 075e94d751fb569186a895136f65f468179c9169 Mon Sep 17 00:00:00 2001 From: Athan Date: Tue, 28 Jul 2026 23:57:14 -0700 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Athan Signed-off-by: Athan --- .../@stdlib/math/base/special/log1p/test/test.native.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js index 7ca1a1b1e339..dd0cd6326c94 100644 --- a/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/log1p/test/test.native.js @@ -74,7 +74,7 @@ tape( 'the function agrees with `ln(x+1)` for most `x`', opts, function test( t val = x[ i ]; y = log1p( val ); expected = ln( val + 1.0 ); - t.strictEqual( isAlmostSameValue( y, expected, 1), true, 'returns expected value' ); + t.strictEqual( isAlmostSameValue( y, expected, 1 ), true, 'returns expected value' ); } t.end(); });