From d97e71274ebcd04cf6108447067b85902408ab0d Mon Sep 17 00:00:00 2001 From: hrshya Date: Thu, 20 Mar 2025 22:41:34 +0530 Subject: [PATCH 1/3] bench: update random value generation --- .../math/base/special/negalucasf/README.md | 2 +- .../special/negalucasf/benchmark/benchmark.js | 18 +++++++++--------- .../negalucasf/benchmark/benchmark.native.js | 4 ++-- .../math/base/special/negalucasf/test/test.js | 12 ++++++------ .../special/negalucasf/test/test.native.js | 4 ++-- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/negalucasf/README.md b/lib/node_modules/@stdlib/math/base/special/negalucasf/README.md index 0997c6e8ffbe..ba980e4a4558 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucasf/README.md +++ b/lib/node_modules/@stdlib/math/base/special/negalucasf/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# negaLucas +# negaLucasf > Compute the nth [negaLucas number][lucas-number] in single-precision floating-point format. diff --git a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js index fddeb4b180fc..5b2d414d62b0 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js @@ -21,7 +21,7 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/array/discrete-uniform' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var roundf = require( '@stdlib/math/base/special/roundf' ); var pow = require( '@stdlib/math/base/special/pow' ); var absf = require( '@stdlib/math/base/special/absf' ); @@ -39,7 +39,7 @@ bench( pkg, function benchmark( b ) { var y; var i; - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -61,7 +61,7 @@ bench( pkg+'::analytic', function benchmark( b ) { var y; var i; - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); function negalucasf( n ) { var an = absf( n ); @@ -88,7 +88,7 @@ bench( pkg+'::table', function benchmark( b ) { var y; var i; - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -120,7 +120,7 @@ bench( pkg+'::naive_recursion', function benchmark( b ) { return negalucasf( n+2 ) - negalucasf( n+1 ); } - x = randu( 100, -20, 0 ); + x = discreteUniform( 100, -20, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -158,7 +158,7 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { return arr[ an ]; } - x = randu( 100, -20, 0 ); + x = discreteUniform( 100, -20, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -196,7 +196,7 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { return arr[ an ]; } - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -237,7 +237,7 @@ bench( pkg+'::iterative', function benchmark( b ) { return b; } - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -280,7 +280,7 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { return arr[ an ]; } - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.native.js index 4dd3c3b28093..f4e066f67a83 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.native.js @@ -22,7 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/array/discrete-uniform' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -43,7 +43,7 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.js b/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.js index 7cdd29f460e9..4abf9addfa82 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.js @@ -46,30 +46,30 @@ tape( 'if provided a positive number, the function returns `NaN`', function test var v; var i; - t.strictEqual( isnanf( negalucasf( 3.14 ) ), true, 'returns NaN' ); + t.strictEqual( isnanf( negalucasf( 3.14 ) ), true, 'returns expected value' ); for ( i = 1; i < 100; i++ ) { v = negalucasf( i ); - t.strictEqual( isnanf( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnanf( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); tape( 'if provided negative infinity, the function returns `NaN`', function test( t ) { var v = negalucasf( NINF ); - t.strictEqual( isnanf( v ), true, 'returns NaN when provided -infinity' ); + t.strictEqual( isnanf( v ), true, 'returns expected value' ); t.end(); }); tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { var v = negalucasf( NaN ); - t.strictEqual( isnanf( v ), true, 'returns NaN when provided a NaN' ); + t.strictEqual( isnanf( v ), true, 'returns expected value' ); t.end(); }); tape( 'if provided a non-integer, the function returns `NaN`', function test( t ) { var v = negalucasf( -3.14 ); - t.strictEqual( isnanf( v ), true, 'returns NaN' ); + t.strictEqual( isnanf( v ), true, 'returns expected value' ); t.end(); }); @@ -100,7 +100,7 @@ tape( 'if provided nonpositive integers less than `-34`, the function returns `N var v; for ( i = -35; i > -500; i-- ) { v = negalucasf( i ); - t.strictEqual( isnanf( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnanf( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.native.js index 711f1db75ea7..aedb173e05f7 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucasf/test/test.native.js @@ -56,7 +56,7 @@ tape( 'if provided a positive number, the function returns `NaN`', opts, functio for ( i = 1; i < 100; i++ ) { v = negalucasf( i ); - t.strictEqual( isnanf( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnanf( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); @@ -88,7 +88,7 @@ tape( 'if provided nonpositive integers less than `-34`, the function returns `N var v; for ( i = -35; i > -500; i-- ) { v = negalucasf( i ); - t.strictEqual( isnanf( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnanf( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); From b99ebe40c0ef1e710ddedc2df8d7a5093b944261 Mon Sep 17 00:00:00 2001 From: Athan Date: Thu, 20 Mar 2025 18:07:54 -0700 Subject: [PATCH 2/3] bench: clean-up and resolve lint errors Signed-off-by: Athan --- .../special/negalucasf/benchmark/benchmark.js | 119 +++++++++--------- 1 file changed, 60 insertions(+), 59 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js index 5b2d414d62b0..3e10b3fee951 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js @@ -27,6 +27,7 @@ var pow = require( '@stdlib/math/base/special/pow' ); var absf = require( '@stdlib/math/base/special/absf' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var PHI = require( '@stdlib/constants/float32/phi' ); +var zeros = require( '@stdlib/array/base/zeros' ); var pkg = require( './../package.json' ).name; var NEGALUCAS = require( './../lib/negalucas.json' ); var negalucasf = require( './../lib' ); @@ -63,11 +64,6 @@ bench( pkg+'::analytic', function benchmark( b ) { x = discreteUniform( 100, -34, 0 ); - function negalucasf( n ) { - var an = absf( n ); - return pow( -1.0, an ) * roundf( pow( PHI, an ) ); - } - b.tic(); for ( i = 0; i < b.iterations; i++ ) { y = negalucasf( x[ i % x.length ] ); @@ -81,6 +77,11 @@ bench( pkg+'::analytic', function benchmark( b ) { } b.pass( 'benchmark finished' ); b.end(); + + function negalucasf( n ) { + var an = absf( n ); + return pow( -1.0, an ) * roundf( pow( PHI, an ) ); + } }); bench( pkg+'::table', function benchmark( b ) { @@ -110,16 +111,6 @@ bench( pkg+'::naive_recursion', function benchmark( b ) { var y; var i; - function negalucasf( n ) { - if ( n === 0 ) { - return 2; - } - if ( n === -1 ) { - return -1; - } - return negalucasf( n+2 ) - negalucasf( n+1 ); - } - x = discreteUniform( 100, -20, 0 ); b.tic(); @@ -135,6 +126,16 @@ bench( pkg+'::naive_recursion', function benchmark( b ) { } b.pass( 'benchmark finished' ); b.end(); + + function negalucasf( n ) { + if ( n === 0 ) { + return 2; + } + if ( n === -1 ) { + return -1; + } + return negalucasf( n+2 ) - negalucasf( n+1 ); + } }); bench( pkg+'::recursion_memoized', function benchmark( b ) { @@ -144,11 +145,27 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { var y; var i; - arr = new Array( 35 ); + arr = zeroes( 35 ); arr[ 0 ] = 2; arr[ 1 ] = -1; N = 1; + x = discreteUniform( 100, -20, 0 ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = negalucasf( x[ i % x.length ] ); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + function negalucasf( n ) { var an = absf( n ); if ( an <= N ) { @@ -157,8 +174,14 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { arr[ an ] = negalucasf( n+2 ) - negalucasf( n+1 ); return arr[ an ]; } +}); - x = discreteUniform( 100, -20, 0 ); +bench( pkg+'::naive_iterative', function benchmark( b ) { + var x; + var y; + var i; + + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -173,12 +196,6 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { } b.pass( 'benchmark finished' ); b.end(); -}); - -bench( pkg+'::naive_iterative', function benchmark( b ) { - var x; - var y; - var i; function negalucasf( n ) { var arr; @@ -187,7 +204,7 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { an = absf( n ); - arr = new Array( an+1 ); + arr = zeros( an+1 ); arr[ 0 ] = 2; arr[ 1 ] = -1; for ( i = 2; i <= an; i++ ) { @@ -195,6 +212,12 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { } return arr[ an ]; } +}); + +bench( pkg+'::iterative', function benchmark( b ) { + var x; + var y; + var i; x = discreteUniform( 100, -34, 0 ); @@ -211,12 +234,6 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { } b.pass( 'benchmark finished' ); b.end(); -}); - -bench( pkg+'::iterative', function benchmark( b ) { - var x; - var y; - var i; function negalucasf( n ) { var an; @@ -236,6 +253,19 @@ bench( pkg+'::iterative', function benchmark( b ) { } return b; } +}); + +bench( pkg+'::iterative_memoized', function benchmark( b ) { + var arr; + var N; + var x; + var y; + var i; + + arr = zeros( 35 ); + arr[ 0 ] = 2; + arr[ 1 ] = -1; + N = 2; x = discreteUniform( 100, -34, 0 ); @@ -252,19 +282,6 @@ bench( pkg+'::iterative', function benchmark( b ) { } b.pass( 'benchmark finished' ); b.end(); -}); - -bench( pkg+'::iterative_memoized', function benchmark( b ) { - var arr; - var N; - var x; - var y; - var i; - - arr = new Array( 35 ); - arr[ 0 ] = 2; - arr[ 1 ] = -1; - N = 2; function negalucasf( n ) { var an; @@ -279,20 +296,4 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { } return arr[ an ]; } - - x = discreteUniform( 100, -34, 0 ); - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - y = negalucasf( x[ i % x.length ] ); - if ( isnanf( y ) ) { - b.fail( 'should not return NaN' ); - } - } - b.toc(); - if ( isnanf( y ) ) { - b.fail( 'should not return NaN' ); - } - b.pass( 'benchmark finished' ); - b.end(); }); From cddcac708beae29c449051d62c6299e28907c71b Mon Sep 17 00:00:00 2001 From: Athan Date: Thu, 20 Mar 2025 18:08:46 -0700 Subject: [PATCH 3/3] bench: fix variable name Signed-off-by: Athan --- .../@stdlib/math/base/special/negalucasf/benchmark/benchmark.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js index 3e10b3fee951..63db764e3a19 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucasf/benchmark/benchmark.js @@ -145,7 +145,7 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { var y; var i; - arr = zeroes( 35 ); + arr = zeros( 35 ); arr[ 0 ] = 2; arr[ 1 ] = -1; N = 1;