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..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 @@ -21,12 +21,13 @@ // 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' ); 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' ); @@ -39,7 +40,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,12 +62,7 @@ bench( pkg+'::analytic', function benchmark( b ) { var y; var i; - x = randu( 100, -34, 0 ); - - function negalucasf( n ) { - var an = absf( n ); - return pow( -1.0, an ) * roundf( pow( PHI, an ) ); - } + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -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 ) { @@ -88,7 +89,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++ ) { @@ -110,17 +111,7 @@ 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 = randu( 100, -20, 0 ); + x = discreteUniform( 100, -20, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -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 = zeros( 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 = randu( 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,8 +212,14 @@ bench( pkg+'::naive_iterative', function benchmark( b ) { } return arr[ an ]; } +}); + +bench( pkg+'::iterative', function benchmark( b ) { + var x; + var y; + var i; - x = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -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,8 +253,21 @@ 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 = randu( 100, -34, 0 ); + x = discreteUniform( 100, -34, 0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -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 = randu( 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(); }); 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(); });