@@ -94,115 +94,115 @@ tape( 'the function calculates the population variance of a strided array (ignor
94
94
t . end ( ) ;
95
95
} ) ;
96
96
97
- tape ( 'the function calculates the sample variance of a strided array (ignoring `NaN` values)' , function test ( t ) {
97
+ tape ( 'the function calculates the population variance of a strided array (ignoring `NaN` values) (accessors )' , function test ( t ) {
98
98
var x ;
99
99
var v ;
100
100
var i ;
101
101
102
102
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , NaN , 0.0 , 3.0 ] ;
103
103
104
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
105
- t . strictEqual ( v , 53.5 / ( x . length - 2 ) , 'returns expected value' ) ;
104
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
105
+ t . strictEqual ( v , 53.5 / ( x . length - 1 ) , 'returns expected value' ) ;
106
106
107
107
x = [ 1.0 , NaN , NaN , - 2.0 , NaN , - 4.0 , NaN , 5.0 , NaN , 0.0 , 3.0 , NaN ] ;
108
108
109
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
110
- t . strictEqual ( v , 53.5 / ( x . length - 7 ) , 'returns expected value' ) ;
109
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
110
+ t . strictEqual ( v , 53.5 / ( x . length - 6 ) , 'returns expected value' ) ;
111
111
112
112
x = [ - 4.0 , NaN ] ;
113
113
114
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
115
- t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
114
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
115
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
116
116
117
117
x = [ NaN , NaN ] ;
118
118
119
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
119
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
120
120
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
121
121
122
122
x = [ NaN ] ;
123
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
123
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
124
124
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
125
125
126
126
x = [ 4.0 ] ;
127
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
128
- t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
127
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
128
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
129
129
130
130
x = [ ] ;
131
131
for ( i = 0 ; i < 1e3 ; i ++ ) {
132
132
x . push ( 100.0 ) ;
133
133
}
134
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
134
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
135
135
t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
136
136
137
137
x = [ NaN , NaN , NaN , NaN , NaN , NaN , NaN , NaN , NaN , NaN ] ;
138
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
138
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
139
139
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
140
140
141
141
x = [ ] ;
142
142
for ( i = 0 ; i < 1e3 ; i ++ ) {
143
143
x . push ( NaN ) ;
144
144
}
145
- v = nanvariancech ( x . length , 1 , x , 1 ) ;
145
+ v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
146
146
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
147
147
148
148
t . end ( ) ;
149
149
} ) ;
150
150
151
- tape ( 'the function calculates the population variance of a strided array (accessors) (ignoring `NaN` values)' , function test ( t ) {
151
+ tape ( 'the function calculates the sample variance of a strided array (ignoring `NaN` values)' , function test ( t ) {
152
152
var x ;
153
153
var v ;
154
154
var i ;
155
155
156
156
x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , NaN , 0.0 , 3.0 ] ;
157
157
158
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
159
- t . strictEqual ( v , 53.5 / ( x . length - 1 ) , 'returns expected value' ) ;
158
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
159
+ t . strictEqual ( v , 53.5 / ( x . length - 2 ) , 'returns expected value' ) ;
160
160
161
161
x = [ 1.0 , NaN , NaN , - 2.0 , NaN , - 4.0 , NaN , 5.0 , NaN , 0.0 , 3.0 , NaN ] ;
162
162
163
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
164
- t . strictEqual ( v , 53.5 / ( x . length - 6 ) , 'returns expected value' ) ;
163
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
164
+ t . strictEqual ( v , 53.5 / ( x . length - 7 ) , 'returns expected value' ) ;
165
165
166
166
x = [ - 4.0 , NaN ] ;
167
167
168
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
169
- t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
168
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
169
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
170
170
171
171
x = [ NaN , NaN ] ;
172
172
173
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
173
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
174
174
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
175
175
176
176
x = [ NaN ] ;
177
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
177
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
178
178
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
179
179
180
180
x = [ 4.0 ] ;
181
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
182
- t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
181
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
182
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
183
183
184
184
x = [ ] ;
185
185
for ( i = 0 ; i < 1e3 ; i ++ ) {
186
186
x . push ( 100.0 ) ;
187
187
}
188
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
188
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
189
189
t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
190
190
191
191
x = [ NaN , NaN , NaN , NaN , NaN , NaN , NaN , NaN , NaN , NaN ] ;
192
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
192
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
193
193
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
194
194
195
195
x = [ ] ;
196
196
for ( i = 0 ; i < 1e3 ; i ++ ) {
197
197
x . push ( NaN ) ;
198
198
}
199
- v = nanvariancech ( x . length , 0 , toAccessorArray ( x ) , 1 ) ;
199
+ v = nanvariancech ( x . length , 1 , x , 1 ) ;
200
200
t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
201
201
202
202
t . end ( ) ;
203
203
} ) ;
204
204
205
- tape ( 'the function calculates the sample variance of a strided array (accessors) ( ignoring `NaN` values)' , function test ( t ) {
205
+ tape ( 'the function calculates the sample variance of a strided array (ignoring `NaN` values) (accessors )' , function test ( t ) {
206
206
var x ;
207
207
var v ;
208
208
var i ;
@@ -271,7 +271,7 @@ tape( 'if provided an `N` parameter less than or equal to `0`, the function retu
271
271
t . end ( ) ;
272
272
} ) ;
273
273
274
- tape ( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN`' , function test ( t ) {
274
+ tape ( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN` (accessors) ' , function test ( t ) {
275
275
var x ;
276
276
var v ;
277
277
@@ -303,6 +303,23 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns a populat
303
303
t . end ( ) ;
304
304
} ) ;
305
305
306
+ tape ( 'if provided an `N` parameter equal to `1`, the function returns a population variance of `0` provided the first element is not `NaN` (accessors)' , function test ( t ) {
307
+ var x ;
308
+ var v ;
309
+
310
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
311
+
312
+ v = nanvariancech ( 1 , 0 , toAccessorArray ( x ) , 1 ) ;
313
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
314
+
315
+ x = [ NaN , 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
316
+
317
+ v = nanvariancech ( 1 , 0 , toAccessorArray ( x ) , 1 ) ;
318
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
319
+
320
+ t . end ( ) ;
321
+ } ) ;
322
+
306
323
tape ( 'if provided an `N` parameter equal to `1`, the function returns a sample variance equal to `NaN`' , function test ( t ) {
307
324
var x ;
308
325
var v ;
@@ -320,6 +337,23 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns a sample
320
337
t . end ( ) ;
321
338
} ) ;
322
339
340
+ tape ( 'if provided an `N` parameter equal to `1`, the function returns a sample variance equal to `NaN` (accessors)' , function test ( t ) {
341
+ var x ;
342
+ var v ;
343
+
344
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
345
+
346
+ v = nanvariancech ( 1 , 1 , toAccessorArray ( x ) , 1 ) ;
347
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
348
+
349
+ x = [ NaN , 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
350
+
351
+ v = nanvariancech ( 1 , 1 , toAccessorArray ( x ) , 1 ) ;
352
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
353
+
354
+ t . end ( ) ;
355
+ } ) ;
356
+
323
357
tape ( 'if provided a `correction` parameter yielding a correction term less than or equal to `0`, the function returns `NaN`' , function test ( t ) {
324
358
var x ;
325
359
var v ;
@@ -335,6 +369,21 @@ tape( 'if provided a `correction` parameter yielding a correction term less than
335
369
t . end ( ) ;
336
370
} ) ;
337
371
372
+ tape ( 'if provided a `correction` parameter yielding a correction term less than or equal to `0`, the function returns `NaN` (accessors)' , function test ( t ) {
373
+ var x ;
374
+ var v ;
375
+
376
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
377
+
378
+ v = nanvariancech ( x . length , x . length , toAccessorArray ( x ) , 1 ) ;
379
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
380
+
381
+ v = nanvariancech ( x . length , x . length + 1 , toAccessorArray ( x ) , 1 ) ;
382
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
383
+
384
+ t . end ( ) ;
385
+ } ) ;
386
+
338
387
tape ( 'the function supports a `stride` parameter' , function test ( t ) {
339
388
var x ;
340
389
var v ;
@@ -465,6 +514,28 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns `0` p
465
514
t . end ( ) ;
466
515
} ) ;
467
516
517
+ tape ( 'if provided a `stride` parameter equal to `0`, the function returns `0` provided the correction term is not less than `0` and the first element is not `NaN` (accessors)' , function test ( t ) {
518
+ var x ;
519
+ var v ;
520
+
521
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
522
+
523
+ v = nanvariancech ( x . length , 1 , toAccessorArray ( x ) , 0 ) ;
524
+ t . strictEqual ( v , 0.0 , 'returns expected value' ) ;
525
+
526
+ x = [ NaN , 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
527
+
528
+ v = nanvariancech ( x . length , 1 , toAccessorArray ( x ) , 0 ) ;
529
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
530
+
531
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
532
+
533
+ v = nanvariancech ( x . length , x . length , toAccessorArray ( x ) , 0 ) ;
534
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
535
+
536
+ t . end ( ) ;
537
+ } ) ;
538
+
468
539
tape ( 'the function supports view offsets' , function test ( t ) {
469
540
var x0 ;
470
541
var x1 ;
@@ -491,3 +562,30 @@ tape( 'the function supports view offsets', function test( t ) {
491
562
492
563
t . end ( ) ;
493
564
} ) ;
565
+
566
+ tape ( 'the function supports view offsets (accessors)' , function test ( t ) {
567
+ var x0 ;
568
+ var x1 ;
569
+ var v ;
570
+
571
+ x0 = new Float64Array ( [
572
+ 2.0 ,
573
+ 1.0 , // 0
574
+ 2.0 ,
575
+ - 2.0 , // 1
576
+ - 2.0 ,
577
+ 2.0 , // 2
578
+ 3.0 ,
579
+ 4.0 , // 3
580
+ 6.0 ,
581
+ NaN , // 4
582
+ NaN
583
+ ] ) ;
584
+
585
+ x1 = new Float64Array ( x0 . buffer , x0 . BYTES_PER_ELEMENT * 1 ) ; // start at 2nd element
586
+
587
+ v = nanvariancech ( 5 , 1 , toAccessorArray ( x1 ) , 2 ) ;
588
+ t . strictEqual ( v , 6.25 , 'returns expected value' ) ;
589
+
590
+ t . end ( ) ;
591
+ } ) ;
0 commit comments