2020
2121// MODULES //
2222
23- var varianceyc = require ( '@stdlib/stats/base/varianceyc' ) . ndarray ;
23+ var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
24+ var arraylike2object = require ( '@stdlib/array/base/arraylike2object' ) ;
25+ var accessors = require ( './accessors.js' ) ;
2426var sqrt = require ( '@stdlib/math/base/special/sqrt' ) ;
27+ var varianceyc = require ( '@stdlib/stats/base/varianceyc' ) . ndarray ;
2528
2629
2730// MAIN //
@@ -41,19 +44,25 @@ var sqrt = require( '@stdlib/math/base/special/sqrt' );
4144* @returns {number } standard deviation
4245*
4346* @example
44- * var floor = require( '@stdlib/math/base/special/floor' ) ;
47+ * var x = [ 1.0, -2.0, 2.0 ] ;
4548*
46- * var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ];
47- *
48- * var v = stdevyc( 4, 1, x, 2, 1 );
49- * // returns 2.5
49+ * var v = stdevyc( x.length, 1, x, 1, 0 );
50+ * // returns ~2.0817
5051*/
5152function stdevyc ( N , correction , x , strideX , offsetX ) {
52- return sqrt ( varianceyc ( N , correction , x , strideX , offsetX ) ) ;
53+ var o ;
54+
55+ if ( N <= 0 ) {
56+ return NaN ;
57+ }
58+ o = arraylike2object ( x ) ;
59+ if ( o . accessorProtocol ) {
60+ return accessors ( N , correction , o , strideX , offsetX ) ;
61+ }
62+ return sqrt ( varianceyc ( N , correction , x , strideX , offsetX ) ) ;
5363}
5464
5565
56-
5766// EXPORTS //
5867
5968module . exports = stdevyc ;
0 commit comments