21
21
// MODULES //
22
22
23
23
var bench = require ( '@stdlib/bench' ) ;
24
- var round = require ( '@stdlib/math/base/special/round' ) ;
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,20 +32,29 @@ 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 K ;
36
38
var n ;
37
39
var x ;
38
40
var y ;
39
41
var i ;
40
42
43
+ len = 100 ;
44
+ x = new Float64Array ( len ) ;
45
+ N = new Float64Array ( len ) ;
46
+ K = new Float64Array ( len ) ;
47
+ n = new Float64Array ( len ) ;
48
+ for ( i = 0 ; i < len ; i ++ ) {
49
+ x [ i ] = discreteUniform ( 1 , 50 ) ;
50
+ N [ i ] = discreteUniform ( 1 , 100 ) ;
51
+ K [ i ] = discreteUniform ( 1 , N [ i ] ) ;
52
+ n [ i ] = discreteUniform ( 1 , N [ i ] ) ;
53
+ }
54
+
41
55
b . tic ( ) ;
42
56
for ( i = 0 ; i < b . iterations ; i ++ ) {
43
- x = round ( randu ( ) * 50.0 ) ;
44
- N = round ( randu ( ) * 100.0 ) ;
45
- K = round ( randu ( ) * N ) ;
46
- n = round ( randu ( ) * N ) ;
47
- y = cdf ( x , N , K , n ) ;
57
+ y = cdf ( x [ i % len ] , N [ i % len ] , K [ i % len ] , n [ i % len ] ) ;
48
58
if ( isnan ( y ) ) {
49
59
b . fail ( 'should not return NaN' ) ;
50
60
}
@@ -59,22 +69,27 @@ bench( pkg, function benchmark( b ) {
59
69
60
70
bench ( pkg + ':factory' , function benchmark ( b ) {
61
71
var mycdf ;
72
+ var len ;
62
73
var N ;
63
74
var K ;
64
75
var n ;
65
76
var x ;
66
77
var y ;
67
78
var i ;
68
79
69
- N = round ( randu ( ) * 100.0 ) ;
70
- K = round ( randu ( ) * N ) ;
71
- n = round ( randu ( ) * N ) ;
80
+ len = 100 ;
81
+ N = discreteUniform ( 1 , 100 ) ;
82
+ K = discreteUniform ( 1 , N ) ;
83
+ n = discreteUniform ( 1 , N ) ;
72
84
mycdf = cdf . factory ( N , K , n ) ;
85
+ x = new Float64Array ( len ) ;
86
+ for ( i = 0 ; i < len ; i ++ ) {
87
+ x [ i ] = uniform ( 0.0 , 40.0 ) ;
88
+ }
73
89
74
90
b . tic ( ) ;
75
91
for ( i = 0 ; i < b . iterations ; i ++ ) {
76
- x = randu ( ) * 40.0 ;
77
- y = mycdf ( x ) ;
92
+ y = mycdf ( x [ i % len ] ) ;
78
93
if ( isnan ( y ) ) {
79
94
b . fail ( 'should not return NaN' ) ;
80
95
}
0 commit comments