2121// MODULES //
2222
2323var bench = require ( '@stdlib/bench' ) ;
24- var randu = require ( '@stdlib/random/base/randu' ) ;
24+ var Float64Array = require ( '@stdlib/array/float64' ) ;
25+ var uniform = require ( '@stdlib/random/base/uniform' ) ;
2526var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
2627var EPS = require ( '@stdlib/constants/float64/eps' ) ;
2728var pkg = require ( './../package.json' ) . name ;
@@ -33,14 +34,21 @@ var Cauchy = require( './../lib' );
3334bench ( pkg + '::instantiation' , function benchmark ( b ) {
3435 var gamma ;
3536 var dist ;
37+ var len ;
3638 var x0 ;
3739 var i ;
3840
41+ len = 100 ;
42+ x0 = new Float64Array ( len ) ;
43+ gamma = new Float64Array ( len ) ;
44+ for ( i = 0 ; i < len ; i ++ ) {
45+ x0 [ i ] = uniform ( EPS , 10.0 ) ;
46+ gamma [ i ] = uniform ( EPS , 10.0 ) ;
47+ }
48+
3949 b . tic ( ) ;
4050 for ( i = 0 ; i < b . iterations ; i ++ ) {
41- x0 = ( randu ( ) * 10.0 ) + EPS ;
42- gamma = ( randu ( ) * 10.0 ) + EPS ;
43- dist = new Cauchy ( x0 , gamma ) ;
51+ dist = new Cauchy ( x0 [ i % len ] , gamma [ i % len ] ) ;
4452 if ( ! ( dist instanceof Cauchy ) ) {
4553 b . fail ( 'should return a distribution instance' ) ;
4654 }
@@ -82,19 +90,24 @@ bench( pkg+'::get:x0', function benchmark( b ) {
8290bench ( pkg + '::set:x0' , function benchmark ( b ) {
8391 var gamma ;
8492 var dist ;
93+ var len ;
8594 var x0 ;
8695 var y ;
8796 var i ;
8897
8998 x0 = 10.0 ;
9099 gamma = 6.0 ;
91100 dist = new Cauchy ( x0 , gamma ) ;
101+ len = 100 ;
102+ y = new Float64Array ( len ) ;
103+ for ( i = 0 ; i < len ; i ++ ) {
104+ y [ i ] = uniform ( EPS , 100.0 ) ;
105+ }
92106
93107 b . tic ( ) ;
94108 for ( i = 0 ; i < b . iterations ; i ++ ) {
95- y = ( 100.0 * randu ( ) ) + EPS ;
96- dist . x0 = y ;
97- if ( dist . x0 !== y ) {
109+ dist . x0 = y [ i % len ] ;
110+ if ( dist . x0 !== y [ i % len ] ) {
98111 b . fail ( 'should return set value' ) ;
99112 }
100113 }
@@ -135,19 +148,24 @@ bench( pkg+'::get:gamma', function benchmark( b ) {
135148bench ( pkg + '::set:gamma' , function benchmark ( b ) {
136149 var gamma ;
137150 var dist ;
151+ var len ;
138152 var x0 ;
139153 var y ;
140154 var i ;
141155
142156 x0 = 10.0 ;
143157 gamma = 6.0 ;
144158 dist = new Cauchy ( x0 , gamma ) ;
159+ len = 100 ;
160+ y = new Float64Array ( len ) ;
161+ for ( i = 0 ; i < len ; i ++ ) {
162+ y [ i ] = uniform ( EPS , 100.0 ) ;
163+ }
145164
146165 b . tic ( ) ;
147166 for ( i = 0 ; i < b . iterations ; i ++ ) {
148- y = ( 100.0 * randu ( ) ) + EPS ;
149- dist . gamma = y ;
150- if ( dist . gamma !== y ) {
167+ dist . gamma = y [ i % len ] ;
168+ if ( dist . gamma !== y [ i % len ] ) {
151169 b . fail ( 'should return set value' ) ;
152170 }
153171 }
@@ -162,17 +180,24 @@ bench( pkg+'::set:gamma', function benchmark( b ) {
162180bench ( pkg + ':entropy' , function benchmark ( b ) {
163181 var gamma ;
164182 var dist ;
183+ var len ;
165184 var x0 ;
185+ var x ;
166186 var y ;
167187 var i ;
168188
169189 x0 = 10.0 ;
170190 gamma = 6.0 ;
171191 dist = new Cauchy ( x0 , gamma ) ;
192+ len = 100 ;
193+ x = new Float64Array ( len ) ;
194+ for ( i = 0 ; i < len ; i ++ ) {
195+ x [ i ] = uniform ( EPS , 100.0 ) ;
196+ }
172197
173198 b . tic ( ) ;
174199 for ( i = 0 ; i < b . iterations ; i ++ ) {
175- dist . x0 = ( 100.0 * randu ( ) ) + EPS ;
200+ dist . x0 = x [ i % len ] ;
176201 y = dist . entropy ;
177202 if ( isnan ( y ) ) {
178203 b . fail ( 'should not return NaN' ) ;
@@ -189,17 +214,24 @@ bench( pkg+':entropy', function benchmark( b ) {
189214bench ( pkg + ':median' , function benchmark ( b ) {
190215 var gamma ;
191216 var dist ;
217+ var len ;
192218 var x0 ;
219+ var x ;
193220 var y ;
194221 var i ;
195222
196223 x0 = 10.0 ;
197224 gamma = 6.0 ;
198225 dist = new Cauchy ( x0 , gamma ) ;
226+ len = 100 ;
227+ x = new Float64Array ( len ) ;
228+ for ( i = 0 ; i < len ; i ++ ) {
229+ x [ i ] = uniform ( EPS , 100.0 ) ;
230+ }
199231
200232 b . tic ( ) ;
201233 for ( i = 0 ; i < b . iterations ; i ++ ) {
202- dist . x0 = ( 100.0 * randu ( ) ) + EPS ;
234+ dist . x0 = x [ i % len ] ;
203235 y = dist . median ;
204236 if ( isnan ( y ) ) {
205237 b . fail ( 'should not return NaN' ) ;
@@ -216,17 +248,24 @@ bench( pkg+':median', function benchmark( b ) {
216248bench ( pkg + ':mode' , function benchmark ( b ) {
217249 var gamma ;
218250 var dist ;
251+ var len ;
219252 var x0 ;
253+ var x ;
220254 var y ;
221255 var i ;
222256
223257 x0 = 10.0 ;
224258 gamma = 6.0 ;
225259 dist = new Cauchy ( x0 , gamma ) ;
260+ len = 100 ;
261+ x = new Float64Array ( len ) ;
262+ for ( i = 0 ; i < len ; i ++ ) {
263+ x [ i ] = uniform ( 1.0 + EPS , 100.0 ) ;
264+ }
226265
227266 b . tic ( ) ;
228267 for ( i = 0 ; i < b . iterations ; i ++ ) {
229- dist . x0 = ( 100.0 * randu ( ) ) + 1.0 + EPS ;
268+ dist . x0 = x [ i % len ] ;
230269 y = dist . mode ;
231270 if ( isnan ( y ) ) {
232271 b . fail ( 'should not return NaN' ) ;
@@ -243,6 +282,7 @@ bench( pkg+':mode', function benchmark( b ) {
243282bench ( pkg + ':cdf' , function benchmark ( b ) {
244283 var gamma ;
245284 var dist ;
285+ var len ;
246286 var x0 ;
247287 var x ;
248288 var y ;
@@ -251,11 +291,15 @@ bench( pkg+':cdf', function benchmark( b ) {
251291 x0 = 10.0 ;
252292 gamma = 6.0 ;
253293 dist = new Cauchy ( x0 , gamma ) ;
294+ len = 100 ;
295+ x = new Float64Array ( len ) ;
296+ for ( i = 0 ; i < len ; i ++ ) {
297+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
298+ }
254299
255300 b . tic ( ) ;
256301 for ( i = 0 ; i < b . iterations ; i ++ ) {
257- x = randu ( ) ;
258- y = dist . cdf ( x ) ;
302+ y = dist . cdf ( x [ i % len ] ) ;
259303 if ( isnan ( y ) ) {
260304 b . fail ( 'should not return NaN' ) ;
261305 }
@@ -271,6 +315,7 @@ bench( pkg+':cdf', function benchmark( b ) {
271315bench ( pkg + ':logcdf' , function benchmark ( b ) {
272316 var gamma ;
273317 var dist ;
318+ var len ;
274319 var x0 ;
275320 var x ;
276321 var y ;
@@ -279,11 +324,15 @@ bench( pkg+':logcdf', function benchmark( b ) {
279324 x0 = 10.0 ;
280325 gamma = 6.0 ;
281326 dist = new Cauchy ( x0 , gamma ) ;
327+ len = 100 ;
328+ x = new Float64Array ( len ) ;
329+ for ( i = 0 ; i < len ; i ++ ) {
330+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
331+ }
282332
283333 b . tic ( ) ;
284334 for ( i = 0 ; i < b . iterations ; i ++ ) {
285- x = randu ( ) ;
286- y = dist . logcdf ( x ) ;
335+ y = dist . logcdf ( x [ i % len ] ) ;
287336 if ( isnan ( y ) ) {
288337 b . fail ( 'should not return NaN' ) ;
289338 }
@@ -299,6 +348,7 @@ bench( pkg+':logcdf', function benchmark( b ) {
299348bench ( pkg + ':logpdf' , function benchmark ( b ) {
300349 var gamma ;
301350 var dist ;
351+ var len ;
302352 var x0 ;
303353 var x ;
304354 var y ;
@@ -307,11 +357,15 @@ bench( pkg+':logpdf', function benchmark( b ) {
307357 x0 = 10.0 ;
308358 gamma = 6.0 ;
309359 dist = new Cauchy ( x0 , gamma ) ;
360+ len = 100 ;
361+ x = new Float64Array ( len ) ;
362+ for ( i = 0 ; i < len ; i ++ ) {
363+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
364+ }
310365
311366 b . tic ( ) ;
312367 for ( i = 0 ; i < b . iterations ; i ++ ) {
313- x = randu ( ) ;
314- y = dist . logpdf ( x ) ;
368+ y = dist . logpdf ( x [ i % len ] ) ;
315369 if ( isnan ( y ) ) {
316370 b . fail ( 'should not return NaN' ) ;
317371 }
@@ -327,6 +381,7 @@ bench( pkg+':logpdf', function benchmark( b ) {
327381bench ( pkg + ':pdf' , function benchmark ( b ) {
328382 var gamma ;
329383 var dist ;
384+ var len ;
330385 var x0 ;
331386 var x ;
332387 var y ;
@@ -335,11 +390,15 @@ bench( pkg+':pdf', function benchmark( b ) {
335390 x0 = 10.0 ;
336391 gamma = 6.0 ;
337392 dist = new Cauchy ( x0 , gamma ) ;
393+ len = 100 ;
394+ x = new Float64Array ( len ) ;
395+ for ( i = 0 ; i < len ; i ++ ) {
396+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
397+ }
338398
339399 b . tic ( ) ;
340400 for ( i = 0 ; i < b . iterations ; i ++ ) {
341- x = randu ( ) ;
342- y = dist . pdf ( x ) ;
401+ y = dist . pdf ( x [ i % len ] ) ;
343402 if ( isnan ( y ) ) {
344403 b . fail ( 'should not return NaN' ) ;
345404 }
@@ -355,6 +414,7 @@ bench( pkg+':pdf', function benchmark( b ) {
355414bench ( pkg + ':quantile' , function benchmark ( b ) {
356415 var gamma ;
357416 var dist ;
417+ var len ;
358418 var x0 ;
359419 var x ;
360420 var y ;
@@ -363,11 +423,15 @@ bench( pkg+':quantile', function benchmark( b ) {
363423 x0 = 10.0 ;
364424 gamma = 6.0 ;
365425 dist = new Cauchy ( x0 , gamma ) ;
426+ len = 100 ;
427+ x = new Float64Array ( len ) ;
428+ for ( i = 0 ; i < len ; i ++ ) {
429+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
430+ }
366431
367432 b . tic ( ) ;
368433 for ( i = 0 ; i < b . iterations ; i ++ ) {
369- x = randu ( ) ;
370- y = dist . quantile ( x ) ;
434+ y = dist . quantile ( x [ i % len ] ) ;
371435 if ( isnan ( y ) ) {
372436 b . fail ( 'should not return NaN' ) ;
373437 }
0 commit comments