From 0113a121e3a217e33d4d8b90502ae8ec2d3be821 Mon Sep 17 00:00:00 2001 From: hrshya Date: Fri, 28 Mar 2025 23:56:23 +0530 Subject: [PATCH 1/2] bench: update random value generation --- .../negafibonacci/benchmark/benchmark.js | 50 +++++++++++-------- .../benchmark/benchmark.native.js | 8 +-- .../negafibonacci/benchmark/c/benchmark.c | 9 ++-- .../benchmark/c/native/benchmark.c | 9 ++-- .../base/special/negafibonacci/test/test.js | 12 ++--- .../special/negafibonacci/test/test.native.js | 6 +-- .../special/negalucas/benchmark/benchmark.js | 50 +++++++++++-------- .../negalucas/benchmark/benchmark.native.js | 8 +-- .../special/negalucas/benchmark/c/benchmark.c | 9 ++-- .../negalucas/benchmark/c/native/benchmark.c | 9 ++-- .../math/base/special/negalucas/test/test.js | 12 ++--- .../special/negalucas/test/test.native.js | 4 +- .../nonfibonacci/benchmark/benchmark.js | 8 +-- .../benchmark/benchmark.native.js | 8 +-- .../benchmark/c/native/benchmark.c | 9 ++-- .../base/special/nonfibonacci/test/test.js | 10 ++-- .../special/nonfibonacci/test/test.native.js | 10 ++-- .../nonfibonaccif/benchmark/benchmark.js | 4 +- .../benchmark/benchmark.native.js | 4 +- 19 files changed, 135 insertions(+), 104 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js index 7f1555f34239..857359aa5740 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js @@ -21,8 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var floor = require( '@stdlib/math/base/special/floor' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var zeros = require( '@stdlib/array/base/zeros' ); var round = require( '@stdlib/math/base/special/round' ); var sqrt = require( '@stdlib/math/base/special/sqrt' ); var pow = require( '@stdlib/math/base/special/pow' ); @@ -46,10 +46,11 @@ bench( pkg, function benchmark( b ) { var y; var i; + x = -discreteUniform( 100, 0, 78 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*79.0 ); - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -72,10 +73,11 @@ bench( pkg+'::analytic', function benchmark( b ) { return pow( -1.0, an+1 ) * round( pow( PHI, an ) / SQRT_5 ); } + x = -discreteUniform( 100, 0, 78 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*79.0 ); - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -93,10 +95,11 @@ bench( pkg+'::table', function benchmark( b ) { var y; var i; + x = -discreteUniform( 100, 0, 78 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*79.0 ); - y = NEGAFIBONACCI[ abs( x ) ]; + y = NEGAFIBONACCI[ abs( x[ i%x.length ] ) ]; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -124,10 +127,11 @@ bench( pkg+'::naive_recursion', function benchmark( b ) { return negafibonacci( n+2 ) - negafibonacci( n+1 ); } + x = -discreteUniform( 100, 0, 40 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*40.0 ); // limit lower bound - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -147,7 +151,7 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { var y; var i; - arr = new Array( 79 ); + arr = zeros( 79 ); arr[ 0 ] = 0; arr[ 1 ] = 1; arr[ 2 ] = -1; @@ -162,10 +166,11 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { return arr[ an ]; } + x = -discreteUniform( 100, 0, 40 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*40.0 ); // limit lower bound - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -190,7 +195,7 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { an = abs( n ); - arr = new Array( an+1 ); + arr = zeros( an+1 ); arr[ 0 ] = 0; arr[ 1 ] = 1; arr[ 2 ] = -1; @@ -200,10 +205,11 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { return arr[ an ]; } + x = -discreteUniform( 100, 0, 78 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*79.0 ); - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -240,10 +246,11 @@ bench( pkg+'::iterative', function benchmark( b ) { return b; } + x = -discreteUniform( 100, 0, 78 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*79.0 ); - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -263,7 +270,7 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { var y; var i; - arr = new Array( 79 ); + arr = zeros( 79 ); arr[ 0 ] = 0; arr[ 1 ] = 1; arr[ 2 ] = -1; @@ -283,10 +290,11 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { return arr[ an ]; } + x = -discreteUniform( 100, 0, 78 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*79.0 ); - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js index ca39f1962421..b9c26366fc3e 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js @@ -22,8 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var floor = require( '@stdlib/math/base/special/floor' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -44,10 +43,11 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; + x = -discreteUniform( 100, 0, 78 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu() * 79.0 ); - y = negafibonacci( x ); + y = negafibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/benchmark.c index f7b9c80a6834..a8226c0e16d0 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/benchmark.c @@ -107,14 +107,17 @@ int negafibonacci( int n ) { static double benchmark( void ) { double elapsed; double t; - int x; + int x[ 100 ]; int y; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = (int)floor( 40.0*rand_double() ); + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = (int)floor( 40.0*rand_double() ); - y = negafibonacci( -x ); + y = negafibonacci( -x[ i%100 ] ); if ( y == 7 ) { printf( "should not return 7\n" ); break; diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/native/benchmark.c index 46e7e5893d25..cdd602448b95 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/c/native/benchmark.c @@ -91,15 +91,18 @@ static double rand_double( void ) { */ static double benchmark( void ) { double elapsed; - int32_t x; + int32_t x[ 100 ]; double t; double y; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = (int32_t)floor( 40.0 * rand_double() ); + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = (int32_t)floor( 40.0 * rand_double() ); - y = stdlib_base_negafibonacci( -x ); + y = stdlib_base_negafibonacci( -x[ i%100 ] ); if ( y != y ) { printf( "should not return NaN\n" ); break; diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/test/test.js b/lib/node_modules/@stdlib/math/base/special/negafibonacci/test/test.js index 6cfe5e89635c..1e24c2bf537d 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/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( isnan( negafibonacci( 3.14 ) ), true, 'returns NaN' ); + t.strictEqual( isnan( negafibonacci( 3.14 ) ), true, 'returns expected value' ); for ( i = 1; i < 100; i++ ) { v = negafibonacci( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); tape( 'if provided negative infinity, the function returns `NaN`', function test( t ) { var v = negafibonacci( NINF ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided -infinity' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { var v = negafibonacci( NaN ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided a NaN' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); tape( 'if provided a non-integer, the function returns `NaN`', function test( t ) { var v = negafibonacci( -3.14 ); - t.strictEqual( isnan( v ), true, 'returns NaN' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); @@ -100,7 +100,7 @@ tape( 'if provided nonpositive integers less than `-78`, the function returns `N var v; for ( i = -79; i > -500; i-- ) { v = negafibonacci( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/negafibonacci/test/test.native.js index a1496e0f4200..5eec7c18c577 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/test/test.native.js @@ -54,11 +54,11 @@ tape( 'if provided a positive number, the function returns `NaN`', opts, functio var v; var i; - t.strictEqual( isnan( negafibonacci( 3.14 ) ), true, 'returns NaN' ); + t.strictEqual( isnan( negafibonacci( 3.14 ) ), true, 'returns expected value' ); for ( i = 1; i < 100; i++ ) { v = negafibonacci( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); @@ -90,7 +90,7 @@ tape( 'if provided nonpositive integers less than `-78`, the function returns `N var v; for ( i = -79; i > -500; i-- ) { v = negafibonacci( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js index a857d58703a8..23b52909fdf5 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js @@ -21,8 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var floor = require( '@stdlib/math/base/special/floor' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var zeros = require( '@stdlib/array/base/zeros' ); var round = require( '@stdlib/math/base/special/round' ); var pow = require( '@stdlib/math/base/special/pow' ); var abs = require( '@stdlib/math/base/special/abs' ); @@ -40,10 +40,11 @@ bench( pkg, function benchmark( b ) { var y; var i; + x = -discreteUniform( 100, 0, 77 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*77.0 ); - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -66,10 +67,11 @@ bench( pkg+'::analytic', function benchmark( b ) { return pow( -1.0, an ) * round( pow( PHI, an ) ); } + x = -discreteUniform( 100, 0, 77 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*77.0 ); - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -87,10 +89,11 @@ bench( pkg+'::table', function benchmark( b ) { var y; var i; + x = -discreteUniform( 100, 0, 77 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*77.0 ); - y = NEGALUCAS[ abs( x ) ]; + y = NEGALUCAS[ abs( x[ i%x.length ] ) ]; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -118,10 +121,11 @@ bench( pkg+'::naive_recursion', function benchmark( b ) { return negalucas( n+2 ) - negalucas( n+1 ); } + x = -discreteUniform( 100, 0, 40 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*40.0 ); // limit lower bound - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -141,7 +145,7 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { var y; var i; - arr = new Array( 77 ); + arr = zeros( 77 ); arr[ 0 ] = 2; arr[ 1 ] = -1; N = 1; @@ -155,10 +159,11 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { return arr[ an ]; } + x = -discreteUniform( 100, 0, 40 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*40.0 ); // limit lower bound - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -183,7 +188,7 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { an = abs( n ); - arr = new Array( an+1 ); + arr = zeros( an+1 ); arr[ 0 ] = 2; arr[ 1 ] = -1; for ( i = 2; i <= an; i++ ) { @@ -192,10 +197,11 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { return arr[ an ]; } + x = -discreteUniform( 100, 0, 77 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*77.0 ); - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -232,10 +238,11 @@ bench( pkg+'::iterative', function benchmark( b ) { return b; } + x = -discreteUniform( 100, 0, 77 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*77.0 ); - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -255,7 +262,7 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { var y; var i; - arr = new Array( 77 ); + arr = zeros( 77 ); arr[ 0 ] = 2; arr[ 1 ] = -1; N = 2; @@ -274,10 +281,11 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { return arr[ an ]; } + x = -discreteUniform( 100, 0, 77 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*77.0 ); - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js index 681395f154d6..aa7822946c40 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js @@ -22,8 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var floor = require( '@stdlib/math/base/special/floor' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -44,10 +43,11 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; + x = -discreteUniform( 100, 0, 76 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = -floor( randu()*76.0 ); - y = negalucas( x ); + y = negalucas( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/benchmark.c index d430f436a235..0ce7738d4f36 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/benchmark.c @@ -107,14 +107,17 @@ int negalucas( int n ) { static double benchmark( void ) { double elapsed; double t; - int x; + int x[ 100 ]; int y; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = (int)floor( 40.0*rand_double() ); + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = (int)floor( 40.0*rand_double() ); - y = negalucas( -x ); + y = negalucas( -x[ i%100 ] ); if ( y == -7 ) { printf( "should not return -7\n" ); break; diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/native/benchmark.c index e7b93346a3a8..ddcfbe4fd9bc 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/c/native/benchmark.c @@ -91,15 +91,18 @@ static double rand_double( void ) { */ static double benchmark( void ) { double elapsed; - int32_t x; + int32_t x[ 100 ]; double t; double y; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = (int32_t)( 77.0*rand_double() ); + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = (int32_t)( 77.0*rand_double() ); - y = stdlib_base_negalucas( x ); + y = stdlib_base_negalucas( x[ i%100 ] ); if ( y != y ) { printf( "should not return NaN\n" ); break; diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/test/test.js b/lib/node_modules/@stdlib/math/base/special/negalucas/test/test.js index 2f8ddeeb43c4..d2b0a2615d10 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/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( isnan( negalucas( 3.14 ) ), true, 'returns NaN' ); + t.strictEqual( isnan( negalucas( 3.14 ) ), true, 'returns expected value' ); for ( i = 1; i < 100; i++ ) { v = negalucas( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); tape( 'if provided negative infinity, the function returns `NaN`', function test( t ) { var v = negalucas( NINF ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided -infinity' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { var v = negalucas( NaN ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided a NaN' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); tape( 'if provided a non-integer, the function returns `NaN`', function test( t ) { var v = negalucas( -3.14 ); - t.strictEqual( isnan( v ), true, 'returns NaN' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); @@ -100,7 +100,7 @@ tape( 'if provided nonpositive integers less than `-76`, the function returns `N var v; for ( i = -77; i > -500; i-- ) { v = negalucas( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/negalucas/test/test.native.js index 6cdf81c12927..b541ae65031e 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/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 = negalucas( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); @@ -88,7 +88,7 @@ tape( 'if provided nonpositive integers less than `-76`, the function returns `N var v; for ( i = -77; i > -500; i-- ) { v = negalucas( i ); - t.strictEqual( isnan( v ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( v ), true, 'returns expected value when provided ' + i ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.js index c9f1be5d4c91..6b3adb5c95a8 100644 --- a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.js @@ -21,8 +21,7 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); -var floor = require( '@stdlib/math/base/special/floor' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var nonfibonacci = require( './../lib' ); @@ -35,10 +34,11 @@ bench( pkg, function benchmark( b ) { var y; var i; + x = discreteUniform( 100, 1, 100 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = floor( (randu()*100.0) + 1.0 ); - y = nonfibonacci( x ); + y = nonfibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.native.js index cfd3d20fc276..03e51ae542b8 100644 --- a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/benchmark.native.js @@ -21,9 +21,8 @@ // MODULES // var resolve = require( 'path' ).resolve; -var floor = require( '@stdlib/math/base/special/floor' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var randu = require( '@stdlib/random/base/randu' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var tryRequire = require( '@stdlib/utils/try-require' ); var bench = require( '@stdlib/bench' ); var pkg = require( './../package.json' ).name; @@ -44,10 +43,11 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; + x = discreteUniform( 100, 1, 100 ); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = floor( (randu()*100.0) + 1.0 ); - y = nonfibonacci( x ); + y = nonfibonacci( x[ i%x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/c/native/benchmark.c index fa13f17aaebf..ca80cabc520a 100644 --- a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/c/native/benchmark.c @@ -92,13 +92,16 @@ static double benchmark( void ) { double elapsed; double t; double y; - int x; + int x[ 100 ]; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = (int)floor( (100.0*rand_double()) + 1.0 ); + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = (int)floor( (100.0*rand_double()) + 1.0 ); - y = stdlib_base_nonfibonacci( x ); + y = stdlib_base_nonfibonacci( x[ i%100 ] ); if ( y < 0 ) { printf( "should return a nonnegative integer\n" ); break; diff --git a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.js b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.js index 0b7e635f1260..d2681549e8ba 100644 --- a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.js @@ -42,13 +42,13 @@ tape( 'main export is a function', function test( t ) { tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { var n = nonfibonacci( NaN ); - t.strictEqual( isnan( n ), true, 'returns NaN when provided a NaN' ); + t.strictEqual( isnan( n ), true, 'returns expected value' ); t.end(); }); tape( 'if provided `+infinity`, the function returns `NaN`', function test( t ) { var n = nonfibonacci( PINF ); - t.strictEqual( isnan( n ), true, 'returns NaN' ); + t.strictEqual( isnan( n ), true, 'returns expected value' ); t.end(); }); @@ -56,18 +56,18 @@ tape( 'if provided a number less than 1, the function returns `NaN`', function t var n; var i; - t.strictEqual( isnan( nonfibonacci( -3.14 ) ), true, 'returns NaN' ); + t.strictEqual( isnan( nonfibonacci( -3.14 ) ), true, 'returns expected value' ); for ( i = 0; i > -100; i-- ) { n = nonfibonacci( i ); - t.strictEqual( isnan( n ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( n ), true, 'returns expected value when provided ' + i ); } t.end(); }); tape( 'if provided a non-integer, the function returns `NaN`', function test( t ) { var n = nonfibonacci( 3.14 ); - t.strictEqual( isnan( n ), true, 'returns NaN' ); + t.strictEqual( isnan( n ), true, 'returns expected value' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.native.js index 7a685dc47f99..3b7f34367ad9 100644 --- a/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/nonfibonacci/test/test.native.js @@ -51,13 +51,13 @@ tape( 'main export is a function', opts, function test( t ) { tape( 'if provided `NaN`, the function returns `NaN`', opts, function test( t ) { var n = nonfibonacci( NaN ); - t.strictEqual( isnan( n ), true, 'returns NaN when provided a NaN' ); + t.strictEqual( isnan( n ), true, 'returns expected value' ); t.end(); }); tape( 'if provided `+infinity`, the function returns `NaN`', opts, function test( t ) { var n = nonfibonacci( PINF ); - t.strictEqual( isnan( n ), true, 'returns NaN' ); + t.strictEqual( isnan( n ), true, 'returns expected value' ); t.end(); }); @@ -65,11 +65,11 @@ tape( 'if provided a number less than 1, the function returns `NaN`', opts, func var n; var i; - t.strictEqual( isnan( nonfibonacci( -3.14 ) ), true, 'returns NaN' ); + t.strictEqual( isnan( nonfibonacci( -3.14 ) ), true, 'returns expected value' ); for ( i = 0; i > -100; i-- ) { n = nonfibonacci( i ); - t.strictEqual( isnan( n ), true, 'returns NaN when provided ' + i ); + t.strictEqual( isnan( n ), true, 'returns expected value when provided ' + i ); } t.end(); }); @@ -77,7 +77,7 @@ tape( 'if provided a number less than 1, the function returns `NaN`', opts, func tape( 'if provided a non-integer, the function returns `NaN`', opts, function test( t ) { var n = nonfibonacci( 3.14 ); - t.strictEqual( isnan( n ), true, 'returns NaN' ); + t.strictEqual( isnan( n ), true, 'returns expected value' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/benchmark/benchmark.js index 4ad7a4c031a0..0dc127ff279d 100644 --- a/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/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 isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pkg = require( './../package.json' ).name; var nonfibonaccif = require( './../lib' ); @@ -34,7 +34,7 @@ bench( pkg, function benchmark( b ) { var y; var i; - x = randu( 100, 1, 100 ); + x = discreteUniform( 100, 1, 100 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/benchmark/benchmark.native.js index d73228d5fd3c..ea6a231cfe35 100644 --- a/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/nonfibonaccif/benchmark/benchmark.native.js @@ -22,7 +22,7 @@ var resolve = require( 'path' ).resolve; var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); -var randu = require( '@stdlib/random/array/discrete-uniform' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var tryRequire = require( '@stdlib/utils/try-require' ); var bench = require( '@stdlib/bench' ); var pkg = require( './../package.json' ).name; @@ -43,7 +43,7 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; - x = randu( 100, 1, 100 ); + x = discreteUniform( 100, 1, 100 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { From 497492800b1acec449f0198744b596545d41a6de Mon Sep 17 00:00:00 2001 From: hrshya Date: Sun, 30 Mar 2025 09:57:43 +0530 Subject: [PATCH 2/2] fix: fixes suggested changes --- .../special/negafibonacci/benchmark/benchmark.js | 16 ++++++++-------- .../negafibonacci/benchmark/benchmark.native.js | 2 +- .../special/negalucas/benchmark/benchmark.js | 16 ++++++++-------- .../negalucas/benchmark/benchmark.native.js | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js index 857359aa5740..32fdde843eab 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.js @@ -46,7 +46,7 @@ bench( pkg, function benchmark( b ) { var y; var i; - x = -discreteUniform( 100, 0, 78 ); + x = discreteUniform( 100, -78, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -73,7 +73,7 @@ bench( pkg+'::analytic', function benchmark( b ) { return pow( -1.0, an+1 ) * round( pow( PHI, an ) / SQRT_5 ); } - x = -discreteUniform( 100, 0, 78 ); + x = discreteUniform( 100, -78, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -95,7 +95,7 @@ bench( pkg+'::table', function benchmark( b ) { var y; var i; - x = -discreteUniform( 100, 0, 78 ); + x = discreteUniform( 100, -78, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -127,7 +127,7 @@ bench( pkg+'::naive_recursion', function benchmark( b ) { return negafibonacci( n+2 ) - negafibonacci( n+1 ); } - x = -discreteUniform( 100, 0, 40 ); + x = discreteUniform( 100, -40, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -166,7 +166,7 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { return arr[ an ]; } - x = -discreteUniform( 100, 0, 40 ); + x = discreteUniform( 100, -40, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -205,7 +205,7 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { return arr[ an ]; } - x = -discreteUniform( 100, 0, 78 ); + x = discreteUniform( 100, -40, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -246,7 +246,7 @@ bench( pkg+'::iterative', function benchmark( b ) { return b; } - x = -discreteUniform( 100, 0, 78 ); + x = discreteUniform( 100, -78, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -290,7 +290,7 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { return arr[ an ]; } - x = -discreteUniform( 100, 0, 78 ); + x = discreteUniform( 100, -78, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js index b9c26366fc3e..7f9180772894 100644 --- a/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negafibonacci/benchmark/benchmark.native.js @@ -43,7 +43,7 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; - x = -discreteUniform( 100, 0, 78 ); + x = discreteUniform( 100, -78, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js index 23b52909fdf5..aa4e4ea09326 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.js @@ -40,7 +40,7 @@ bench( pkg, function benchmark( b ) { var y; var i; - x = -discreteUniform( 100, 0, 77 ); + x = discreteUniform( 100, -77, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -67,7 +67,7 @@ bench( pkg+'::analytic', function benchmark( b ) { return pow( -1.0, an ) * round( pow( PHI, an ) ); } - x = -discreteUniform( 100, 0, 77 ); + x = discreteUniform( 100, -77, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -89,7 +89,7 @@ bench( pkg+'::table', function benchmark( b ) { var y; var i; - x = -discreteUniform( 100, 0, 77 ); + x = discreteUniform( 100, -77, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -121,7 +121,7 @@ bench( pkg+'::naive_recursion', function benchmark( b ) { return negalucas( n+2 ) - negalucas( n+1 ); } - x = -discreteUniform( 100, 0, 40 ); + x = discreteUniform( 100, -40, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -159,7 +159,7 @@ bench( pkg+'::recursion_memoized', function benchmark( b ) { return arr[ an ]; } - x = -discreteUniform( 100, 0, 40 ); + x = discreteUniform( 100, -40, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -197,7 +197,7 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { return arr[ an ]; } - x = -discreteUniform( 100, 0, 77 ); + x = discreteUniform( 100, -77, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -238,7 +238,7 @@ bench( pkg+'::iterative', function benchmark( b ) { return b; } - x = -discreteUniform( 100, 0, 77 ); + x = discreteUniform( 100, -77, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -281,7 +281,7 @@ bench( pkg+'::iterative_memoized', function benchmark( b ) { return arr[ an ]; } - x = -discreteUniform( 100, 0, 77 ); + x = discreteUniform( 100, -77, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js index aa7822946c40..5640babeee30 100644 --- a/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/negalucas/benchmark/benchmark.native.js @@ -43,7 +43,7 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; - x = -discreteUniform( 100, 0, 76 ); + x = discreteUniform( 100, -76, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) {