2323var resolve = require ( 'path' ) . resolve ;
2424var tape = require ( 'tape' ) ;
2525var tryRequire = require ( '@stdlib/utils/try-require' ) ;
26- var abs = require ( '@stdlib/math/base/special/abs' ) ;
2726var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
27+ var abs = require ( '@stdlib/math/base/special/abs' ) ;
2828var PINF = require ( '@stdlib/constants/float64/pinf' ) ;
29- var NINF = require ( '@stdlib/constants/float64/ninf' ) ;
3029var EPS = require ( '@stdlib/constants/float64/eps' ) ;
3130
3231
32+ // FIXTURES //
33+
34+ var data = require ( './fixtures/julia/data.json' ) ;
35+
36+
3337// VARIABLES //
3438
3539var kurtosis = tryRequire ( resolve ( __dirname , './../lib/native.js' ) ) ;
@@ -38,11 +42,6 @@ var opts = {
3842} ;
3943
4044
41- // FIXTURES //
42-
43- var data = require ( './fixtures/julia/data.json' ) ;
44-
45-
4645// TESTS //
4746
4847tape ( 'main export is a function' , opts , function test ( t ) {
@@ -61,141 +60,67 @@ tape( 'if provided `NaN` for any parameter, the function returns `NaN`', opts, f
6160 v = kurtosis ( 20.0 , 10.0 , NaN ) ;
6261 t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
6362
64- v = kurtosis ( 20.0 , 10.0 , NaN ) ;
65- t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
66-
6763 t . end ( ) ;
6864} ) ;
6965
70- tape ( 'if provided `N <= 0`, the function returns `NaN`' , opts , function test ( t ) {
71- var y ;
72-
73- y = kurtosis ( - 1.0 , 5.0 , 2.0 ) ;
74- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
66+ tape ( 'if provided an `N` which is not a nonnegative integer, the function returns `NaN`' , opts , function test ( t ) {
67+ var v ;
7568
76- y = kurtosis ( 0.0 , 5 .0, 2.0 ) ;
77- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
69+ v = kurtosis ( 10.5 , 4 .0, 2.0 ) ;
70+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
7871
79- y = kurtosis ( NINF , 5 .0, 2.0 ) ;
80- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
72+ v = kurtosis ( - 2.0 , 4 .0, 2.0 ) ;
73+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
8174
82- y = kurtosis ( NINF , PINF , 2.0 ) ;
83- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
75+ v = kurtosis ( - 1.0 , 4.0 , 2.0 ) ;
76+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
8477
85- y = kurtosis ( NINF , NINF , 0 .0 ) ;
86- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
78+ v = kurtosis ( 20.5 , 10.0 , 5 .0 ) ;
79+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
8780
88- y = kurtosis ( NINF , NaN , 0 .0 ) ;
89- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
81+ v = kurtosis ( PINF , 10.0 , 5 .0 ) ;
82+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
9083
9184 t . end ( ) ;
9285} ) ;
9386
94- tape ( 'if provided `K <= 0` , the function returns `NaN`' , opts , function test ( t ) {
87+ tape ( 'if provided an `K` which is not a nonnegative integer , the function returns `NaN`' , opts , function test ( t ) {
9588 var y ;
9689
97- y = kurtosis ( 10.0 , 5.0 , - 1.0 ) ;
98- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
99-
100- y = kurtosis ( 10.0 , 5.0 , 0.0 ) ;
101- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
102-
103- y = kurtosis ( 1.0 , 2.0 , NINF ) ;
104- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
105-
106- y = kurtosis ( PINF , NINF , 2.0 ) ;
107- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
108-
109- y = kurtosis ( 10.0 , - 1.0 , 2.0 ) ;
90+ y = kurtosis ( 20.0 , 3.5 , 10.0 ) ;
11091 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
11192
112- y = kurtosis ( 10 .0, 0 .0, 2 .0 ) ;
93+ y = kurtosis ( 20 .0, - 2 .0, 10 .0 ) ;
11394 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
11495
115- y = kurtosis ( 1 .0, NINF , 2 .0 ) ;
96+ y = kurtosis ( 20 .0, - 1.0 , 10 .0 ) ;
11697 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
11798
118- y = kurtosis ( PINF , NINF , 2 .0 ) ;
99+ y = kurtosis ( 20.0 , 2.5 , 10 .0 ) ;
119100 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
120101
121- y = kurtosis ( NINF , NINF , 0.0 ) ;
122- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
123-
124- y = kurtosis ( NaN , NINF , 0.0 ) ;
125- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
126-
127- t . end ( ) ;
128- } ) ;
129-
130- tape ( 'if provided `n <= 0`, the function returns `NaN`' , opts , function test ( t ) {
131- var y ;
132-
133- y = kurtosis ( 10.0 , 5.0 , - 1.0 ) ;
134- t . ok ( isnan ( y ) , 'should return NaN' ) ;
135-
136- y = kurtosis ( 10.0 , 5.0 , 0.0 ) ;
137- t . ok ( isnan ( y ) , 'should return NaN' ) ;
138-
139- y = kurtosis ( 1.0 , 2.0 , NINF ) ;
140- t . ok ( isnan ( y ) , 'should return NaN' ) ;
141-
142- y = kurtosis ( PINF , NINF , 2.0 ) ;
143- t . ok ( isnan ( y ) , 'should return NaN' ) ;
144-
145- y = kurtosis ( NINF , NINF , 0.0 ) ;
146- t . ok ( isnan ( y ) , 'should return NaN' ) ;
147-
148- y = kurtosis ( NaN , NINF , 0.0 ) ;
149- t . ok ( isnan ( y ) , 'should return NaN' ) ;
150-
151- t . end ( ) ;
152- } ) ;
153-
154- tape ( 'if provided `K > N`, the function returns `NaN`' , opts , function test ( t ) {
155- var y = kurtosis ( 10.0 , 12.0 , 5.0 ) ;
156- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
157-
158- y = kurtosis ( 5.0 , 10.0 , 2.0 ) ;
159- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
160-
161- t . end ( ) ;
162- } ) ;
163-
164- tape ( 'if provided `n > N`, the function returns `NaN`' , opts , function test ( t ) {
165- var y = kurtosis ( 10.0 , 5.0 , 12.0 ) ;
166- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
167-
168- y = kurtosis ( 8.0 , 3.0 , 10.0 ) ;
102+ y = kurtosis ( 20.0 , PINF , 10.0 ) ;
169103 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
170104
171105 t . end ( ) ;
172106} ) ;
173107
174- tape ( 'if provided `N <= 3` , the function returns `NaN` (denominator would be zero) ' , opts , function test ( t ) {
108+ tape ( 'if provided an `n` which is not a nonnegative integer , the function returns `NaN`' , opts , function test ( t ) {
175109 var y ;
176110
177- y = kurtosis ( 3 .0, 1 .0, 1.0 ) ;
111+ y = kurtosis ( 40 .0, 20 .0, 3.5 ) ;
178112 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
179113
180- y = kurtosis ( 2 .0, 1 .0, 1 .0 ) ;
114+ y = kurtosis ( 40 .0, 20 .0, - 2 .0 ) ;
181115 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
182116
183- y = kurtosis ( 1 .0, 1 .0, 1.0 ) ;
117+ y = kurtosis ( 40 .0, 20 .0, - 1.0 ) ;
184118 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
185119
186- t . end ( ) ;
187- } ) ;
188-
189- tape ( 'if provided non-integer parameters, the function returns `NaN`' , opts , function test ( t ) {
190- var y ;
191-
192- y = kurtosis ( 10.5 , 5.0 , 2.0 ) ;
120+ y = kurtosis ( 40.0 , 20.0 , 2.5 ) ;
193121 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
194122
195- y = kurtosis ( 10.0 , 5.5 , 2.0 ) ;
196- t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
197-
198- y = kurtosis ( 10.0 , 5.0 , 2.5 ) ;
123+ y = kurtosis ( 40.0 , 20.0 , PINF ) ;
199124 t . strictEqual ( isnan ( y ) , true , 'returns expected value' ) ;
200125
201126 t . end ( ) ;
@@ -208,8 +133,8 @@ tape( 'the function returns the excess kurtosis of a hypergeometric distribution
208133 var N ;
209134 var K ;
210135 var n ;
211- var i ;
212136 var y ;
137+ var i ;
213138
214139 expected = data . expected ;
215140 N = data . N ;
@@ -221,7 +146,7 @@ tape( 'the function returns the excess kurtosis of a hypergeometric distribution
221146 t . strictEqual ( y , expected [ i ] , 'N: ' + N [ i ] + ', K: ' + K [ i ] + ', n: ' + n [ i ] + ', y: ' + y + ', expected: ' + expected [ i ] ) ;
222147 } else {
223148 delta = abs ( y - expected [ i ] ) ;
224- tol = 2 .0 * EPS * abs ( expected [ i ] ) ;
149+ tol = 1 .0 * EPS * abs ( expected [ i ] ) ;
225150 t . ok ( delta <= tol , 'within tolerance. N: ' + N [ i ] + '. K: ' + K [ i ] + '. n: ' + n [ i ] + '. y: ' + y + '. E: ' + expected [ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' ) ;
226151 }
227152 }
0 commit comments