From a637ce134457a0c9e9d7c40567609f12f6669f92 Mon Sep 17 00:00:00 2001 From: Arjan Date: Thu, 30 Jul 2026 11:34:16 +0530 Subject: [PATCH] test: migrate `math/base/special/lnf` to ULP difference based 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/lnf/test/test.js | 73 ++----------------- .../math/base/special/lnf/test/test.native.js | 73 ++----------------- 2 files changed, 16 insertions(+), 130 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/lnf/test/test.js b/lib/node_modules/@stdlib/math/base/special/lnf/test/test.js index eb29fbdbed49..bb585a2eb2c5 100644 --- a/lib/node_modules/@stdlib/math/base/special/lnf/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/lnf/test/test.js @@ -24,8 +24,7 @@ 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 abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); var isPositiveZero = require( '@stdlib/math/base/assert/is-positive-zero' ); var lnf = require( './../lib' ); @@ -52,8 +51,6 @@ tape( 'main export is a function', function test( t ) { tape( 'the function evaluates the natural logarithm of `x` (very large positive values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -64,21 +61,13 @@ tape( 'the function evaluates the natural logarithm of `x` (very large positive for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (large positive values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -89,21 +78,13 @@ tape( 'the function evaluates the natural logarithm of `x` (large positive value for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (medium positive values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -114,21 +95,13 @@ tape( 'the function evaluates the natural logarithm of `x` (medium positive valu for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (small positive values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -139,21 +112,13 @@ tape( 'the function evaluates the natural logarithm of `x` (small positive value for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = 106.0 * EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 174 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (smaller positive values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -164,21 +129,13 @@ tape( 'the function evaluates the natural logarithm of `x` (smaller positive val for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = 1.8 * EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 2 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (tiny positive values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -189,21 +146,13 @@ tape( 'the function evaluates the natural logarithm of `x` (tiny positive values for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (subnormal values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -214,13 +163,7 @@ tape( 'the function evaluates the natural logarithm of `x` (subnormal values)', for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = 7.0 * EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 10 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/lnf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/lnf/test/test.native.js index 4648759a52e9..ac0a425e7128 100644 --- a/lib/node_modules/@stdlib/math/base/special/lnf/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/lnf/test/test.native.js @@ -25,8 +25,7 @@ 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 abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/number/float32/base/assert/is-almost-same-value' ); var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); var isPositiveZero = require( '@stdlib/math/base/assert/is-positive-zero' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -61,8 +60,6 @@ tape( 'main export is a function', opts, function test( t ) { tape( 'the function evaluates the natural logarithm of `x` (very large positive values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -73,21 +70,13 @@ tape( 'the function evaluates the natural logarithm of `x` (very large positive for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (large positive values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -98,21 +87,13 @@ tape( 'the function evaluates the natural logarithm of `x` (large positive value for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (medium positive values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -123,21 +104,13 @@ tape( 'the function evaluates the natural logarithm of `x` (medium positive valu for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (small positive values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -148,21 +121,13 @@ tape( 'the function evaluates the natural logarithm of `x` (small positive value for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = 106.0 * EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 174 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (smaller positive values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -173,21 +138,13 @@ tape( 'the function evaluates the natural logarithm of `x` (smaller positive val for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = 1.8 * EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 2 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (tiny positive values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -198,21 +155,13 @@ tape( 'the function evaluates the natural logarithm of `x` (tiny positive values for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function evaluates the natural logarithm of `x` (subnormal values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -223,13 +172,7 @@ tape( 'the function evaluates the natural logarithm of `x` (subnormal values)', for ( i = 0; i < x.length; i++ ) { y = lnf( x[i] ); e = float64ToFloat32( expected[ i ] ); - if ( y === e ) { - t.strictEqual( y, e, 'x: '+x[i]+', y: '+y+', expected: '+e ); - } else { - delta = abs( y - e ); - tol = 7.0 * EPS * abs( e ); - t.strictEqual( delta <= tol, true, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+e+'. Δ: '+delta+'. Tolerance: '+tol+'.' ); - } + t.strictEqual( isAlmostSameValue( y, e, 10 ), true, 'returns expected value' ); } t.end(); });