@@ -25,14 +25,14 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 104/104 </ span >
28+ < span class ='fraction '> 101/101 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 12/12 </ span >
35+ < span class ='fraction '> 7/7 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 104/104 </ span >
49+ < span class ='fraction '> 101/101 </ span >
5050 </ div >
5151
5252
@@ -164,10 +164,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
164164< a name ='L99 '> </ a > < a href ='#L99 '> 99</ a >
165165< a name ='L100 '> </ a > < a href ='#L100 '> 100</ a >
166166< a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167- < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168- < a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169- < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170- < a name ='L105 '> </ a > < a href ='#L105 '> 105</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
167+ < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
171168< span class ="cline-any cline-yes "> 3x</ span >
172169< span class ="cline-any cline-yes "> 3x</ span >
173170< span class ="cline-any cline-yes "> 3x</ span >
@@ -220,55 +217,52 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
220217< span class ="cline-any cline-yes "> 3x</ span >
221218< span class ="cline-any cline-yes "> 3x</ span >
222219< span class ="cline-any cline-yes "> 3x</ span >
223- < span class ="cline-any cline-yes "> 30x</ span >
224- < span class ="cline-any cline-yes "> 30x</ span >
225- < span class ="cline-any cline-yes "> 30x</ span >
226- < span class ="cline-any cline-yes "> 30x</ span >
227- < span class ="cline-any cline-yes "> 30x</ span >
228- < span class ="cline-any cline-yes "> 30x</ span >
229- < span class ="cline-any cline-yes "> 30x</ span >
230- < span class ="cline-any cline-yes "> 30x</ span >
231- < span class ="cline-any cline-yes "> 30x</ span >
232- < span class ="cline-any cline-yes "> 30x</ span >
233- < span class ="cline-any cline-yes "> 30x</ span >
234- < span class ="cline-any cline-yes "> 30x</ span >
235- < span class ="cline-any cline-yes "> 30x</ span >
236- < span class ="cline-any cline-yes "> 30x</ span >
237- < span class ="cline-any cline-yes "> 30x</ span >
238- < span class ="cline-any cline-yes "> 30x</ span >
239- < span class ="cline-any cline-yes "> 30x</ span >
240- < span class ="cline-any cline-yes "> 30x</ span >
241- < span class ="cline-any cline-yes "> 30x</ span >
242- < span class ="cline-any cline-yes "> 30x</ span >
243- < span class ="cline-any cline-yes "> 30x</ span >
244- < span class ="cline-any cline-yes "> 30x</ span >
245- < span class ="cline-any cline-yes "> 30x</ span >
246- < span class ="cline-any cline-yes "> 30x</ span >
247- < span class ="cline-any cline-yes "> 30x</ span >
248- < span class ="cline-any cline-yes "> 8x</ span >
249- < span class ="cline-any cline-yes "> 8x</ span >
250- < span class ="cline-any cline-yes "> 30x</ span >
220+ < span class ="cline-any cline-yes "> 3x</ span >
221+ < span class ="cline-any cline-yes "> 3x</ span >
222+ < span class ="cline-any cline-yes "> 3x</ span >
223+ < span class ="cline-any cline-yes "> 3x</ span >
224+ < span class ="cline-any cline-yes "> 22x</ span >
225+ < span class ="cline-any cline-yes "> 22x</ span >
226+ < span class ="cline-any cline-yes "> 22x</ span >
227+ < span class ="cline-any cline-yes "> 22x</ span >
228+ < span class ="cline-any cline-yes "> 22x</ span >
229+ < span class ="cline-any cline-yes "> 22x</ span >
230+ < span class ="cline-any cline-yes "> 22x</ span >
231+ < span class ="cline-any cline-yes "> 22x</ span >
232+ < span class ="cline-any cline-yes "> 22x</ span >
233+ < span class ="cline-any cline-yes "> 22x</ span >
234+ < span class ="cline-any cline-yes "> 22x</ span >
235+ < span class ="cline-any cline-yes "> 22x</ span >
236+ < span class ="cline-any cline-yes "> 22x</ span >
237+ < span class ="cline-any cline-yes "> 22x</ span >
238+ < span class ="cline-any cline-yes "> 22x</ span >
239+ < span class ="cline-any cline-yes "> 22x</ span >
240+ < span class ="cline-any cline-yes "> 22x</ span >
241+ < span class ="cline-any cline-yes "> 22x</ span >
251242< span class ="cline-any cline-yes "> 4x</ span >
252243< span class ="cline-any cline-yes "> 4x</ span >
253244< span class ="cline-any cline-yes "> 18x</ span >
254245< span class ="cline-any cline-yes "> 18x</ span >
255- < span class ="cline-any cline-yes "> 30x</ span >
256- < span class ="cline-any cline-yes "> 64x</ span >
257- < span class ="cline-any cline-yes "> 64x</ span >
258- < span class ="cline-any cline-yes "> 64x</ span >
259246< span class ="cline-any cline-yes "> 18x</ span >
260247< span class ="cline-any cline-yes "> 18x</ span >
261248< span class ="cline-any cline-yes "> 18x</ span >
262249< span class ="cline-any cline-yes "> 18x</ span >
263- < span class ="cline-any cline-yes "> 30x</ span >
250+ < span class ="cline-any cline-yes "> 18x</ span >
251+ < span class ="cline-any cline-yes "> 18x</ span >
252+ < span class ="cline-any cline-yes "> 18x</ span >
253+ < span class ="cline-any cline-yes "> 18x</ span >
254+ < span class ="cline-any cline-yes "> 18x</ span >
255+ < span class ="cline-any cline-yes "> 22x</ span >
264256< span class ="cline-any cline-yes "> 64x</ span >
265257< span class ="cline-any cline-yes "> 64x</ span >
266258< span class ="cline-any cline-yes "> 64x</ span >
267259< span class ="cline-any cline-yes "> 64x</ span >
268260< span class ="cline-any cline-yes "> 64x</ span >
269261< span class ="cline-any cline-yes "> 18x</ span >
270- < span class ="cline-any cline-yes "> 18x</ span >
271- < span class ="cline-any cline-yes "> 30x</ span >
262+ < span class ="cline-any cline-yes "> 22x</ span >
263+ < span class ="cline-any cline-yes "> 3x</ span >
264+ < span class ="cline-any cline-yes "> 3x</ span >
265+ < span class ="cline-any cline-yes "> 3x</ span >
272266< span class ="cline-any cline-yes "> 3x</ span >
273267< span class ="cline-any cline-yes "> 3x</ span >
274268< span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> /**
@@ -293,6 +287,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
293287
294288// MODULES //
295289
290+ var gsumpw = require( '@stdlib/blas/ext/base/gsumpw' ).ndarray;
291+
292+
296293// MAIN //
297294
298295/**
@@ -310,70 +307,64 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
310307* @param {PositiveInteger} N - number of indexed elements
311308* @param {number} correction - degrees of freedom adjustment
312309* @param {Object} x - input array object
310+ * @param {Collection} x.data - input array data
313311* @param {Array<Function>} x.accessors - array element accessors
314- * @param {integer} stride - stride length
315- * @param {integer} offset - starting index
312+ * @param {integer} strideX - stride length
313+ * @param {NonNegativeInteger} offsetX - starting index
316314* @returns {number} variance
317315*
318316* @example
319317* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
320318* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );
321319*
322- * var x = toAccessorArray( [ 1.0, -2.0, 2 .0 ] );
320+ * var x = toAccessorArray( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4 .0 ] );
323321*
324- * var v = variancepn( 3 , 1, arraylike2object( x ), 1, 0 );
325- * // returns ~4.3333
322+ * var v = variancepn( 4 , 1, arraylike2object( x ), 2, 1 );
323+ * // returns 6.25
326324*/
327- function variancepn( N, correction, x, stride, offset ) {
325+ function variancepn( N, correction, x, strideX, offsetX ) {
328326 var xbuf;
329327 var get;
330- var sum;
331328 var mu;
332- var M2;
333329 var ix;
330+ var M2;
334331 var M;
335332 var d;
336333 var n;
337334 var i;
338335
339- // Cache references to array data:
336+ // Cache reference to array data:
340337 xbuf = x.data;
341338
342- // Cache references to element accessors :
339+ // Cache a reference to the element accessor :
343340 get = x.accessors[ 0 ];
344341
345- sum = 0.0;
346- M2 = 0.0;
347- M = 0.0;
348- ix = offset;
349- n = N - correction;
350-
351- if ( N <= 0 || n <= 0 ) {
352- return NaN;
353- }
354- if ( N === 1 || stride === 0 ) {
342+ if ( N === 1 || strideX === 0 ) {
355343 return 0.0;
356344 }
357345
358- // Compute the mean:
359- for ( i = 0; i < N; i++ ) {
360- sum += get( xbuf, ix );
361- ix += stride;
362- }
363- mu = sum / N;
346+ // Compute an estimate for the mean:
347+ mu = gsumpw( N, xbuf, strideX, offsetX ) / N;
348+
349+ n = N - correction;
350+ ix = offsetX;
351+
352+ // Compute the variance...
353+ M2 = 0.0;
354+ M = 0.0;
364355
365- // Compute the variance:
366- ix = offset;
367356 for ( i = 0; i < N; i++ ) {
368357 d = get( xbuf, ix ) - mu;
369358 M2 += d * d;
370359 M += d;
371- ix += stride ;
360+ ix += strideX ;
372361 }
373-
374- return ( M2 / n ) - ( ( M / N ) * ( M / n ) );
362+ return (M2/n) - ((M/N)*(M/n));
375363}
376364
365+
366+ // EXPORTS //
367+
377368module.exports = variancepn;
378369 </ pre > </ td > </ tr > </ table > </ pre >
379370
@@ -382,7 +373,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
382373 < div class ='footer quiet pad2 space-top1 center small '>
383374 Code coverage generated by
384375 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
385- at 2025-06-08T09:37:51.631Z
376+ at 2025-06-12T08:38:03.863Z
386377 </ div >
387378 < script src ="../../../../prettify.js "> </ script >
388379 < script >
0 commit comments