18
18
19
19
'use strict' ;
20
20
21
+ // MAIN //
22
+
21
23
/**
22
24
* Computes the variance of a strided array using Welford's algorithm and accessors.
23
25
*
43
45
* var v = variancewd( x.data.length, 1, x, 1, 0 );
44
46
* // returns 10.0
45
47
*/
46
-
47
- function variancewd ( N , correction , x , strideX , offsetX ) {
48
+ function variancewd ( N , correction , x , strideX , offsetX ) {
48
49
var delta2 ;
49
50
var delta ;
50
51
var xbuf ;
@@ -57,24 +58,26 @@ function variancewd(N, correction, x, strideX, offsetX) {
57
58
var i ;
58
59
59
60
n = N - correction ;
60
- if ( N <= 0 || n <= 0.0 ) {
61
+ if ( N <= 0 || n <= 0.0 ) {
61
62
return NaN ;
62
63
}
63
- if ( N === 1 || strideX === 0 ) {
64
+ if ( N === 1 || strideX === 0 ) {
64
65
return 0.0 ;
65
66
}
66
67
68
+ // Cache reference to array data:
67
69
xbuf = x . data ;
68
- get = x . accessors [ 0 ] ;
70
+ // Cache a reference to the element accessor:
71
+ get = x . accessors [ 0 ] ;
69
72
70
73
ix = offsetX ;
71
74
M2 = 0.0 ;
72
75
mu = 0.0 ;
73
76
74
- for ( i = 0 ; i < N ; i ++ ) {
75
- v = get ( xbuf , ix ) ;
77
+ for ( i = 0 ; i < N ; i ++ ) {
78
+ v = get ( xbuf , ix ) ;
76
79
delta = v - mu ;
77
- mu += delta / ( i + 1 ) ;
80
+ mu += delta / ( i + 1 ) ;
78
81
delta2 = v - mu ;
79
82
M2 += delta * delta2 ;
80
83
ix += strideX ;
@@ -83,9 +86,5 @@ function variancewd(N, correction, x, strideX, offsetX) {
83
86
return M2 / n ;
84
87
}
85
88
86
- /**
87
- * Exports function for computing the variance of a strided array using Welford's algorithm and accessors.
88
- *
89
- * @type {Function }
90
- */
89
+ // EXPORTS //
91
90
module . exports = variancewd ;
0 commit comments