From 94e7cc07f0f32d690d69eb6adcca127877a090a2 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Tue, 21 Jan 2025 13:58:16 -0800 Subject: [PATCH] bench: move random number generation outside the benchmarking loops and use uniform instead of randu --- 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 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: na - task: lint_javascript_benchmarks status: passed - 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: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: na - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: na - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: na - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: na --- --- .../dists/binomial/cdf/benchmark/benchmark.js | 30 +++- .../binomial/ctor/benchmark/benchmark.js | 139 ++++++++++++++---- .../binomial/entropy/benchmark/benchmark.js | 18 ++- .../binomial/kurtosis/benchmark/benchmark.js | 18 ++- .../binomial/logpmf/benchmark/benchmark.js | 30 +++- .../binomial/mean/benchmark/benchmark.js | 18 ++- .../binomial/median/benchmark/benchmark.js | 18 ++- .../dists/binomial/mgf/benchmark/benchmark.js | 30 +++- .../binomial/mode/benchmark/benchmark.js | 10 +- .../mode/benchmark/benchmark.native.js | 8 +- .../dists/binomial/pmf/benchmark/benchmark.js | 30 +++- .../binomial/quantile/benchmark/benchmark.js | 30 +++- .../binomial/skewness/benchmark/benchmark.js | 18 ++- .../binomial/stdev/benchmark/benchmark.js | 18 ++- .../binomial/variance/benchmark/benchmark.js | 10 +- .../variance/benchmark/benchmark.native.js | 8 +- 16 files changed, 318 insertions(+), 115 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/benchmark.js index 8cb36f29f7eb..2a4bd4033ba9 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/cdf/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var cdf = require( './../lib' ); @@ -31,18 +32,26 @@ var cdf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var x; var y; var i; + len = 100; + x = new Float64Array( len ); + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 100.0 ); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 100.0; - n = ceil( randu()*100.0 ); - p = randu(); - y = cdf( x, n, p ); + y = cdf( x[ i % len ], n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -57,6 +66,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var mycdf; + var len; var n; var p; var x; @@ -66,11 +76,15 @@ bench( pkg+':factory', function benchmark( b ) { n = 80; p = 0.4; mycdf = cdf.factory( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 80.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu() * 80.0; - y = mycdf( x ); + y = mycdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/ctor/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/ctor/benchmark/benchmark.js index 78dbed9f704a..ac2fca49682a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/ctor/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/ctor/benchmark/benchmark.js @@ -21,9 +21,10 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); var EPS = require( '@stdlib/constants/float64/eps' ); var pkg = require( './../package.json' ).name; var Binomial = require( './../lib' ); @@ -33,15 +34,22 @@ var Binomial = require( './../lib' ); bench( pkg+'::instantiation', function benchmark( b ) { var dist; + var len; var n; var p; var i; + len = 100; + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + n[ i ] = discreteUniform( 1, 50 ); + p[ i ] = uniform( EPS, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - n = ceil( ( randu() * 50.0 ) + EPS ); - p = randu() + EPS; - dist = new Binomial( n, p ); + dist = new Binomial( n[ i % len ], p[ i % len ] ); if ( !( dist instanceof Binomial ) ) { b.fail( 'should return a distribution instance' ); } @@ -82,6 +90,7 @@ bench( pkg+'::get:n', function benchmark( b ) { bench( pkg+'::set:n', function benchmark( b ) { var dist; + var len; var n; var p; var y; @@ -90,12 +99,16 @@ bench( pkg+'::set:n', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + y = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + y[ i ] = discreteUniform( 1, 50 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = ceil( ( randu() * 50.0 ) + EPS ); - dist.n = y; - if ( dist.n !== y ) { + dist.n = y[ i % len ]; + if ( dist.n !== y[ i % len ] ) { b.fail( 'should return set value' ); } } @@ -135,6 +148,7 @@ bench( pkg+'::get:p', function benchmark( b ) { bench( pkg+'::set:p', function benchmark( b ) { var dist; + var len; var n; var p; var y; @@ -143,12 +157,16 @@ bench( pkg+'::set:p', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + y = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + y[ i ] = uniform( EPS, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = randu() + EPS; - dist.p = y; - if ( dist.p !== y ) { + dist.p = y[ i % len ]; + if ( dist.p !== y[ i % len ] ) { b.fail( 'should return set value' ); } } @@ -162,6 +180,8 @@ bench( pkg+'::set:p', function benchmark( b ) { bench( pkg+':kurtosis', function benchmark( b ) { var dist; + var len; + var x; var n; var p; var y; @@ -170,10 +190,15 @@ bench( pkg+':kurtosis', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 1, 100 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.n = ceil( ( 100.0*randu() ) + EPS ); + dist.n = x[ i % len ]; y = dist.kurtosis; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -189,6 +214,8 @@ bench( pkg+':kurtosis', function benchmark( b ) { bench( pkg+':mean', function benchmark( b ) { var dist; + var len; + var x; var n; var p; var y; @@ -197,10 +224,15 @@ bench( pkg+':mean', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 1, 100 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.n = ceil( ( 100.0*randu() ) + EPS ); + dist.n = x[ i % len ]; y = dist.mean; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -216,6 +248,8 @@ bench( pkg+':mean', function benchmark( b ) { bench( pkg+':mode', function benchmark( b ) { var dist; + var len; + var x; var n; var p; var y; @@ -224,10 +258,15 @@ bench( pkg+':mode', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 1, 100 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.n = ceil( ( 100.0*randu() ) + EPS ); + dist.n = x[ i % len ]; y = dist.mode; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -243,6 +282,8 @@ bench( pkg+':mode', function benchmark( b ) { bench( pkg+':skewness', function benchmark( b ) { var dist; + var len; + var x; var n; var p; var y; @@ -251,10 +292,15 @@ bench( pkg+':skewness', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 1, 100 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.n = ceil( ( 100.0*randu() ) + EPS ); + dist.n = x[ i % len ]; y = dist.skewness; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -270,6 +316,8 @@ bench( pkg+':skewness', function benchmark( b ) { bench( pkg+':stdev', function benchmark( b ) { var dist; + var len; + var x; var n; var p; var y; @@ -278,10 +326,15 @@ bench( pkg+':stdev', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 1, 100 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.n = ceil( ( 100.0*randu() ) + EPS ); + dist.n = x[ i % len ]; y = dist.stdev; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -297,6 +350,8 @@ bench( pkg+':stdev', function benchmark( b ) { bench( pkg+':variance', function benchmark( b ) { var dist; + var len; + var x; var n; var p; var y; @@ -305,10 +360,15 @@ bench( pkg+':variance', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 1, 100 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - dist.n = ceil( ( 100.0*randu() ) + EPS ); + dist.n = x[ i % len ]; y = dist.variance; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); @@ -324,6 +384,7 @@ bench( pkg+':variance', function benchmark( b ) { bench( pkg+':cdf', function benchmark( b ) { var dist; + var len; var n; var p; var x; @@ -333,11 +394,15 @@ bench( pkg+':cdf', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu(); - y = dist.cdf( x ); + y = dist.cdf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -352,6 +417,7 @@ bench( pkg+':cdf', function benchmark( b ) { bench( pkg+':logpmf', function benchmark( b ) { var dist; + var len; var n; var p; var x; @@ -361,11 +427,15 @@ bench( pkg+':logpmf', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 0, n ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ceil( randu() * n ); - y = dist.logpmf( x ); + y = dist.logpmf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -380,6 +450,7 @@ bench( pkg+':logpmf', function benchmark( b ) { bench( pkg+':mgf', function benchmark( b ) { var dist; + var len; var n; var p; var x; @@ -389,11 +460,15 @@ bench( pkg+':mgf', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu(); - y = dist.mgf( x ); + y = dist.mgf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -408,6 +483,7 @@ bench( pkg+':mgf', function benchmark( b ) { bench( pkg+':pmf', function benchmark( b ) { var dist; + var len; var n; var p; var x; @@ -417,11 +493,15 @@ bench( pkg+':pmf', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 0, n ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ceil( randu() * n ); - y = dist.pmf( x ); + y = dist.pmf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -436,6 +516,7 @@ bench( pkg+':pmf', function benchmark( b ) { bench( pkg+':quantile', function benchmark( b ) { var dist; + var len; var n; var p; var x; @@ -445,11 +526,15 @@ bench( pkg+':quantile', function benchmark( b ) { n = 40; p = 0.6; dist = new Binomial( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = randu(); - y = dist.quantile( x ); + y = dist.quantile( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/entropy/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/entropy/benchmark/benchmark.js index 7885de964da1..63028323aabf 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/entropy/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/entropy/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var entropy = require( './../lib' ); @@ -31,16 +32,23 @@ var entropy = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var y; var i; + len = 1000; + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - n = ceil( randu()*100.0 ); - p = randu(); - y = entropy( n, p ); + y = entropy( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/kurtosis/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/kurtosis/benchmark/benchmark.js index 841e56839288..d39e45eb0e51 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/kurtosis/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/kurtosis/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var kurtosis = require( './../lib' ); @@ -31,16 +32,23 @@ var kurtosis = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var y; var i; + len = 100; + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - n = ceil( randu()*100.0 ); - p = randu(); - y = kurtosis( n, p ); + y = kurtosis( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/benchmark.js index 2dddde82bcd9..6a94fc8014cd 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/logpmf/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var logpmf = require( './../lib' ); @@ -31,18 +32,26 @@ var logpmf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var x; var y; var i; + len = 100; + x = new Float64Array( len ); + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 0, 50 ); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ceil( randu()*50.0 ); - n = ceil( randu()*100.0 ); - p = randu(); - y = logpmf( x, n, p ); + y = logpmf( x[ i % len ], n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -57,6 +66,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var mypmf; + var len; var n; var p; var x; @@ -66,11 +76,15 @@ bench( pkg+':factory', function benchmark( b ) { n = 80; p = 0.4; mypmf = logpmf.factory( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 0, 80 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ceil( randu()*80.0 ); - y = mypmf( x ); + y = mypmf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/mean/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/mean/benchmark/benchmark.js index 9aade74b6382..39c828846525 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/mean/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/mean/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var mean = require( './../lib' ); @@ -31,16 +32,23 @@ var mean = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var y; var i; + len = 100; + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - n = ceil( randu()*100.0 ); - p = randu(); - y = mean( n, p ); + y = mean( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/median/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/median/benchmark/benchmark.js index c148c663f39b..8d1b4403e0be 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/median/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/median/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var median = require( './../lib' ); @@ -31,16 +32,23 @@ var median = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var y; var i; + len = 100; + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - n = ceil( randu()*100.0 ); - p = randu(); - y = median( n, p ); + y = median( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/mgf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/mgf/benchmark/benchmark.js index 1a375612b454..bec1226cc0dc 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/mgf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/mgf/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var mgf = require( './../lib' ); @@ -31,18 +32,26 @@ var mgf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var t; var y; var i; + len = 100; + t = new Float64Array( len ); + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + t[ i ] = uniform( 0.0, 5.0 ); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - t = randu()*5.0; - n = ceil( randu()*100.0 ); - p = randu(); - y = mgf( t, n, p ); + y = mgf( t[ i % len ], n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -57,6 +66,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var mymgf; + var len; var n; var p; var t; @@ -66,11 +76,15 @@ bench( pkg+':factory', function benchmark( b ) { n = 80; p = 0.4; mymgf = mgf.factory( n, p ); + len = 100; + t = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + t[ i ] = uniform( 0.0, 5.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - t = ( randu()*5.0 ); - y = mymgf( t ); + y = mymgf( t[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.js index df21b4a84188..5c653beb0725 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.js @@ -21,10 +21,10 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); var Int32Array = require( '@stdlib/array/int32' ); var Float64Array = require( '@stdlib/array/float64' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var mode = require( './../lib' ); @@ -43,13 +43,13 @@ bench( pkg, function benchmark( b ) { n = new Int32Array( len ); p = new Float64Array( len ); for ( i = 0; i < len; i++ ) { - n[ i ] = ceil( randu() * 100.0 ); - p[ i ] = randu(); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = mode( n[ i%len ], p[ i%len ] ); + y = mode( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.native.js index 6b7fe0d32f25..9138324b4981 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/mode/benchmark/benchmark.native.js @@ -25,8 +25,8 @@ var bench = require( '@stdlib/bench' ); var Int32Array = require( '@stdlib/array/int32' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; @@ -52,8 +52,8 @@ bench( pkg+'::native', opts, function benchmark( b ) { n = new Int32Array( len ); p = new Float64Array( len ); for ( i = 0; i < len; i++ ) { - n[ i ] = ceil( randu() * 100.0 ); - p[ i ] = randu(); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); } b.tic(); diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/benchmark.js index fa9d54c6b2cf..edc89b9eddb4 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/pmf/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var pmf = require( './../lib' ); @@ -31,18 +32,26 @@ var pmf = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var x; var y; var i; + len = 100; + x = new Float64Array( len ); + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 0, 50 ); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ceil( randu()*50.0 ); - n = ceil( randu()*100.0 ); - p = randu(); - y = pmf( x, n, p ); + y = pmf( x[ i % len ], n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -57,6 +66,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var mypmf; + var len; var n; var p; var x; @@ -66,11 +76,15 @@ bench( pkg+':factory', function benchmark( b ) { n = 80; p = 0.4; mypmf = pmf.factory( n, p ); + len = 100; + x = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + x[ i ] = discreteUniform( 0, 80 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ceil( randu()*80.0 ); - y = mypmf( x ); + y = mypmf( x[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/benchmark.js index a9ba012b83c1..2975cef275d9 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/quantile/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var quantile = require( './../lib' ); @@ -31,18 +32,26 @@ var quantile = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var r; var y; var i; + len = 100; + r = new Float64Array( len ); + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + r[ i ] = uniform( 0.0, 1.0 ); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - r = randu(); - n = ceil( randu()*100.0 ); - p = randu(); - y = quantile( r, n, p ); + y = quantile( r[ i % len ], n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -57,6 +66,7 @@ bench( pkg, function benchmark( b ) { bench( pkg+':factory', function benchmark( b ) { var myQuantile; + var len; var n; var p; var r; @@ -66,11 +76,15 @@ bench( pkg+':factory', function benchmark( b ) { n = 80; p = 0.4; myQuantile = quantile.factory( n, p ); + len = 100; + r = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + r[ i ] = uniform( 0.0, 1.0 ); + } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - r = randu(); - y = myQuantile( r ); + y = myQuantile( r[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/skewness/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/skewness/benchmark/benchmark.js index c1f4da885c79..91860089663a 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/skewness/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/skewness/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var skewness = require( './../lib' ); @@ -31,16 +32,23 @@ var skewness = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var y; var i; + len = 100; + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - n = ceil( randu()*100.0 ); - p = randu(); - y = skewness( n, p ); + y = skewness( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/stdev/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/stdev/benchmark/benchmark.js index 5b2ae301f23a..a3c58f2e4a3e 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/stdev/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/stdev/benchmark/benchmark.js @@ -21,8 +21,9 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var Float64Array = require( '@stdlib/array/float64' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var stdev = require( './../lib' ); @@ -31,16 +32,23 @@ var stdev = require( './../lib' ); // MAIN // bench( pkg, function benchmark( b ) { + var len; var n; var p; var y; var i; + len = 100; + n = new Float64Array( len ); + p = new Float64Array( len ); + for ( i = 0; i < len; i++ ) { + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); + } + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - n = ceil( randu()*100.0 ); - p = randu(); - y = stdev( n, p ); + y = stdev( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.js index a16c2394eb68..964694e69e8d 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.js @@ -21,10 +21,10 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); var Int32Array = require( '@stdlib/array/int32' ); var Float64Array = require( '@stdlib/array/float64' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var variance = require( './../lib' ); @@ -43,13 +43,13 @@ bench( pkg, function benchmark( b ) { n = new Int32Array( len ); p = new Float64Array( len ); for ( i = 0; i < len; i++ ) { - n[ i ] = ceil( randu() * 100.0 ); - p[ i ] = randu(); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); } b.tic(); for ( i = 0; i < b.iterations; i++ ) { - y = variance( n[ i%len ], p[ i%len ] ); + y = variance( n[ i % len ], p[ i % len ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.native.js index 4bff698fa4aa..4228293d4b30 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dists/binomial/variance/benchmark/benchmark.native.js @@ -25,8 +25,8 @@ var bench = require( '@stdlib/bench' ); var Int32Array = require( '@stdlib/array/int32' ); var Float64Array = require( '@stdlib/array/float64' ); var tryRequire = require( '@stdlib/utils/try-require' ); -var ceil = require( '@stdlib/math/base/special/ceil' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; @@ -52,8 +52,8 @@ bench( pkg+'::native', opts, function benchmark( b ) { n = new Int32Array( len ); p = new Float64Array( len ); for ( i = 0; i < len; i++ ) { - n[ i ] = ceil( randu() * 100.0 ); - p[ i ] = randu(); + n[ i ] = discreteUniform( 1, 100 ); + p[ i ] = uniform( 0.0, 1.0 ); } b.tic();