From c2c277c6313935f6e421fc9629c2977c1823b69e Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Thu, 30 Jan 2025 21:27:57 -0800 Subject: [PATCH 1/5] bench: move random number generation outside the benchmarking loops --- 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 --- --- .../base/special/abs2/benchmark/benchmark.js | 16 +++++++++++----- .../special/abs2/benchmark/benchmark.native.js | 9 ++++++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js index 37dd88e56709..33905ab8b4c2 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js @@ -21,7 +21,7 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var abs2 = require( './../lib' ); @@ -34,10 +34,13 @@ bench( pkg, function benchmark( b ) { var y; var i; + x = uniform( 100, -500.0, 500.0, { + 'dtype': 'generic' + }); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ( randu()*1000.0 ) - 500.0; - y = abs2( x ); + y = abs2( x[ i % x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } @@ -55,10 +58,13 @@ bench( pkg+'::built-in', function benchmark( b ) { var y; var i; + x = uniform( 100, -500.0, 500.0, { + 'dtype': 'generic' + }); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ( randu()*1000.0 ) - 500.0; - y = x * x; + y = x[ i % x.length ] * x[ i % x.length ]; if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js index 55e7c284b885..541ffe7b1f54 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js @@ -22,7 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -43,10 +43,13 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; + x = uniform( 100, -500.0, 500.0, { + 'dtype': 'float64' + }); + b.tic(); for ( i = 0; i < b.iterations; i++ ) { - x = ( randu()*1000.0 ) - 500.0; - y = abs2( x ); + y = abs2( x[ i % x.length ] ); if ( isnan( y ) ) { b.fail( 'should not return NaN' ); } From 100261abe1b43f283dc27538fc618becdd112251 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Sun, 2 Feb 2025 18:42:40 -0800 Subject: [PATCH 2/5] refactor: update benchmarks and test fixtures --- 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: passed - 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: missing_dependencies - 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: passed - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: passed - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: passed --- --- .../base/special/abs2/benchmark/benchmark.js | 10 +++------- .../special/abs2/benchmark/benchmark.native.js | 6 ++---- .../base/special/abs2/benchmark/c/benchmark.c | 9 ++++++--- .../@stdlib/math/base/special/abs2/test/test.js | 16 ++++++++-------- .../math/base/special/abs2/test/test.native.js | 16 ++++++++-------- 5 files changed, 27 insertions(+), 30 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js index 33905ab8b4c2..843e64438965 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.js @@ -21,7 +21,7 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/array/uniform' ); +var randu = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pkg = require( './../package.json' ).name; var abs2 = require( './../lib' ); @@ -34,9 +34,7 @@ bench( pkg, function benchmark( b ) { var y; var i; - x = uniform( 100, -500.0, 500.0, { - 'dtype': 'generic' - }); + x = randu( 100, -500.0, 500.0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { @@ -58,9 +56,7 @@ bench( pkg+'::built-in', function benchmark( b ) { var y; var i; - x = uniform( 100, -500.0, 500.0, { - 'dtype': 'generic' - }); + x = randu( 100, -500.0, 500.0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js index 541ffe7b1f54..1b7f2d28a02c 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/benchmark.native.js @@ -22,7 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/array/uniform' ); +var randu = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var tryRequire = require( '@stdlib/utils/try-require' ); var pkg = require( './../package.json' ).name; @@ -43,9 +43,7 @@ bench( pkg+'::native', opts, function benchmark( b ) { var y; var i; - x = uniform( 100, -500.0, 500.0, { - 'dtype': 'float64' - }); + x = randu( 100, -500.0, 500.0 ); b.tic(); for ( i = 0; i < b.iterations; i++ ) { diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/benchmark.c index 06087a8dbf84..5e2d574466ff 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/benchmark.c @@ -99,16 +99,19 @@ double abs2( double x ) { * @return elapsed time in seconds */ static double benchmark( void ) { + double x[ 100 ]; double elapsed; - double x; double y; double t; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = ( 1000.0 * rand_double() ) - 500.0; + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = ( 1000.0*rand_double() ) - 500.0; - y = abs2( x ); + y = abs2( x[ i % 100 ] ); if ( y != y ) { printf( "should not return NaN\n" ); break; diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/test/test.js b/lib/node_modules/@stdlib/math/base/special/abs2/test/test.js index 70669b033ee1..2b5de0844b20 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/abs2/test/test.js @@ -38,26 +38,26 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function computes the squared absolute value of a number', function test( t ) { - t.strictEqual( abs2( -2.0 ), 4.0, 'negative number' ); - t.strictEqual( abs2( 3.0 ), 9.0, 'positive number' ); - t.strictEqual( abs2( 0.0 ), 0.0, 'zero' ); - t.strictEqual( abs2( -PI ), PI*PI, 'pi' ); + t.strictEqual( abs2( -2.0 ), 4.0, 'returns expected value' ); + t.strictEqual( abs2( 3.0 ), 9.0, 'returns expected value' ); + t.strictEqual( abs2( 0.0 ), 0.0, 'returns expected value' ); + t.strictEqual( abs2( -PI ), PI*PI, 'returns expected value' ); t.end(); }); tape( 'the function computes the squared absolute value of negative zero', function test( t ) { - t.strictEqual( isPositiveZero( abs2( -0.0 ) ), true, 'returns positive zero' ); + t.strictEqual( isPositiveZero( abs2( -0.0 ) ), true, 'returns expected value' ); t.end(); }); tape( 'the function computes the squared absolute value of infinity', function test( t ) { - t.strictEqual( abs2( PINF ), PINF, 'returns +infinity' ); - t.strictEqual( abs2( NINF ), PINF, 'returns +infinity' ); + t.strictEqual( abs2( PINF ), PINF, 'returns expected value' ); + t.strictEqual( abs2( NINF ), PINF, 'returns expected value' ); t.end(); }); tape( 'if provided `NaN`, the function returns `NaN`', function test( t ) { var v = abs2( NaN ); - t.strictEqual( isnan( v ), true, 'returns NaN' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/abs2/test/test.native.js index 905eaf71cc31..31b644f603d6 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/abs2/test/test.native.js @@ -47,26 +47,26 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function computes the squared absolute value of a number', opts, function test( t ) { - t.strictEqual( abs2( -2.0 ), 4.0, 'negative number' ); - t.strictEqual( abs2( 3.0 ), 9.0, 'positive number' ); - t.strictEqual( abs2( 0.0 ), 0.0, 'zero' ); - t.strictEqual( abs2( -PI ), PI*PI, 'pi' ); + t.strictEqual( abs2( -2.0 ), 4.0, 'returns expected value' ); + t.strictEqual( abs2( 3.0 ), 9.0, 'returns expected value' ); + t.strictEqual( abs2( 0.0 ), 0.0, 'returns expected value' ); + t.strictEqual( abs2( -PI ), PI*PI, 'returns expected value' ); t.end(); }); tape( 'the function computes the squared absolute value of negative zero', opts, function test( t ) { - t.strictEqual( isPositiveZero( abs2( -0.0 ) ), true, 'returns positive zero' ); + t.strictEqual( isPositiveZero( abs2( -0.0 ) ), true, 'returns expected value' ); t.end(); }); tape( 'the function computes the squared absolute value of infinity', opts, function test( t ) { - t.strictEqual( abs2( PINF ), PINF, 'returns +infinity' ); - t.strictEqual( abs2( NINF ), PINF, 'returns +infinity' ); + t.strictEqual( abs2( PINF ), PINF, 'returns expected value' ); + t.strictEqual( abs2( NINF ), PINF, 'returns expected value' ); t.end(); }); tape( 'if provided `NaN`, the function returns `NaN`', opts, function test( t ) { var v = abs2( NaN ); - t.strictEqual( isnan( v ), true, 'returns NaN' ); + t.strictEqual( isnan( v ), true, 'returns expected value' ); t.end(); }); From 7c640b79a3e4e23cd132c8951481d262ea357db5 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Sun, 16 Feb 2025 20:44:06 -0800 Subject: [PATCH 3/5] bench: update native C benchmarks --- 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: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: missing_dependencies - 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: failed --- --- .../math/base/special/abs2/benchmark/c/native/benchmark.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c index 6e93e042cc9d..ee4e6e5e842c 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c @@ -90,16 +90,20 @@ static double rand_double( void ) { * @return elapsed time in seconds */ static double benchmark( void ) { + double x[ 100 ]; double elapsed; double x; double y; double t; int i; + for ( i = 0; i < 100; i++ ) { + x[ i ] = ( 1000.0 * rand_double() ) - 500.0; + } + t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - x = ( 1000.0*rand_double() ) - 500.0; - y = stdlib_base_abs2( x ); + y = abs2( x[ i % 100 ] ); if ( y != y ) { printf( "should not return NaN\n" ); break; From 3cc489740da67b232c3d38e491c7d82a0edcb432 Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Sun, 16 Feb 2025 20:46:05 -0800 Subject: [PATCH 4/5] bench: update native C benchmarks --- 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: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: missing_dependencies - 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: failed --- --- .../math/base/special/abs2/benchmark/c/native/benchmark.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c index ee4e6e5e842c..746faf31e56f 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c @@ -92,7 +92,6 @@ static double rand_double( void ) { static double benchmark( void ) { double x[ 100 ]; double elapsed; - double x; double y; double t; int i; From 906030d1121a66f7ff807fde62e4469eb79e042e Mon Sep 17 00:00:00 2001 From: Karan Anand Date: Sun, 16 Feb 2025 20:48:06 -0800 Subject: [PATCH 5/5] bench: update native C benchmarks --- 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: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: missing_dependencies - 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: passed - 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 --- --- .../math/base/special/abs2/benchmark/c/native/benchmark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c index 746faf31e56f..2e8e004df0ae 100644 --- a/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c +++ b/lib/node_modules/@stdlib/math/base/special/abs2/benchmark/c/native/benchmark.c @@ -102,7 +102,7 @@ static double benchmark( void ) { t = tic(); for ( i = 0; i < ITERATIONS; i++ ) { - y = abs2( x[ i % 100 ] ); + y = stdlib_base_abs2( x[ i % 100 ] ); if ( y != y ) { printf( "should not return NaN\n" ); break;