Skip to content

Commit 394de5a

Browse files
bench: update random value generation
PR-URL: #5786 Reviewed-by: Philipp Burckhardt <pburckhardt@outlook.com>
1 parent a74d773 commit 394de5a

File tree

29 files changed

+184
-133
lines changed

29 files changed

+184
-133
lines changed

lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/benchmark.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var uniform = require( '@stdlib/random/array/uniform' );
2525
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2626
var pkg = require( './../package.json' ).name;
2727
var sqrt = require( './../lib' );
@@ -34,10 +34,11 @@ bench( pkg, function benchmark( b ) {
3434
var y;
3535
var i;
3636

37+
x = uniform( 100, 0.0, 100000.0 );
38+
3739
b.tic();
3840
for ( i = 0; i < b.iterations; i++ ) {
39-
x = ( randu()*100000.0 ) - 0.0;
40-
y = sqrt( x );
41+
y = sqrt( x[ i % x.length ] );
4142
if ( isnan( y ) ) {
4243
b.fail( 'should not return NaN' );
4344
}
@@ -55,10 +56,11 @@ bench( pkg+'::built-in', function benchmark( b ) {
5556
var y;
5657
var i;
5758

59+
x = uniform( 100, 0.0, 100000.0 );
60+
5861
b.tic();
5962
for ( i = 0; i < b.iterations; i++ ) {
60-
x = ( randu()*100000.0 ) - 0.0;
61-
y = Math.sqrt( x ); // eslint-disable-line stdlib/no-builtin-math
63+
y = Math.sqrt( x[ i % x.length ] ); // eslint-disable-line stdlib/no-builtin-math
6264
if ( isnan( y ) ) {
6365
b.fail( 'should not return NaN' );
6466
}

lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/benchmark.native.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
var resolve = require( 'path' ).resolve;
2424
var bench = require( '@stdlib/bench' );
25-
var randu = require( '@stdlib/random/base/randu' );
25+
var uniform = require( '@stdlib/random/array/uniform' );
2626
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2727
var tryRequire = require( '@stdlib/utils/try-require' );
2828
var pkg = require( './../package.json' ).name;
@@ -43,10 +43,11 @@ bench( pkg+'::native', opts, function benchmark( b ) {
4343
var y;
4444
var i;
4545

46+
x = uniform( 100, 0.0, 100000.0 );
47+
4648
b.tic();
4749
for ( i = 0; i < b.iterations; i++ ) {
48-
x = ( randu()*100000.0 ) - 0.0;
49-
y = sqrt( x );
50+
y = sqrt( x[ i % x.length ] );
5051
if ( isnan( y ) ) {
5152
b.fail( 'should not return NaN' );
5253
}

lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/c/benchmark.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,19 @@ static double rand_double( void ) {
8989
* @return elapsed time in seconds
9090
*/
9191
static double benchmark( void ) {
92+
double x[ 100 ];
9293
double elapsed;
93-
double x;
9494
double y;
9595
double t;
9696
int i;
9797

98+
for ( i = 0; i < 100; i++ ) {
99+
x[ i ] = rand_double() * 100000.0;
100+
}
101+
98102
t = tic();
99103
for ( i = 0; i < ITERATIONS; i++ ) {
100-
x = rand_double() * 100000.0;
101-
y = sqrt( x );
104+
y = sqrt( x[ i%100 ] );
102105
if ( y != y ) {
103106
printf( "should not return NaN\n" );
104107
break;

lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/c/cephes/benchmark.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,16 +96,19 @@ static double rand_double( void ) {
9696
* @return elapsed time in seconds
9797
*/
9898
static double benchmark( void ) {
99+
double x[ 100 ];
99100
double elapsed;
100-
double x;
101101
double y;
102102
double t;
103103
int i;
104104

105+
for ( i = 0; i < 100; i++ ) {
106+
x[ i ] = rand_double() * 100000.0;
107+
}
108+
105109
t = tic();
106110
for ( i = 0; i < ITERATIONS; i++ ) {
107-
x = rand_double() * 100000.0;
108-
y = sqrt( x );
111+
y = sqrt( x[ i%100 ] );
109112
if ( y != y ) {
110113
printf( "should not return NaN\n" );
111114
break;

lib/node_modules/@stdlib/math/base/special/sqrt/benchmark/c/native/benchmark.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,19 @@ static double rand_double( void ) {
9090
* @return elapsed time in seconds
9191
*/
9292
static double benchmark( void ) {
93+
double x[ 100 ];
9394
double elapsed;
94-
double x;
9595
double y;
9696
double t;
9797
int i;
9898

99+
for ( i = 0; i < 100; i++ ) {
100+
x[ i ] = rand_double() * 100000.0;
101+
}
102+
99103
t = tic();
100104
for ( i = 0; i < ITERATIONS; i++ ) {
101-
x = rand_double() * 100000.0;
102-
y = stdlib_base_sqrt( x );
105+
y = stdlib_base_sqrt( x[ i%100 ] );
103106
if ( y != y ) {
104107
printf( "should not return NaN\n" );
105108
break;

lib/node_modules/@stdlib/math/base/special/sqrt/test/test.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -237,48 +237,48 @@ tape( 'the function evaluates the principal square root of `x` (huge positive)',
237237

238238
tape( 'the function returns `NaN` if provided `NaN`', function test( t ) {
239239
var v = sqrt( NaN );
240-
t.equal( isnan( v ), true, 'returns NaN' );
240+
t.equal( isnan( v ), true, 'returns expected value' );
241241
t.end();
242242
});
243243

244244
tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) {
245245
var v = sqrt( PINF );
246-
t.equal( v, PINF, 'returns +infinity' );
246+
t.equal( v, PINF, 'returns expected value' );
247247
t.end();
248248
});
249249

250250
tape( 'the function returns `+0` if provided `+0`', function test( t ) {
251251
var v = sqrt( +0.0 );
252-
t.equal( isPositiveZero( v ), true, 'returns 0' );
252+
t.equal( isPositiveZero( v ), true, 'returns expected value' );
253253
t.end();
254254
});
255255

256256
tape( 'the function returns `-0` if provided `-0`', function test( t ) {
257257
var v = sqrt( -0.0 );
258-
t.equal( isNegativeZero( v ), true, 'returns -0' );
258+
t.equal( isNegativeZero( v ), true, 'returns expected value' );
259259
t.end();
260260
});
261261

262262
tape( 'the function returns `NaN` if provided a negative number', function test( t ) {
263263
var v = sqrt( -4.0 );
264-
t.equal( isnan( v ), true, 'returns NaN' );
264+
t.equal( isnan( v ), true, 'returns expected value' );
265265
t.end();
266266
});
267267

268268
tape( 'the function returns `NaN` if provided `NaN`', function test( t ) {
269269
var v = sqrt( NaN );
270-
t.equal( isnan( v ), true, 'returns NaN' );
270+
t.equal( isnan( v ), true, 'returns expected value' );
271271
t.end();
272272
});
273273

274274
tape( 'the function returns `NaN` if provided `-infinity`', function test( t ) {
275275
var v = sqrt( NINF );
276-
t.equal( isnan( v ), true, 'returns NaN' );
276+
t.equal( isnan( v ), true, 'returns expected value' );
277277
t.end();
278278
});
279279

280280
tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) {
281281
var v = sqrt( PINF );
282-
t.equal( v, PINF, 'returns +infinity' );
282+
t.equal( v, PINF, 'returns expected value' );
283283
t.end();
284284
});

lib/node_modules/@stdlib/math/base/special/sqrt/test/test.native.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -246,48 +246,48 @@ tape( 'the function evaluates the principal square root of `x` (huge positive)',
246246

247247
tape( 'the function returns `NaN` if provided `NaN`', opts, function test( t ) {
248248
var v = sqrt( NaN );
249-
t.equal( isnan( v ), true, 'returns NaN' );
249+
t.equal( isnan( v ), true, 'returns expected value' );
250250
t.end();
251251
});
252252

253253
tape( 'the function returns `+infinity` if provided `+infinity`', opts, function test( t ) {
254254
var v = sqrt( PINF );
255-
t.equal( v, PINF, 'returns +infinity' );
255+
t.equal( v, PINF, 'returns expected value' );
256256
t.end();
257257
});
258258

259259
tape( 'the function returns `+0` if provided `+0`', opts, function test( t ) {
260260
var v = sqrt( +0.0 );
261-
t.equal( isPositiveZero( v ), true, 'returns 0' );
261+
t.equal( isPositiveZero( v ), true, 'returns expected value' );
262262
t.end();
263263
});
264264

265265
tape( 'the function returns `-0` if provided `-0`', opts, function test( t ) {
266266
var v = sqrt( -0.0 );
267-
t.equal( isNegativeZero( v ), true, 'returns -0' );
267+
t.equal( isNegativeZero( v ), true, 'returns expected value' );
268268
t.end();
269269
});
270270

271271
tape( 'the function returns `NaN` if provided a negative number', opts, function test( t ) {
272272
var v = sqrt( -4.0 );
273-
t.equal( isnan( v ), true, 'returns NaN' );
273+
t.equal( isnan( v ), true, 'returns expected value' );
274274
t.end();
275275
});
276276

277277
tape( 'the function returns `NaN` if provided `NaN`', opts, function test( t ) {
278278
var v = sqrt( NaN );
279-
t.equal( isnan( v ), true, 'returns NaN' );
279+
t.equal( isnan( v ), true, 'returns expected value' );
280280
t.end();
281281
});
282282

283283
tape( 'the function returns `NaN` if provided `-infinity`', opts, function test( t ) {
284284
var v = sqrt( NINF );
285-
t.equal( isnan( v ), true, 'returns NaN' );
285+
t.equal( isnan( v ), true, 'returns expected value' );
286286
t.end();
287287
});
288288

289289
tape( 'the function returns `+infinity` if provided `+infinity`', opts, function test( t ) {
290290
var v = sqrt( PINF );
291-
t.equal( v, PINF, 'returns +infinity' );
291+
t.equal( v, PINF, 'returns expected value' );
292292
t.end();
293293
});

lib/node_modules/@stdlib/math/base/special/sqrt1pm1/benchmark/benchmark.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var uniform = require( '@stdlib/random/array/uniform' );
2525
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2626
var pkg = require( './../package.json' ).name;
2727
var sqrt1pm1 = require( './../lib' );
@@ -34,10 +34,11 @@ bench( pkg, function benchmark( b ) {
3434
var y;
3535
var i;
3636

37+
x = uniform( 100, 0.0, 100000.0 );
38+
3739
b.tic();
3840
for ( i = 0; i < b.iterations; i++ ) {
39-
x = ( randu()*100000.0 ) - 0.0;
40-
y = sqrt1pm1( x );
41+
y = sqrt1pm1( x[ i % x.length ] );
4142
if ( isnan( y ) ) {
4243
b.fail( 'should not return NaN' );
4344
}

lib/node_modules/@stdlib/math/base/special/sqrt1pm1/benchmark/benchmark.native.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
var resolve = require( 'path' ).resolve;
2424
var bench = require( '@stdlib/bench' );
25-
var randu = require( '@stdlib/random/base/randu' );
25+
var uniform = require( '@stdlib/random/array/uniform' );
2626
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2727
var tryRequire = require( '@stdlib/utils/try-require' );
2828
var pkg = require( './../package.json' ).name;
@@ -43,10 +43,11 @@ bench( pkg+'::native', opts, function benchmark( b ) {
4343
var y;
4444
var i;
4545

46+
x = uniform( 100, 0.0, 100000.0 );
47+
4648
b.tic();
4749
for ( i = 0; i < b.iterations; i++ ) {
48-
x = ( randu()*100000.0 ) - 0.0;
49-
y = sqrt1pm1( x );
50+
y = sqrt1pm1( x[ i % x.length ] );
5051
if ( isnan( y ) ) {
5152
b.fail( 'should not return NaN' );
5253
}

lib/node_modules/@stdlib/math/base/special/sqrt1pm1/benchmark/c/native/benchmark.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,19 @@ static double rand_double( void ) {
9090
* @return elapsed time in seconds
9191
*/
9292
static double benchmark( void ) {
93+
double x[ 100 ];
9394
double elapsed;
94-
double x;
9595
double y;
9696
double t;
9797
int i;
9898

99+
for ( i = 0; i < 100; i++ ) {
100+
x[ i ] = rand_double() * 100000.0;
101+
}
102+
99103
t = tic();
100104
for ( i = 0; i < ITERATIONS; i++ ) {
101-
x = ( rand_double()*100000.0 ) - 0.0;
102-
y = stdlib_base_sqrt1pm1( x );
105+
y = stdlib_base_sqrt1pm1( x[ i%100 ] );
103106
if ( y != y ) {
104107
printf( "should not return NaN\n" );
105108
break;

lib/node_modules/@stdlib/math/base/special/sqrt1pm1/benchmark/cpp/boost/benchmark.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ double tic() {
8585
* @return elapsed time in seconds
8686
*/
8787
double benchmark() {
88+
double x[ 100 ];
8889
double elapsed;
89-
double x;
9090
double y;
9191
double t;
9292
int i;
@@ -97,10 +97,13 @@ double benchmark() {
9797
// Define a uniform distribution for generating pseudorandom numbers as "doubles" between a minimum value (inclusive) and a maximum value (exclusive):
9898
uniform_real_distribution<> randu( 0.0, 100000.0 );
9999

100+
for ( i = 0; i < 100; i++ ) {
101+
x[ i ] = randu( rng );
102+
}
103+
100104
t = tic();
101105
for ( i = 0; i < ITERATIONS; i++ ) {
102-
x = randu( rng );
103-
y = boost::math::sqrt1pm1( x );
106+
y = boost::math::sqrt1pm1( x[ i%100 ] );
104107
if ( y != y ) {
105108
printf( "should not return NaN\n" );
106109
break;

lib/node_modules/@stdlib/math/base/special/sqrt1pm1/test/test.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,35 +44,35 @@ tape( 'main export is a function', function test( t ) {
4444

4545
tape( 'the function returns `NaN` if provided `NaN`', function test( t ) {
4646
var v = sqrt1pm1( NaN );
47-
t.equal( isnan( v ), true, 'returns NaN' );
47+
t.equal( isnan( v ), true, 'returns expected value' );
4848
t.end();
4949
});
5050

5151
tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) {
5252
var v = sqrt1pm1( PINF );
53-
t.equal( v, PINF, 'returns +infinity' );
53+
t.equal( v, PINF, 'returns expected value' );
5454
t.end();
5555
});
5656

5757
tape( 'the function returns `0` if provided `0`', function test( t ) {
5858
var v = sqrt1pm1( 0.0 );
59-
t.equal( v, 0.0, 'returns zero' );
59+
t.equal( v, 0.0, 'returns expected value' );
6060
t.end();
6161
});
6262

6363
tape( 'the function returns `-1` if provided `-1`', function test( t ) {
6464
var v = sqrt1pm1( -1.0 );
65-
t.equal( v, -1.0, 'returns negative one' );
65+
t.equal( v, -1.0, 'returns expected value' );
6666
t.end();
6767
});
6868

6969
tape( 'the function returns `NaN` if provided a `x < -1`', function test( t ) {
7070
var v = sqrt1pm1( -1.5 );
71-
t.equal( isnan( v ), true, 'returns NaN' );
71+
t.equal( isnan( v ), true, 'returns expected value' );
7272
sqrt1pm1( -2.0 );
73-
t.equal( isnan( v ), true, 'returns NaN' );
73+
t.equal( isnan( v ), true, 'returns expected value' );
7474
sqrt1pm1( -3.0 );
75-
t.equal( isnan( v ), true, 'returns NaN' );
75+
t.equal( isnan( v ), true, 'returns expected value' );
7676
t.end();
7777
});
7878

0 commit comments

Comments
 (0)