21
21
// MODULES //
22
22
23
23
var bench = require ( '@stdlib/bench' ) ;
24
- var ceil = require ( '@stdlib/math/base/special/ceil' ) ;
25
- var randu = require ( '@stdlib/random/base/randu' ) ;
24
+ var Float64Array = require ( '@stdlib/array/float64' ) ;
25
+ var uniform = require ( '@stdlib/random/base/uniform' ) ;
26
+ var discreteUniform = require ( '@stdlib/random/base/discrete-uniform' ) ;
26
27
var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
27
28
var pkg = require ( './../package.json' ) . name ;
28
29
var cdf = require ( './../lib' ) ;
@@ -31,18 +32,26 @@ var cdf = require( './../lib' );
31
32
// MAIN //
32
33
33
34
bench ( pkg , function benchmark ( b ) {
35
+ var len ;
34
36
var n ;
35
37
var p ;
36
38
var x ;
37
39
var y ;
38
40
var i ;
39
41
42
+ len = 100 ;
43
+ x = new Float64Array ( len ) ;
44
+ n = new Float64Array ( len ) ;
45
+ p = new Float64Array ( len ) ;
46
+ for ( i = 0 ; i < len ; i ++ ) {
47
+ x [ i ] = uniform ( 0.0 , 100.0 ) ;
48
+ n [ i ] = discreteUniform ( 1 , 100 ) ;
49
+ p [ i ] = uniform ( 0.0 , 1.0 ) ;
50
+ }
51
+
40
52
b . tic ( ) ;
41
53
for ( i = 0 ; i < b . iterations ; i ++ ) {
42
- x = randu ( ) * 100.0 ;
43
- n = ceil ( randu ( ) * 100.0 ) ;
44
- p = randu ( ) ;
45
- y = cdf ( x , n , p ) ;
54
+ y = cdf ( x [ i % len ] , n [ i % len ] , p [ i % len ] ) ;
46
55
if ( isnan ( y ) ) {
47
56
b . fail ( 'should not return NaN' ) ;
48
57
}
@@ -57,6 +66,7 @@ bench( pkg, function benchmark( b ) {
57
66
58
67
bench ( pkg + ':factory' , function benchmark ( b ) {
59
68
var mycdf ;
69
+ var len ;
60
70
var n ;
61
71
var p ;
62
72
var x ;
@@ -66,11 +76,15 @@ bench( pkg+':factory', function benchmark( b ) {
66
76
n = 80 ;
67
77
p = 0.4 ;
68
78
mycdf = cdf . factory ( n , p ) ;
79
+ len = 100 ;
80
+ x = new Float64Array ( len ) ;
81
+ for ( i = 0 ; i < len ; i ++ ) {
82
+ x [ i ] = uniform ( 0.0 , 80.0 ) ;
83
+ }
69
84
70
85
b . tic ( ) ;
71
86
for ( i = 0 ; i < b . iterations ; i ++ ) {
72
- x = randu ( ) * 80.0 ;
73
- y = mycdf ( x ) ;
87
+ y = mycdf ( x [ i % len ] ) ;
74
88
if ( isnan ( y ) ) {
75
89
b . fail ( 'should not return NaN' ) ;
76
90
}
0 commit comments