Skip to content

Commit 185eb49

Browse files
committed
Merge branch 'master' into flot
2 parents 9313b73 + 9773f94 commit 185eb49

File tree

1 file changed

+40
-43
lines changed

1 file changed

+40
-43
lines changed

src/core.js

Lines changed: 40 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ this.j$ = this.jStat = (function( Math, undefined ) {
99
var slice = Array.prototype.slice,
1010
toString = Object.prototype.toString,
1111

12-
// for code compression
13-
length = 'length',
14-
1512
// ascending/descending functions for sort
1613
ascNum = function( a, b ) { return a - b; },
1714
descNum = function( a, b ) { return b - a; },
@@ -44,7 +41,7 @@ jStat.fn = jStat.prototype = {
4441
// if first argument is an array, must be vector or matrix
4542
if ( isArray( args[0] )) {
4643
if ( isArray( args[0][0] )) {
47-
for ( var i = 0; i < args[0][length]; i++ ) {
44+
for ( var i = 0; i < args[0].length; i++ ) {
4845
this.push( args[0][i] );
4946
}
5047
} else {
@@ -77,46 +74,46 @@ jStat.fn.init.prototype = jStat.fn;
7774
jStat.extend = function( obj ) {
7875
var args = slice.call( arguments ),
7976
i = 1, j;
80-
if ( args[length] === 1 ) {
77+
if ( args.length === 1 ) {
8178
for ( i in obj ) {
8279
jStat[i] = obj[i];
8380
}
8481
return this;
8582
}
86-
for ( ; i < args[length]; i++ ) {
83+
for ( ; i < args.length; i++ ) {
8784
for ( j in args[i] ) obj[j] = args[i][j];
8885
}
8986
return obj;
9087
};
9188

9289
// extend jStat.fn with methods which don't require arguments and work on columns
9390
(function( funcs ) {
94-
for ( var i = 0; i < funcs[length]; i++ ) (function( passfunc ) {
91+
for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) {
9592

9693
// if a matrix is passed, automatically assume operation should be done on the columns
9794
jStat.fn[ passfunc ] = function( fullbool ) {
9895
var arr = [],
9996
i = 0,
10097
tmpthis;
10198

102-
if ( this[length] > 1 ) {
99+
if ( this.length > 1 ) {
103100
tmpthis = this.transpose();
104-
for ( ; i < tmpthis[length]; i++ ) {
101+
for ( ; i < tmpthis.length; i++ ) {
105102
arr[i] = jStat[ passfunc ]( tmpthis[i] );
106103
}
107104
if ( fullbool === true ) {
108105
arr = jStat[ passfunc ]( arr );
109106
}
110107
}
111108

112-
return arr[length] > 1 ? jStat( arr ) : jStat[ passfunc ]( this[0] );
109+
return arr.length > 1 ? jStat( arr ) : jStat[ passfunc ]( this[0] );
113110
};
114111
})( funcs[i] );
115112
})( 'sum min max mean median mode range variance stdev meandev meddev quartiles'.split( ' ' ));
116113

117114
// extend jStat.fn with methods that have no argument
118115
(function( funcs ) {
119-
for ( var i = 0; i < funcs[length]; i++ ) (function( passfunc ) {
116+
for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) {
120117
jStat.fn[ passfunc ] = function() {
121118
var results = jStat[ passfunc ]( this );
122119
return isArray( results ) ? jStat( results ) : results;
@@ -126,7 +123,7 @@ jStat.extend = function( obj ) {
126123

127124
// extend jStat.fn with methods that require one argument
128125
(function( funcs ) {
129-
for ( var i = 0; i < funcs[length]; i++ ) (function( passfunc ) {
126+
for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) {
130127
jStat.fn[ passfunc ] = function( arg ) {
131128
return jStat( jStat[ passfunc ]( this, arg ));
132129
};
@@ -138,12 +135,12 @@ jStat.extend( jStat.fn, {
138135

139136
// Returns the number of rows in the matrix
140137
rows: function() {
141-
return this[length] || 1;
138+
return this.length || 1;
142139
},
143140

144141
// Returns the number of columns in the matrix
145142
cols: function() {
146-
return this[0][length] || 1;
143+
return this[0].length || 1;
147144
},
148145

149146
// Returns the dimensions of the object { rows: i, cols: j }
@@ -163,7 +160,7 @@ jStat.extend( jStat.fn, {
163160
col: function( index ) {
164161
var column = [],
165162
i = 0;
166-
for ( ; i < this[length]; i++ ) {
163+
for ( ; i < this.length; i++ ) {
167164
column[i] = [ this[i][index] ];
168165
}
169166
return jStat( column );
@@ -211,8 +208,8 @@ jStat.extend({
211208
// transpose a matrix or array
212209
transpose : function( arr ) {
213210
arr = isArray( arr[0] ) ? arr : [ arr ];
214-
var rows = arr[length],
215-
cols = arr[0][length],
211+
var rows = arr.length,
212+
cols = arr[0].length,
216213
obj = [],
217214
i = 0, j;
218215
for ( ; i < cols; i++ ) {
@@ -228,8 +225,8 @@ jStat.extend({
228225
map : function( arr, func, toAlter ) {
229226
arr = isArray( arr[0] ) ? arr : [ arr ];
230227
var row = 0,
231-
nrow = arr[length],
232-
ncol = arr[0][length],
228+
nrow = arr.length,
229+
ncol = arr[0].length,
233230
res = toAlter ? arr : [],
234231
col;
235232
for ( ; row < nrow; row++ ) {
@@ -311,9 +308,9 @@ jStat.extend({
311308
// matrix multiplication
312309
multiply : function( arr, arg ) {
313310
var row, col, nrescols, sum,
314-
nrow = arr[length],
315-
ncol = arr[0][length],
316-
res = jStat.zeros( nrow, nrescols = ( isNaN( arg )) ? arg[0][length] : ncol ),
311+
nrow = arr.length,
312+
ncol = arr[0].length,
313+
res = jStat.zeros( nrow, nrescols = ( isNaN( arg )) ? arg[0].length : ncol ),
317314
rescols = 0;
318315
if( isNaN( arg )) {
319316
for( ; rescols < nrescols; rescols++ ) {
@@ -343,12 +340,12 @@ jStat.extend({
343340
arg = isArray( arg[0] ) ? arg : [ arg ];
344341

345342
// convert column to row vector
346-
var left = ( arr[0][length] === 1 && arr[length] !== 1 ) ? jStat.transpose( arr ) : arr,
347-
right = ( arg[0][length] === 1 && arg[length] !== 1 ) ? jStat.transpose( arg ) : arg,
343+
var left = ( arr[0].length === 1 && arr[length] !== 1 ) ? jStat.transpose( arr ) : arr,
344+
right = ( arg[0].length === 1 && arg[length] !== 1 ) ? jStat.transpose( arg ) : arg,
348345
res = [],
349346
row = 0,
350-
nrow = left[length],
351-
ncol = left[0][length],
347+
nrow = left.length,
348+
ncol = left[0].length,
352349
sum, col;
353350
for( ; row < nrow; row++ ) {
354351
res[row] = [];
@@ -358,7 +355,7 @@ jStat.extend({
358355
}
359356
res[row] = sum;
360357
}
361-
return ( res[length] === 1 ) ? res[0] : res;
358+
return ( res.length === 1 ) ? res[0] : res;
362359
},
363360

364361
// raise every element by a scalar or vector
@@ -380,7 +377,7 @@ jStat.extend({
380377
// computes the norm of the vector
381378
norm : function( arr ) {
382379
arr = isArray( arr[0] ) ? arr : [ arr ];
383-
if( arr[length] > 1 && arr[0][length] > 1 ) {
380+
if( arr.length > 1 && arr[0][length] > 1 ) {
384381
// matrix norm
385382
} else {
386383
// vector norm
@@ -398,8 +395,8 @@ jStat.extend({
398395
symmetric : function( arr ) {
399396
var issymmetric = true,
400397
row = 0,
401-
size = arr[length], col;
402-
if( arr[length] !== arr[0][length] ) return false;
398+
size = arr.length, col;
399+
if( arr.length !== arr[0][length] ) return false;
403400
for ( ; row < size; row++ ) {
404401
for ( col = 0; col < size; col++ ) {
405402
if ( arr[col][row] !== arr[row][col] ) return false;
@@ -413,7 +410,7 @@ jStat.extend({
413410
// sum of an array
414411
sum : function( arr ) {
415412
var sum = 0,
416-
i = arr[length];
413+
i = arr.length;
417414
while( --i >= 0 ) {
418415
sum += arr[i];
419416
}
@@ -432,12 +429,12 @@ jStat.extend({
432429

433430
// mean value of an array
434431
mean : function( arr ) {
435-
return jStat.sum( arr ) / arr[length];
432+
return jStat.sum( arr ) / arr.length;
436433
},
437434

438435
// median of an array
439436
median : function( arr ) {
440-
var arrlen = arr[length],
437+
var arrlen = arr.length,
441438
_arr = arr.slice().sort( ascNum );
442439

443440
// check if array is even or odd, then return the appropriate
@@ -446,7 +443,7 @@ jStat.extend({
446443

447444
// mode of an array
448445
mode : function( arr ) {
449-
var arrLen = arr[length],
446+
var arrLen = arr.length,
450447
_arr = arr.slice().sort( ascNum ),
451448
count = 1,
452449
maxCount = 0,
@@ -482,18 +479,18 @@ jStat.extend({
482479
// range of an array
483480
range : function( arr ) {
484481
var _arr = arr.slice().sort( ascNum );
485-
return _arr[ _arr[length] - 1 ] - _arr[0];
482+
return _arr[ _arr.length - 1 ] - _arr[0];
486483
},
487484

488485
// variance of an array
489486
variance : function( arr ) {
490487
var mean = jStat.mean( arr ),
491488
stSum = 0,
492-
i = arr[length] - 1;
489+
i = arr.length - 1;
493490
for( ; i >= 0; i-- ) {
494491
stSum += Math.pow(( arr[i] - mean ), 2 );
495492
}
496-
return stSum / ( arr[length] - 1 );
493+
return stSum / ( arr.length - 1 );
497494
},
498495

499496
// standard deviation of an array
@@ -505,27 +502,27 @@ jStat.extend({
505502
meandev : function( arr ) {
506503
var devSum = 0,
507504
mean = jStat.mean( arr ),
508-
i = arr[length] - 1;
505+
i = arr.length - 1;
509506
for ( ; i >= 0; i-- ) {
510507
devSum += Math.abs( arr[ i ] - mean );
511508
}
512-
return devSum / arr[length];
509+
return devSum / arr.length;
513510
},
514511

515512
// median deviation (median absolute deviation) of an array
516513
meddev : function( arr ) {
517514
var devSum = 0,
518515
median = jStat.median( arr ),
519-
i = arr[length] - 1;
516+
i = arr.length - 1;
520517
for ( ; i >= 0; i-- ) {
521518
devSum += Math.abs( arr[ i ] - median );
522519
}
523-
return devSum / arr[length];
520+
return devSum / arr.length;
524521
},
525522

526523
// quartiles of an array
527524
quartiles : function( arr ) {
528-
var arrlen = arr[length],
525+
var arrlen = arr.length,
529526
_arr = arr.slice().sort( ascNum );
530527
return [ _arr[ Math.round( ( arrlen ) / 4 ) - 1 ], _arr[ Math.round( ( arrlen ) / 2 ) - 1 ], _arr[ Math.round( ( arrlen ) * 3 / 4 ) - 1 ] ];
531528
},
@@ -535,7 +532,7 @@ jStat.extend({
535532
var u = jStat.mean( arr1 ),
536533
v = jStat.mean( arr2 ),
537534
sq_dev = [],
538-
arr1Len = arr1[length],
535+
arr1Len = arr1.length,
539536
i = 0;
540537
for ( ; i < arr1Len; i++ ) {
541538
sq_dev[ i ] = ( arr1[ i ] - u ) * ( arr2[ i ] - v );

0 commit comments

Comments
 (0)