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 ;
@@ -33,14 +34,21 @@ var Cauchy = require( './../lib' );
33
34
bench ( pkg + '::instantiation' , function benchmark ( b ) {
34
35
var gamma ;
35
36
var dist ;
37
+ var len ;
36
38
var x0 ;
37
39
var i ;
38
40
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
+
39
49
b . tic ( ) ;
40
50
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 ] ) ;
44
52
if ( ! ( dist instanceof Cauchy ) ) {
45
53
b . fail ( 'should return a distribution instance' ) ;
46
54
}
@@ -82,19 +90,24 @@ bench( pkg+'::get:x0', function benchmark( b ) {
82
90
bench ( pkg + '::set:x0' , function benchmark ( b ) {
83
91
var gamma ;
84
92
var dist ;
93
+ var len ;
85
94
var x0 ;
86
95
var y ;
87
96
var i ;
88
97
89
98
x0 = 10.0 ;
90
99
gamma = 6.0 ;
91
100
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
+ }
92
106
93
107
b . tic ( ) ;
94
108
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 ] ) {
98
111
b . fail ( 'should return set value' ) ;
99
112
}
100
113
}
@@ -135,19 +148,24 @@ bench( pkg+'::get:gamma', function benchmark( b ) {
135
148
bench ( pkg + '::set:gamma' , function benchmark ( b ) {
136
149
var gamma ;
137
150
var dist ;
151
+ var len ;
138
152
var x0 ;
139
153
var y ;
140
154
var i ;
141
155
142
156
x0 = 10.0 ;
143
157
gamma = 6.0 ;
144
158
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
+ }
145
164
146
165
b . tic ( ) ;
147
166
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 ] ) {
151
169
b . fail ( 'should return set value' ) ;
152
170
}
153
171
}
@@ -162,17 +180,24 @@ bench( pkg+'::set:gamma', function benchmark( b ) {
162
180
bench ( pkg + ':entropy' , function benchmark ( b ) {
163
181
var gamma ;
164
182
var dist ;
183
+ var len ;
165
184
var x0 ;
185
+ var x ;
166
186
var y ;
167
187
var i ;
168
188
169
189
x0 = 10.0 ;
170
190
gamma = 6.0 ;
171
191
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
+ }
172
197
173
198
b . tic ( ) ;
174
199
for ( i = 0 ; i < b . iterations ; i ++ ) {
175
- dist . x0 = ( 100.0 * randu ( ) ) + EPS ;
200
+ dist . x0 = x [ i % len ] ;
176
201
y = dist . entropy ;
177
202
if ( isnan ( y ) ) {
178
203
b . fail ( 'should not return NaN' ) ;
@@ -189,17 +214,24 @@ bench( pkg+':entropy', function benchmark( b ) {
189
214
bench ( pkg + ':median' , function benchmark ( b ) {
190
215
var gamma ;
191
216
var dist ;
217
+ var len ;
192
218
var x0 ;
219
+ var x ;
193
220
var y ;
194
221
var i ;
195
222
196
223
x0 = 10.0 ;
197
224
gamma = 6.0 ;
198
225
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
+ }
199
231
200
232
b . tic ( ) ;
201
233
for ( i = 0 ; i < b . iterations ; i ++ ) {
202
- dist . x0 = ( 100.0 * randu ( ) ) + EPS ;
234
+ dist . x0 = x [ i % len ] ;
203
235
y = dist . median ;
204
236
if ( isnan ( y ) ) {
205
237
b . fail ( 'should not return NaN' ) ;
@@ -216,17 +248,24 @@ bench( pkg+':median', function benchmark( b ) {
216
248
bench ( pkg + ':mode' , function benchmark ( b ) {
217
249
var gamma ;
218
250
var dist ;
251
+ var len ;
219
252
var x0 ;
253
+ var x ;
220
254
var y ;
221
255
var i ;
222
256
223
257
x0 = 10.0 ;
224
258
gamma = 6.0 ;
225
259
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
+ }
226
265
227
266
b . tic ( ) ;
228
267
for ( i = 0 ; i < b . iterations ; i ++ ) {
229
- dist . x0 = ( 100.0 * randu ( ) ) + 1.0 + EPS ;
268
+ dist . x0 = x [ i % len ] ;
230
269
y = dist . mode ;
231
270
if ( isnan ( y ) ) {
232
271
b . fail ( 'should not return NaN' ) ;
@@ -243,6 +282,7 @@ bench( pkg+':mode', function benchmark( b ) {
243
282
bench ( pkg + ':cdf' , function benchmark ( b ) {
244
283
var gamma ;
245
284
var dist ;
285
+ var len ;
246
286
var x0 ;
247
287
var x ;
248
288
var y ;
@@ -251,11 +291,15 @@ bench( pkg+':cdf', function benchmark( b ) {
251
291
x0 = 10.0 ;
252
292
gamma = 6.0 ;
253
293
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
+ }
254
299
255
300
b . tic ( ) ;
256
301
for ( i = 0 ; i < b . iterations ; i ++ ) {
257
- x = randu ( ) ;
258
- y = dist . cdf ( x ) ;
302
+ y = dist . cdf ( x [ i % len ] ) ;
259
303
if ( isnan ( y ) ) {
260
304
b . fail ( 'should not return NaN' ) ;
261
305
}
@@ -271,6 +315,7 @@ bench( pkg+':cdf', function benchmark( b ) {
271
315
bench ( pkg + ':logcdf' , function benchmark ( b ) {
272
316
var gamma ;
273
317
var dist ;
318
+ var len ;
274
319
var x0 ;
275
320
var x ;
276
321
var y ;
@@ -279,11 +324,15 @@ bench( pkg+':logcdf', function benchmark( b ) {
279
324
x0 = 10.0 ;
280
325
gamma = 6.0 ;
281
326
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
+ }
282
332
283
333
b . tic ( ) ;
284
334
for ( i = 0 ; i < b . iterations ; i ++ ) {
285
- x = randu ( ) ;
286
- y = dist . logcdf ( x ) ;
335
+ y = dist . logcdf ( x [ i % len ] ) ;
287
336
if ( isnan ( y ) ) {
288
337
b . fail ( 'should not return NaN' ) ;
289
338
}
@@ -299,6 +348,7 @@ bench( pkg+':logcdf', function benchmark( b ) {
299
348
bench ( pkg + ':logpdf' , function benchmark ( b ) {
300
349
var gamma ;
301
350
var dist ;
351
+ var len ;
302
352
var x0 ;
303
353
var x ;
304
354
var y ;
@@ -307,11 +357,15 @@ bench( pkg+':logpdf', function benchmark( b ) {
307
357
x0 = 10.0 ;
308
358
gamma = 6.0 ;
309
359
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
+ }
310
365
311
366
b . tic ( ) ;
312
367
for ( i = 0 ; i < b . iterations ; i ++ ) {
313
- x = randu ( ) ;
314
- y = dist . logpdf ( x ) ;
368
+ y = dist . logpdf ( x [ i % len ] ) ;
315
369
if ( isnan ( y ) ) {
316
370
b . fail ( 'should not return NaN' ) ;
317
371
}
@@ -327,6 +381,7 @@ bench( pkg+':logpdf', function benchmark( b ) {
327
381
bench ( pkg + ':pdf' , function benchmark ( b ) {
328
382
var gamma ;
329
383
var dist ;
384
+ var len ;
330
385
var x0 ;
331
386
var x ;
332
387
var y ;
@@ -335,11 +390,15 @@ bench( pkg+':pdf', function benchmark( b ) {
335
390
x0 = 10.0 ;
336
391
gamma = 6.0 ;
337
392
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
+ }
338
398
339
399
b . tic ( ) ;
340
400
for ( i = 0 ; i < b . iterations ; i ++ ) {
341
- x = randu ( ) ;
342
- y = dist . pdf ( x ) ;
401
+ y = dist . pdf ( x [ i % len ] ) ;
343
402
if ( isnan ( y ) ) {
344
403
b . fail ( 'should not return NaN' ) ;
345
404
}
@@ -355,6 +414,7 @@ bench( pkg+':pdf', function benchmark( b ) {
355
414
bench ( pkg + ':quantile' , function benchmark ( b ) {
356
415
var gamma ;
357
416
var dist ;
417
+ var len ;
358
418
var x0 ;
359
419
var x ;
360
420
var y ;
@@ -363,11 +423,15 @@ bench( pkg+':quantile', function benchmark( b ) {
363
423
x0 = 10.0 ;
364
424
gamma = 6.0 ;
365
425
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
+ }
366
431
367
432
b . tic ( ) ;
368
433
for ( i = 0 ; i < b . iterations ; i ++ ) {
369
- x = randu ( ) ;
370
- y = dist . quantile ( x ) ;
434
+ y = dist . quantile ( x [ i % len ] ) ;
371
435
if ( isnan ( y ) ) {
372
436
b . fail ( 'should not return NaN' ) ;
373
437
}
0 commit comments