Skip to content

Commit 3d83101

Browse files
committed
feat: add support for accessor arrays and refactor stats/base/stdevyc
1 parent 0d23ce3 commit 3d83101

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

lib/node_modules/@stdlib/stats/base/stdevyc/docs/types/index.d.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
/// <reference types="@stdlib/types"/>
2222

2323
import { NumericArray, Collection, AccessorArrayLike } from '@stdlib/types/array';
24-
25-
/**
26-
* Input array.
27-
*/
28-
type InputArray = NumericArray | Collection<number> | AccessorArrayLike<number>;
24+
25+
/**
26+
* Input array.
27+
*/
28+
type InputArray = NumericArray | Collection<number> | AccessorArrayLike<number>;
2929
/**
3030
* Interface describing `stdevyc`.
3131
*/

lib/node_modules/@stdlib/stats/base/stdevyc/lib/accessors.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2424
var sqrt = require( '@stdlib/math/base/special/sqrt' );
2525

26+
2627
// MAIN //
2728

2829
/**
@@ -43,16 +44,16 @@ var sqrt = require( '@stdlib/math/base/special/sqrt' );
4344
*
4445
* var x = toAccessorArray( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] );
4546
*
46-
* var v = stdevyc( 4, arraylike2object( x ), 2, 1 );
47+
* var v = stdevyc( 4, 1, arraylike2object( x ), 2, 1 );
4748
* // returns <computed standard deviation>
4849
*/
49-
function stdevyc( N, x, strideX, offsetX ) {
50+
function stdevyc( N, correction, x, strideX, offsetX ) {
51+
var delta;
52+
var count;
5053
var xbuf;
51-
var get;
5254
var mean;
55+
var get;
5356
var M2;
54-
var delta;
55-
var count;
5657
var ix;
5758
var v;
5859
var i;
@@ -63,7 +64,7 @@ function stdevyc( N, x, strideX, offsetX ) {
6364
// Cache a reference to the element accessor:
6465
get = x.accessors[ 0 ];
6566

66-
if ( N < 2 ) {
67+
if ( N <= correction ) { // Prevent division by zero
6768
return NaN;
6869
}
6970

@@ -85,9 +86,10 @@ function stdevyc( N, x, strideX, offsetX ) {
8586
ix += strideX;
8687
}
8788

88-
return sqrt( M2 / ( count - 1 ) );
89+
return sqrt( M2 / ( count - correction ) );
8990
}
9091

92+
9193
// EXPORTS //
9294

9395
module.exports = stdevyc;

0 commit comments

Comments
 (0)