21
21
// MODULES //
22
22
23
23
var 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' ) ;
25
26
var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
26
27
var EPS = require ( '@stdlib/constants/float64/eps' ) ;
27
28
var pkg = require ( './../package.json' ) . name ;
@@ -34,13 +35,20 @@ bench( pkg+'::instantiation', function benchmark( b ) {
34
35
var alpha ;
35
36
var beta ;
36
37
var dist ;
38
+ var len ;
37
39
var i ;
38
40
41
+ len = 100 ;
42
+ alpha = new Float64Array ( len ) ;
43
+ beta = new Float64Array ( len ) ;
44
+ for ( i = 0 ; i < len ; i ++ ) {
45
+ alpha [ i ] = uniform ( EPS , 10.0 ) ;
46
+ beta [ i ] = uniform ( EPS , 10.0 ) ;
47
+ }
48
+
39
49
b . tic ( ) ;
40
50
for ( i = 0 ; i < b . iterations ; i ++ ) {
41
- alpha = ( randu ( ) * 10.0 ) + EPS ;
42
- beta = ( randu ( ) * 10.0 ) + EPS ;
43
- dist = new BetaPrime ( alpha , beta ) ;
51
+ dist = new BetaPrime ( alpha [ i % len ] , beta [ i % len ] ) ;
44
52
if ( ! ( dist instanceof BetaPrime ) ) {
45
53
b . fail ( 'should return a distribution instance' ) ;
46
54
}
@@ -83,18 +91,23 @@ bench( pkg+'::set:alpha', function benchmark( b ) {
83
91
var alpha ;
84
92
var beta ;
85
93
var dist ;
94
+ var len ;
86
95
var y ;
87
96
var i ;
88
97
89
98
alpha = 100.56789 ;
90
99
beta = 55.54321 ;
91
100
dist = new BetaPrime ( alpha , beta ) ;
101
+ len = 100 ;
102
+ y = new Float64Array ( len ) ;
103
+ for ( i = 0 ; i < len ; i ++ ) {
104
+ y [ i ] = uniform ( EPS , 100.0 ) ;
105
+ }
92
106
93
107
b . tic ( ) ;
94
108
for ( i = 0 ; i < b . iterations ; i ++ ) {
95
- y = ( 100.0 * randu ( ) ) + EPS ;
96
- dist . alpha = y ;
97
- if ( dist . alpha !== y ) {
109
+ dist . alpha = y [ i % len ] ;
110
+ if ( dist . alpha !== y [ i % len ] ) {
98
111
b . fail ( 'should return set value' ) ;
99
112
}
100
113
}
@@ -136,18 +149,23 @@ bench( pkg+'::set:beta', function benchmark( b ) {
136
149
var alpha ;
137
150
var beta ;
138
151
var dist ;
152
+ var len ;
139
153
var y ;
140
154
var i ;
141
155
142
156
alpha = 100.56789 ;
143
157
beta = 55.54321 ;
144
158
dist = new BetaPrime ( alpha , beta ) ;
159
+ len = 100 ;
160
+ y = new Float64Array ( len ) ;
161
+ for ( i = 0 ; i < len ; i ++ ) {
162
+ y [ i ] = uniform ( EPS , 100.0 ) ;
163
+ }
145
164
146
165
b . tic ( ) ;
147
166
for ( i = 0 ; i < b . iterations ; i ++ ) {
148
- y = ( 100.0 * randu ( ) ) + EPS ;
149
- dist . beta = y ;
150
- if ( dist . beta !== y ) {
167
+ dist . beta = y [ i % len ] ;
168
+ if ( dist . beta !== y [ i % len ] ) {
151
169
b . fail ( 'should return set value' ) ;
152
170
}
153
171
}
@@ -163,16 +181,23 @@ bench( pkg+':kurtosis', function benchmark( b ) {
163
181
var alpha ;
164
182
var beta ;
165
183
var dist ;
184
+ var len ;
185
+ var x ;
166
186
var y ;
167
187
var i ;
168
188
169
189
alpha = 100.56789 ;
170
190
beta = 55.54321 ;
171
191
dist = new BetaPrime ( alpha , beta ) ;
192
+ len = 100 ;
193
+ x = new Float64Array ( len ) ;
194
+ for ( i = 0 ; i < len ; i ++ ) {
195
+ x [ i ] = uniform ( EPS , 100.0 ) ;
196
+ }
172
197
173
198
b . tic ( ) ;
174
199
for ( i = 0 ; i < b . iterations ; i ++ ) {
175
- dist . alpha = ( 100.0 * randu ( ) ) + EPS ;
200
+ dist . alpha = x [ i % len ] ;
176
201
y = dist . kurtosis ;
177
202
if ( isnan ( y ) ) {
178
203
b . fail ( 'should not return NaN' ) ;
@@ -190,16 +215,23 @@ bench( pkg+':mean', function benchmark( b ) {
190
215
var alpha ;
191
216
var beta ;
192
217
var dist ;
218
+ var len ;
219
+ var x ;
193
220
var y ;
194
221
var i ;
195
222
196
223
alpha = 100.56789 ;
197
224
beta = 55.54321 ;
198
225
dist = new BetaPrime ( alpha , beta ) ;
226
+ len = 100 ;
227
+ x = new Float64Array ( len ) ;
228
+ for ( i = 0 ; i < len ; i ++ ) {
229
+ x [ i ] = uniform ( EPS , 100.0 ) ;
230
+ }
199
231
200
232
b . tic ( ) ;
201
233
for ( i = 0 ; i < b . iterations ; i ++ ) {
202
- dist . alpha = ( 100.0 * randu ( ) ) + EPS ;
234
+ dist . alpha = x [ i % len ] ;
203
235
y = dist . mean ;
204
236
if ( isnan ( y ) ) {
205
237
b . fail ( 'should not return NaN' ) ;
@@ -217,16 +249,23 @@ bench( pkg+':mode', function benchmark( b ) {
217
249
var alpha ;
218
250
var beta ;
219
251
var dist ;
252
+ var len ;
253
+ var x ;
220
254
var y ;
221
255
var i ;
222
256
223
257
alpha = 100.56789 ;
224
258
beta = 55.54321 ;
225
259
dist = new BetaPrime ( alpha , beta ) ;
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
+ }
226
265
227
266
b . tic ( ) ;
228
267
for ( i = 0 ; i < b . iterations ; i ++ ) {
229
- dist . alpha = ( 100.0 * randu ( ) ) + 1.0 + EPS ;
268
+ dist . alpha = x [ i % len ] ;
230
269
y = dist . mode ;
231
270
if ( isnan ( y ) ) {
232
271
b . fail ( 'should not return NaN' ) ;
@@ -244,16 +283,23 @@ bench( pkg+':skewness', function benchmark( b ) {
244
283
var alpha ;
245
284
var beta ;
246
285
var dist ;
286
+ var len ;
287
+ var x ;
247
288
var y ;
248
289
var i ;
249
290
250
291
alpha = 100.56789 ;
251
292
beta = 55.54321 ;
252
293
dist = new BetaPrime ( alpha , beta ) ;
294
+ len = 100 ;
295
+ x = new Float64Array ( len ) ;
296
+ for ( i = 0 ; i < len ; i ++ ) {
297
+ x [ i ] = uniform ( EPS , 100.0 ) ;
298
+ }
253
299
254
300
b . tic ( ) ;
255
301
for ( i = 0 ; i < b . iterations ; i ++ ) {
256
- dist . alpha = ( 100.0 * randu ( ) ) + EPS ;
302
+ dist . alpha = x [ i % len ] ;
257
303
y = dist . skewness ;
258
304
if ( isnan ( y ) ) {
259
305
b . fail ( 'should not return NaN' ) ;
@@ -271,16 +317,23 @@ bench( pkg+':stdev', function benchmark( b ) {
271
317
var alpha ;
272
318
var beta ;
273
319
var dist ;
320
+ var len ;
321
+ var x ;
274
322
var y ;
275
323
var i ;
276
324
277
325
alpha = 100.56789 ;
278
326
beta = 55.54321 ;
279
327
dist = new BetaPrime ( alpha , beta ) ;
328
+ len = 100 ;
329
+ x = new Float64Array ( len ) ;
330
+ for ( i = 0 ; i < len ; i ++ ) {
331
+ x [ i ] = uniform ( EPS , 100.0 ) ;
332
+ }
280
333
281
334
b . tic ( ) ;
282
335
for ( i = 0 ; i < b . iterations ; i ++ ) {
283
- dist . alpha = ( 100.0 * randu ( ) ) + EPS ;
336
+ dist . alpha = x [ i % len ] ;
284
337
y = dist . stdev ;
285
338
if ( isnan ( y ) ) {
286
339
b . fail ( 'should not return NaN' ) ;
@@ -298,18 +351,23 @@ bench( pkg+':cdf', function benchmark( b ) {
298
351
var alpha ;
299
352
var beta ;
300
353
var dist ;
354
+ var len ;
301
355
var x ;
302
356
var y ;
303
357
var i ;
304
358
305
359
alpha = 100.56789 ;
306
360
beta = 55.54321 ;
307
361
dist = new BetaPrime ( alpha , beta ) ;
362
+ len = 100 ;
363
+ x = new Float64Array ( len ) ;
364
+ for ( i = 0 ; i < len ; i ++ ) {
365
+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
366
+ }
308
367
309
368
b . tic ( ) ;
310
369
for ( i = 0 ; i < b . iterations ; i ++ ) {
311
- x = randu ( ) ;
312
- y = dist . cdf ( x ) ;
370
+ y = dist . cdf ( x [ i % len ] ) ;
313
371
if ( isnan ( y ) ) {
314
372
b . fail ( 'should not return NaN' ) ;
315
373
}
@@ -326,18 +384,23 @@ bench( pkg+':logpdf', function benchmark( b ) {
326
384
var alpha ;
327
385
var beta ;
328
386
var dist ;
387
+ var len ;
329
388
var x ;
330
389
var y ;
331
390
var i ;
332
391
333
392
alpha = 100.56789 ;
334
393
beta = 55.54321 ;
335
394
dist = new BetaPrime ( alpha , beta ) ;
395
+ len = 100 ;
396
+ x = new Float64Array ( len ) ;
397
+ for ( i = 0 ; i < len ; i ++ ) {
398
+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
399
+ }
336
400
337
401
b . tic ( ) ;
338
402
for ( i = 0 ; i < b . iterations ; i ++ ) {
339
- x = randu ( ) ;
340
- y = dist . logpdf ( x ) ;
403
+ y = dist . logpdf ( x [ i % len ] ) ;
341
404
if ( isnan ( y ) ) {
342
405
b . fail ( 'should not return NaN' ) ;
343
406
}
@@ -354,18 +417,23 @@ bench( pkg+':pdf', function benchmark( b ) {
354
417
var alpha ;
355
418
var beta ;
356
419
var dist ;
420
+ var len ;
357
421
var x ;
358
422
var y ;
359
423
var i ;
360
424
361
425
alpha = 100.56789 ;
362
426
beta = 55.54321 ;
363
427
dist = new BetaPrime ( alpha , beta ) ;
428
+ len = 100 ;
429
+ x = new Float64Array ( len ) ;
430
+ for ( i = 0 ; i < len ; i ++ ) {
431
+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
432
+ }
364
433
365
434
b . tic ( ) ;
366
435
for ( i = 0 ; i < b . iterations ; i ++ ) {
367
- x = randu ( ) ;
368
- y = dist . pdf ( x ) ;
436
+ y = dist . pdf ( x [ i % len ] ) ;
369
437
if ( isnan ( y ) ) {
370
438
b . fail ( 'should not return NaN' ) ;
371
439
}
@@ -382,18 +450,23 @@ bench( pkg+':quantile', function benchmark( b ) {
382
450
var alpha ;
383
451
var beta ;
384
452
var dist ;
453
+ var len ;
385
454
var x ;
386
455
var y ;
387
456
var i ;
388
457
389
458
alpha = 100.56789 ;
390
459
beta = 55.54321 ;
391
460
dist = new BetaPrime ( alpha , beta ) ;
461
+ len = 100 ;
462
+ x = new Float64Array ( len ) ;
463
+ for ( i = 0 ; i < len ; i ++ ) {
464
+ x [ i ] = uniform ( 0.0 , 1.0 ) ;
465
+ }
392
466
393
467
b . tic ( ) ;
394
468
for ( i = 0 ; i < b . iterations ; i ++ ) {
395
- x = randu ( ) ;
396
- y = dist . quantile ( x ) ;
469
+ y = dist . quantile ( x [ i % len ] ) ;
397
470
if ( isnan ( y ) ) {
398
471
b . fail ( 'should not return NaN' ) ;
399
472
}
0 commit comments