21
21
// MODULES //
22
22
23
23
var tape = require ( 'tape' ) ;
24
- var toAccessorArray = require ( '@stdlib/array/base/to-accessor-array' ) ;
25
24
var sqrt = require ( '@stdlib/math/base/special/sqrt' ) ;
26
25
var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
26
+ var toAccessorArray = require ( '@stdlib/array/base/to-accessor-array' ) ;
27
27
var stdevpn = require ( './../lib/ndarray.js' ) ;
28
28
29
29
@@ -44,6 +44,25 @@ tape( 'the function calculates the population standard deviation of a strided ar
44
44
var x ;
45
45
var v ;
46
46
47
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 0.0 , 3.0 ] ;
48
+ v = stdevpn ( x . length , 0 , x , 1 , 0 ) ;
49
+ t . strictEqual ( v , sqrt ( 53.5 / x . length ) , 'returns expected value' ) ;
50
+
51
+ x = [ - 4.0 , - 4.0 ] ;
52
+ v = stdevpn ( x . length , 0 , x , 1 , 0 ) ;
53
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
54
+
55
+ x = [ NaN , 4.0 ] ;
56
+ v = stdevpn ( x . length , 0 , x , 1 , 0 ) ;
57
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
58
+
59
+ t . end ( ) ;
60
+ } ) ;
61
+
62
+ tape ( 'the function calculates the population standard deviation of a strided array (accessors)' , function test ( t ) {
63
+ var x ;
64
+ var v ;
65
+
47
66
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 0.0 , 3.0 ] ;
48
67
v = stdevpn ( x . length , 0 , toAccessorArray ( x ) , 1 , 0 ) ;
49
68
t . strictEqual ( v , sqrt ( 53.5 / x . length ) , 'returns expected value' ) ;
@@ -63,6 +82,25 @@ tape( 'the function calculates the sample standard deviation of a strided array'
63
82
var x ;
64
83
var v ;
65
84
85
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 0.0 , 3.0 ] ;
86
+ v = stdevpn ( x . length , 1 , x , 1 , 0 ) ;
87
+ t . strictEqual ( v , sqrt ( 53.5 / ( x . length - 1 ) ) , 'returns expected value' ) ;
88
+
89
+ x = [ - 4.0 , - 4.0 ] ;
90
+ v = stdevpn ( x . length , 1 , x , 1 , 0 ) ;
91
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
92
+
93
+ x = [ NaN , 4.0 ] ;
94
+ v = stdevpn ( x . length , 1 , x , 1 , 0 ) ;
95
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
96
+
97
+ t . end ( ) ;
98
+ } ) ;
99
+
100
+ tape ( 'the function calculates the sample standard deviation of a strided array (accessors)' , function test ( t ) {
101
+ var x ;
102
+ var v ;
103
+
66
104
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 0.0 , 3.0 ] ;
67
105
v = stdevpn ( x . length , 1 , toAccessorArray ( x ) , 1 , 0 ) ;
68
106
t . strictEqual ( v , sqrt ( 53.5 / ( x . length - 1 ) ) , 'returns expected value' ) ;
@@ -84,6 +122,21 @@ tape( 'if provided an `N` parameter less than or equal to `0`, the function retu
84
122
85
123
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
86
124
125
+ v = stdevpn ( 0 , 1 , x , 1 , 0 ) ;
126
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
127
+
128
+ v = stdevpn ( - 1 , 1 , x , 1 , 0 ) ;
129
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
130
+
131
+ t . end ( ) ;
132
+ } ) ;
133
+
134
+ tape ( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN` (accessors)' , function test ( t ) {
135
+ var x ;
136
+ var v ;
137
+
138
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
139
+
87
140
v = stdevpn ( 0 , 1 , toAccessorArray ( x ) , 1 , 0 ) ;
88
141
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
89
142
@@ -99,6 +152,18 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns a populat
99
152
100
153
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
101
154
155
+ v = stdevpn ( 1 , 0 , x , 1 , 0 ) ;
156
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
157
+
158
+ t . end ( ) ;
159
+ } ) ;
160
+
161
+ tape ( 'if provided an `N` parameter equal to `1`, the function returns a population standard deviation of `0` (accessors)' , function test ( t ) {
162
+ var x ;
163
+ var v ;
164
+
165
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
166
+
102
167
v = stdevpn ( 1 , 0 , toAccessorArray ( x ) , 1 , 0 ) ;
103
168
t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
104
169
@@ -111,6 +176,21 @@ tape( 'if provided a `correction` parameter yielding `N-correction` less than or
111
176
112
177
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
113
178
179
+ v = stdevpn ( x . length , x . length , x , 1 , 0 ) ;
180
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
181
+
182
+ v = stdevpn ( x . length , x . length + 1 , x , 1 , 0 ) ;
183
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
184
+
185
+ t . end ( ) ;
186
+ } ) ;
187
+
188
+ tape ( 'if provided a `correction` parameter yielding `N-correction` less than or equal to `0`, the function returns `NaN` (accessors)' , function test ( t ) {
189
+ var x ;
190
+ var v ;
191
+
192
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
193
+
114
194
v = stdevpn ( x . length , x . length , toAccessorArray ( x ) , 1 , 0 ) ;
115
195
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
116
196
@@ -135,6 +215,27 @@ tape( 'the function supports a `stride` parameter', function test( t ) {
135
215
2.0
136
216
] ;
137
217
218
+ v = stdevpn ( 4 , 1 , x , 2 , 0 ) ;
219
+
220
+ t . strictEqual ( v , 2.5 , 'returns expected value' ) ;
221
+ t . end ( ) ;
222
+ } ) ;
223
+
224
+ tape ( 'the function supports a `stride` parameter (accessors)' , function test ( t ) {
225
+ var x ;
226
+ var v ;
227
+
228
+ x = [
229
+ 1.0 , // 0
230
+ 2.0 ,
231
+ 2.0 , // 1
232
+ - 7.0 ,
233
+ - 2.0 , // 2
234
+ 3.0 ,
235
+ 4.0 , // 3
236
+ 2.0
237
+ ] ;
238
+
138
239
v = stdevpn ( 4 , 1 , toAccessorArray ( x ) , 2 , 0 ) ;
139
240
140
241
t . strictEqual ( v , 2.5 , 'returns expected value' ) ;
@@ -156,6 +257,27 @@ tape( 'the function supports a negative `stride` parameter', function test( t )
156
257
2.0
157
258
] ;
158
259
260
+ v = stdevpn ( 4 , 1 , x , - 2 , 6 ) ;
261
+
262
+ t . strictEqual ( v , 2.5 , 'returns expected value' ) ;
263
+ t . end ( ) ;
264
+ } ) ;
265
+
266
+ tape ( 'the function supports a negative `stride` parameter (accessors)' , function test ( t ) {
267
+ var x ;
268
+ var v ;
269
+
270
+ x = [
271
+ 1.0 , // 3
272
+ 2.0 ,
273
+ 2.0 , // 2
274
+ - 7.0 ,
275
+ - 2.0 , // 1
276
+ 3.0 ,
277
+ 4.0 , // 0
278
+ 2.0
279
+ ] ;
280
+
159
281
v = stdevpn ( 4 , 1 , toAccessorArray ( x ) , - 2 , 6 ) ;
160
282
161
283
t . strictEqual ( v , 2.5 , 'returns expected value' ) ;
@@ -168,6 +290,18 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns `0`',
168
290
169
291
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
170
292
293
+ v = stdevpn ( x . length , 1 , x , 0 , 0 ) ;
294
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
295
+
296
+ t . end ( ) ;
297
+ } ) ;
298
+
299
+ tape ( 'if provided a `stride` parameter equal to `0`, the function returns `0` (accessors)' , function test ( t ) {
300
+ var x ;
301
+ var v ;
302
+
303
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
304
+
171
305
v = stdevpn ( x . length , 1 , toAccessorArray ( x ) , 0 , 0 ) ;
172
306
t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
173
307
@@ -189,6 +323,27 @@ tape( 'the function supports an `offset` parameter', function test( t ) {
189
323
4.0 // 3
190
324
] ;
191
325
326
+ v = stdevpn ( 4 , 1 , x , 2 , 1 ) ;
327
+ t . strictEqual ( v , 2.5 , 'returns expected value' ) ;
328
+
329
+ t . end ( ) ;
330
+ } ) ;
331
+
332
+ tape ( 'the function supports an `offset` parameter (accessors)' , function test ( t ) {
333
+ var x ;
334
+ var v ;
335
+
336
+ x = [
337
+ 2.0 ,
338
+ 1.0 , // 0
339
+ 2.0 ,
340
+ - 2.0 , // 1
341
+ - 2.0 ,
342
+ 2.0 , // 2
343
+ 3.0 ,
344
+ 4.0 // 3
345
+ ] ;
346
+
192
347
v = stdevpn ( 4 , 1 , toAccessorArray ( x ) , 2 , 1 ) ;
193
348
t . strictEqual ( v , 2.5 , 'returns expected value' ) ;
194
349
0 commit comments