Skip to content

Commit 54e5f3f

Browse files
refactor: update benchmarks and tests in math/base/special/acosh
PR-URL: #5318 Reviewed-by: Athan Reines <kgryte@gmail.com>
1 parent ae26fbe commit 54e5f3f

File tree

8 files changed

+39
-24
lines changed

8 files changed

+39
-24
lines changed

lib/node_modules/@stdlib/math/base/special/acosh/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 acosh = require( './../lib' );
@@ -41,10 +41,11 @@ bench( pkg, function benchmark( b ) {
4141
var y;
4242
var i;
4343

44+
x = uniform( 100, 1.0, 100.0 );
45+
4446
b.tic();
4547
for ( i = 0; i < b.iterations; i++ ) {
46-
x = ( randu()*100.0 ) + 1.0;
47-
y = acosh( x );
48+
y = acosh( x[ i % x.length ] );
4849
if ( isnan( y ) ) {
4950
b.fail( 'should not return NaN' );
5051
}
@@ -62,10 +63,11 @@ bench( pkg+'::built-in', opts, function benchmark( b ) {
6263
var y;
6364
var i;
6465

66+
x = uniform( 100, 1.0, 100.0 );
67+
6568
b.tic();
6669
for ( i = 0; i < b.iterations; i++ ) {
67-
x = ( randu()*100.0 ) + 1.0;
68-
y = Math.acosh( x ); // eslint-disable-line stdlib/no-builtin-math
70+
y = Math.acosh( x[ i % x.length ] ); // eslint-disable-line stdlib/no-builtin-math
6971
if ( isnan( y ) ) {
7072
b.fail( 'should not return NaN' );
7173
}

lib/node_modules/@stdlib/math/base/special/acosh/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, 1.0, 100.0 );
47+
4648
b.tic();
4749
for ( i = 0; i < b.iterations; i++ ) {
48-
x = ( randu()*100.0 ) + 1.0;
49-
y = acosh( x );
50+
y = acosh( x[ i % x.length ] );
5051
if ( isnan( y ) ) {
5152
b.fail( 'should not return NaN' );
5253
}

lib/node_modules/@stdlib/math/base/special/acosh/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 ] = ( 100.0*rand_double() ) + 1.0;
100+
}
101+
98102
t = tic();
99103
for ( i = 0; i < ITERATIONS; i++ ) {
100-
x = ( 100.0*rand_double() ) + 1.0;
101-
y = acosh( x );
104+
y = acosh( x[ i % 100 ] );
102105
if ( y != y ) {
103106
printf( "should not return NaN\n" );
104107
break;

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,19 @@ static double rand_double( void ) {
9494
* @return elapsed time in seconds
9595
*/
9696
static double benchmark( void ) {
97+
double x[ 100 ];
9798
double elapsed;
98-
double x;
9999
double y;
100100
double t;
101101
int i;
102102

103+
for ( i = 0; i < 100; i++ ) {
104+
x[ i ] = ( 100.0*rand_double() ) + 1.0;
105+
}
106+
103107
t = tic();
104108
for ( i = 0; i < ITERATIONS; i++ ) {
105-
x = ( 100.0*rand_double() ) + 1.0;
106-
y = acosh( x );
109+
y = acosh( x[ i % 100 ] );
107110
if ( y != y ) {
108111
printf( "should not return NaN\n" );
109112
break;

lib/node_modules/@stdlib/math/base/special/acosh/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 ] = ( 100.0*rand_double() ) + 1.0;
101+
}
102+
99103
t = tic();
100104
for ( i = 0; i < ITERATIONS; i++ ) {
101-
x = ( 100.0*rand_double() ) + 1.0;
102-
y = stdlib_base_acosh( x );
105+
y = stdlib_base_acosh( x[ i % 100 ] );
103106
if ( y != y ) {
104107
printf( "should not return NaN\n" );
105108
break;

lib/node_modules/@stdlib/math/base/special/acosh/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( 1.0, 101.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::acosh( x );
106+
y = boost::math::acosh( x[ i % 100 ] );
104107
if ( y != y ) {
105108
printf( "should not return NaN\n" );
106109
break;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ tape( 'the function computes the hyperbolic arccosine for huge values', function
142142

143143
tape( 'the function returns `NaN` if provided `NaN`', function test( t ) {
144144
var v = acosh( NaN );
145-
t.equal( isnan( v ), true, 'returns NaN' );
145+
t.equal( isnan( v ), true, 'returns expected value' );
146146
t.end();
147147
});
148148

@@ -152,7 +152,7 @@ tape( 'the function returns `NaN` if provided value less than `1`', function tes
152152

153153
for ( i = 0; i < 1e3; i++ ) {
154154
v = -(randu()*1.0e6) + (1-EPS);
155-
t.equal( isnan( acosh( v ) ), true, 'returns NaN when provided '+v );
155+
t.equal( isnan( acosh( v ) ), true, 'returns expected value when provided '+v );
156156
}
157157
t.end();
158158
});

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ tape( 'the function computes the hyperbolic arccosine for huge values', opts, fu
151151

152152
tape( 'the function returns `NaN` if provided `NaN`', opts, function test( t ) {
153153
var v = acosh( NaN );
154-
t.equal( isnan( v ), true, 'returns NaN' );
154+
t.equal( isnan( v ), true, 'returns expected value' );
155155
t.end();
156156
});
157157

@@ -161,7 +161,7 @@ tape( 'the function returns `NaN` if provided value less than `1`', opts, functi
161161

162162
for ( i = 0; i < 1e3; i++ ) {
163163
v = -(randu()*1.0e6) + (1-EPS);
164-
t.equal( isnan( acosh( v ) ), true, 'returns NaN when provided '+v );
164+
t.equal( isnan( acosh( v ) ), true, 'returns expected value when provided '+v );
165165
}
166166
t.end();
167167
});

0 commit comments

Comments
 (0)