Skip to content

Commit 54062cf

Browse files
committed
Merge branch 'master' into flot
2 parents 1b2792c + 6e0c822 commit 54062cf

File tree

1 file changed

+32
-32
lines changed

1 file changed

+32
-32
lines changed

src/core.js

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,16 @@ jStat.fn = jStat.prototype = {
6161
for ( var i = 0; i < args[0].length; i++ ) {
6262
this[i] = args[0][i];
6363
}
64+
this.length = args[0].length;
6465
} else {
6566
this[0] = args[0];
67+
this.length = 1;
6668
}
6769

6870
// if first argument is number, assume creation of sequence
6971
} else if ( !isNaN( args[0] )) {
7072
this[0] = jStat.seq.apply( null, args );
73+
this.length = 1;
7174
}
7275
return this;
7376
},
@@ -77,7 +80,7 @@ jStat.fn = jStat.prototype = {
7780

7881
// return clean array
7982
toArray : function() {
80-
return slice.call( this, 0 );
83+
return slice.call( this );
8184
},
8285

8386
// only to be used internally
@@ -112,7 +115,6 @@ jStat.extend = function( obj ) {
112115
var arr = [],
113116
i = 0,
114117
tmpthis;
115-
116118
if ( this.length > 1 ) {
117119
tmpthis = this.transpose();
118120
for ( ; i < tmpthis.length; i++ ) {
@@ -122,7 +124,6 @@ jStat.extend = function( obj ) {
122124
arr = jStat[ passfunc ]( arr );
123125
}
124126
}
125-
126127
return arr.length > 1 ? jStat( arr ) : jStat[ passfunc ]( this[0] );
127128
};
128129
})( funcs[i] );
@@ -170,17 +171,17 @@ jStat.extend( jStat.fn, {
170171

171172
// Returns a specified row as a vector
172173
row: function( index ) {
173-
return jStat( this[index] );
174+
return jStat( this[index] );
174175
},
175176

176177
// Returns the specified column as a vector
177178
col: function( index ) {
178-
var column = [],
179+
var column = [],
179180
i = 0;
180-
for ( ; i < this.length; i++ ) {
181+
for ( ; i < this.length; i++ ) {
181182
column[i] = [ this[i][index] ];
182-
}
183-
return jStat( column );
183+
}
184+
return jStat( column );
184185
},
185186

186187
// Returns the diagonal of the matrix
@@ -206,8 +207,8 @@ jStat.extend( jStat.fn, {
206207
},
207208

208209
// map a function to a matrix or vector
209-
map : function( func, toAlter ) {
210-
return jStat( jStat.map( this, func, toAlter ));
210+
map : function( func ) {
211+
return jStat( jStat.map( this, func ));
211212
},
212213

213214
// destructively alter an object
@@ -256,7 +257,7 @@ jStat.extend({
256257

257258
// generate a rows x cols matrix according to the supplied function
258259
create: function ( rows, cols, func ) {
259-
var i, j, res = [];
260+
var res = [], i, j;
260261
for( i = 0; i < rows; i++ ) {
261262
res[i] = [];
262263
for( j = 0; j < cols; j++ ) {
@@ -289,30 +290,28 @@ jStat.extend({
289290
// generate sequence
290291
seq : function( min, max, length, func ) {
291292
var arr = [],
292-
hival = 1e15,
293+
hival = 1e15, // simple fix for IEEE floating point errors
293294
step = ( max * hival - min * hival ) / (( length - 1 ) * hival ),
294295
current = min,
295296
cnt = 0;
296-
297297
for ( ; current <= max; cnt++, current = ( min * hival + step * hival * cnt ) / hival ) {
298298
arr.push(( func ? func( current ) : current ));
299-
};
300-
299+
}
301300
return arr;
302301
},
303302

304303
// add a vector or scalar to the vector
305304
add : function( arr, arg ) {
306-
return isNaN( arg )
307-
? jStat.map( arr, function( value, row, col ) { return value + arg[row][col]; })
308-
: jStat.map(arr, function ( value ) { return value + arg; });
305+
return isNaN( arg ) ?
306+
jStat.map( arr, function( value, row, col ) { return value + arg[row][col]; })
307+
: jStat.map( arr, function ( value ) { return value + arg; });
309308
},
310309

311310
// TODO: Implement matrix division
312311
// matrix division
313312
divide : function( arr, arg ) {
314-
return isNaN( arg )
315-
? false
313+
return isNaN( arg ) ?
314+
false
316315
: jStat.map(arr, function ( value ) { return value / arg; });
317316
},
318317

@@ -340,8 +339,8 @@ jStat.extend({
340339

341340
// subtract a vector or scalar from the vector
342341
subtract : function( arr, arg ) {
343-
return isNaN( arg )
344-
? jStat.map( arr, function( value, row, col ) { return value - arg[row][col]; })
342+
return isNaN( arg ) ?
343+
jStat.map( arr, function( value, row, col ) { return value - arg[row][col]; })
345344
: jStat.map( arr, function( value ) { return value - arg; });
346345
},
347346

@@ -387,12 +386,12 @@ jStat.extend({
387386
// BUG: Does not work for matrices
388387
// computes the norm of the vector
389388
norm : function( arr ) {
390-
arr = isArray( arr[0] ) ? arr : [ arr ];
389+
arr = isArray( arr[0] ) ? arr : [arr];
391390
if( arr.length > 1 && arr[0].length > 1 ) {
392391
// matrix norm
393392
} else {
394393
// vector norm
395-
return Math.sqrt( jStat.dot( arr, arr ) );
394+
return Math.sqrt( jStat.dot( arr, arr ));
396395
}
397396
},
398397

@@ -422,9 +421,7 @@ jStat.extend({
422421
sum : function( arr ) {
423422
var sum = 0,
424423
i = arr.length;
425-
while( --i >= 0 ) {
426-
sum += arr[i];
427-
}
424+
while( --i >= 0 ) sum += arr[i];
428425
return sum;
429426
},
430427

@@ -483,7 +480,6 @@ jStat.extend({
483480
}
484481
}
485482
}
486-
487483
return ( numMaxCount === 0 ) ? maxNum : false;
488484
},
489485

@@ -515,7 +511,7 @@ jStat.extend({
515511
mean = jStat.mean( arr ),
516512
i = arr.length - 1;
517513
for ( ; i >= 0; i-- ) {
518-
devSum += Math.abs( arr[ i ] - mean );
514+
devSum += Math.abs( arr[i] - mean );
519515
}
520516
return devSum / arr.length;
521517
},
@@ -526,7 +522,7 @@ jStat.extend({
526522
median = jStat.median( arr ),
527523
i = arr.length - 1;
528524
for ( ; i >= 0; i-- ) {
529-
devSum += Math.abs( arr[ i ] - median );
525+
devSum += Math.abs( arr[i] - median );
530526
}
531527
return devSum / arr.length;
532528
},
@@ -535,7 +531,11 @@ jStat.extend({
535531
quartiles : function( arr ) {
536532
var arrlen = arr.length,
537533
_arr = arr.slice().sort( ascNum );
538-
return [ _arr[ Math.round( ( arrlen ) / 4 ) - 1 ], _arr[ Math.round( ( arrlen ) / 2 ) - 1 ], _arr[ Math.round( ( arrlen ) * 3 / 4 ) - 1 ] ];
534+
return [
535+
_arr[ Math.round(( arrlen ) / 4 ) - 1 ],
536+
_arr[ Math.round(( arrlen ) / 2 ) - 1 ],
537+
_arr[ Math.round(( arrlen ) * 3 / 4 ) - 1 ]
538+
];
539539
},
540540

541541
// covariance of two arrays
@@ -546,7 +546,7 @@ jStat.extend({
546546
arr1Len = arr1.length,
547547
i = 0;
548548
for ( ; i < arr1Len; i++ ) {
549-
sq_dev[ i ] = ( arr1[ i ] - u ) * ( arr2[ i ] - v );
549+
sq_dev[i] = ( arr1[i] - u ) * ( arr2[i] - v );
550550
}
551551
return jStat.sum( sq_dev ) / arr1Len;
552552
},

0 commit comments

Comments
 (0)