@@ -23,16 +23,16 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
2323 < div class ='clearfix '>
2424
2525 < div class ='fl pad1y space-right2 '>
26- < span class ="strong "> 98.05 % </ span >
26+ < span class ="strong "> 100 % </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 101/103 </ span >
28+ < span class ='fraction '> 107/107 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
33- < span class ="strong "> 96 % </ span >
33+ < span class ="strong "> 100 % </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 24/25 </ span >
35+ < span class ='fraction '> 23/23 </ span >
3636 </ div >
3737
3838
@@ -44,9 +44,9 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
4444
4545
4646 < div class ='fl pad1y space-right2 '>
47- < span class ="strong "> 98.05 % </ span >
47+ < span class ="strong "> 100 % </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 101/103 </ span >
49+ < span class ='fraction '> 107/107 </ span >
5050 </ div >
5151
5252
@@ -166,7 +166,15 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
166166< a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167167< a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168168< a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169- < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
169+ < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170+ < a name ='L105 '> </ a > < a href ='#L105 '> 105</ a >
171+ < a name ='L106 '> </ a > < a href ='#L106 '> 106</ a >
172+ < a name ='L107 '> </ a > < a href ='#L107 '> 107</ a >
173+ < a name ='L108 '> </ a > < a href ='#L108 '> 108</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 3x</ span >
174+ < span class ="cline-any cline-yes "> 3x</ span >
175+ < span class ="cline-any cline-yes "> 3x</ span >
176+ < span class ="cline-any cline-yes "> 3x</ span >
177+ < span class ="cline-any cline-yes "> 3x</ span >
170178< span class ="cline-any cline-yes "> 3x</ span >
171179< span class ="cline-any cline-yes "> 3x</ span >
172180< span class ="cline-any cline-yes "> 3x</ span >
@@ -213,44 +221,44 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
213221< span class ="cline-any cline-yes "> 3x</ span >
214222< span class ="cline-any cline-yes "> 3x</ span >
215223< span class ="cline-any cline-yes "> 3x</ span >
216- < span class ="cline-any cline-yes "> 31x </ span >
217- < span class ="cline-any cline-yes "> 31x </ span >
218- < span class ="cline-any cline-yes "> 31x </ span >
219- < span class ="cline-any cline-yes "> 31x </ span >
220- < span class ="cline-any cline-yes "> 31x </ span >
221- < span class ="cline-any cline-yes "> 31x </ span >
222- < span class ="cline-any cline-yes "> 31x </ span >
223- < span class ="cline-any cline-yes "> 31x </ span >
224- < span class ="cline-any cline-yes "> 31x </ span >
225- < span class ="cline-any cline-yes "> 31x </ span >
226- < span class ="cline-any cline-yes "> 31x </ span >
227- < span class ="cline-any cline-yes "> 31x </ span >
228- < span class ="cline-any cline-yes "> 31x </ span >
229- < span class ="cline-any cline-yes "> 31x </ span >
230- < span class ="cline-any cline-yes "> 31x </ span >
231- < span class ="cline-any cline-no " > </ span >
232- < span class ="cline-any cline-no " > </ span >
233- < span class ="cline-any cline-yes "> 31x </ span >
234- < span class ="cline-any cline-yes "> 11x </ span >
235- < span class ="cline-any cline-yes "> 11x </ span >
224+ < span class ="cline-any cline-yes "> 3x </ span >
225+ < span class ="cline-any cline-yes "> 3x </ 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 "> 10x </ span >
243+ < span class ="cline-any cline-yes "> 10x </ span >
236244< span class ="cline-any cline-yes "> 6x</ span >
237245< span class ="cline-any cline-yes "> 6x</ span >
238- < span class ="cline-any cline-yes "> 5x </ span >
239- < span class ="cline-any cline-yes "> 5x </ span >
246+ < span class ="cline-any cline-yes "> 4x </ span >
247+ < span class ="cline-any cline-yes "> 4x </ span >
240248< span class ="cline-any cline-yes "> 20x</ span >
241- < span class ="cline-any cline-yes "> 31x </ span >
249+ < span class ="cline-any cline-yes "> 30x </ span >
242250< span class ="cline-any cline-yes "> 34x</ span >
243251< span class ="cline-any cline-yes "> 34x</ span >
244252< span class ="cline-any cline-yes "> 16x</ span >
245253< span class ="cline-any cline-yes "> 16x</ span >
246254< span class ="cline-any cline-yes "> 18x</ span >
247255< span class ="cline-any cline-yes "> 18x</ span >
248- < span class ="cline-any cline-yes "> 31x </ span >
256+ < span class ="cline-any cline-yes "> 30x </ span >
249257< span class ="cline-any cline-yes "> 4x</ span >
250258< span class ="cline-any cline-yes "> 4x</ span >
251259< span class ="cline-any cline-yes "> 16x</ span >
252260< span class ="cline-any cline-yes "> 16x</ span >
253- < span class ="cline-any cline-yes "> 31x </ span >
261+ < span class ="cline-any cline-yes "> 30x </ span >
254262< span class ="cline-any cline-yes "> 61x</ span >
255263< span class ="cline-any cline-yes "> 61x</ span >
256264< span class ="cline-any cline-yes "> 61x</ span >
@@ -263,7 +271,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
263271< span class ="cline-any cline-yes "> 17x</ span >
264272< span class ="cline-any cline-yes "> 61x</ span >
265273< span class ="cline-any cline-yes "> 16x</ span >
266- < span class ="cline-any cline-yes "> 31x </ span >
274+ < span class ="cline-any cline-yes "> 30x </ span >
267275< span class ="cline-any cline-yes "> 3x</ span >
268276< span class ="cline-any cline-yes "> 3x</ span >
269277< span class ="cline-any cline-yes "> 3x</ span >
@@ -272,7 +280,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
272280< span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> /**
273281* @license Apache-2.0
274282*
275- * Copyright (c) 2025 The Stdlib Authors
283+ * Copyright (c) 2025 The Stdlib Authors.
276284*
277285* Licensed under the Apache License, Version 2.0 (the "License");
278286* you may not use this file except in compliance with the License.
@@ -293,27 +301,33 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
293301
294302var isnan = require( '@stdlib/math/base/assert/is-nan' );
295303
304+
296305// MAIN //
297306
298307/**
299- * Calculates the range of a strided array via a callback function, ignoring `NaN` values.
308+ * Computes the range of a strided array via a callback function, ignoring `NaN` values.
300309*
301310* @param {PositiveInteger} N - number of indexed elements
302- * @param {Collection} x - input array/collection
303- * @param {integer} strideX - index increment
311+ * @param {Object} x - input array object
312+ * @param {Collection} x.data - input array data
313+ * @param {Array<Function>} x.accessors - array element accessors
314+ * @param {integer} strideX - stride length
304315* @param {NonNegativeInteger} offsetX - starting index
305316* @param {Callback} clbk - callback
306317* @param {*} [thisArg] - execution context
307318* @returns {number} range
308319*
309320* @example
310- * var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, NaN, 0.0, -1.0, -3.0 ];
321+ * var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
322+ * var arraylike2object = require( '@stdlib/array/base/arraylike2object' );
323+ *
324+ * var x = toAccessorArray( [ -2.0, 1.0, 3.0, -5.0, 4.0, NaN, 0.0, -1.0, -3.0 ] );
311325*
312326* function accessor( v ) {
313327* return v * 2.0;
314328* }
315329*
316- * var v = nanrangeBy( x.length, x , 1, 0, accessor );
330+ * var v = nanrangeBy( x.length, arraylike2object( x ) , 1, 0, accessor );
317331* // returns 18.0
318332*/
319333function nanrangeBy( N, x, strideX, offsetX, clbk, thisArg ) {
@@ -330,40 +344,38 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
330344
331345 // Cache a reference to the element accessor:
332346 get = x.accessors[0];
333- if ( N <= 0 ) < span class ="branch-0 cbranch-no " title ="branch not covered " > {</ span >
334- < span class ="cstat-no " title ="statement not covered " > return NaN;</ span >
335- < span class ="cstat-no " title ="statement not covered " > }</ span >
347+
336348 if ( N === 1 || strideX === 0 ) {
337- v = clbk.call( thisArg, get( xbuf, 0 ), 0, 0 , x );
338- if ( v === void 0 || isnan( v ) ) {
339- return NaN;
340- }
341- return 0.0;
349+ v = clbk.call( thisArg, get( xbuf, offsetX ), 0, offsetX , x );
350+ if ( v === void 0 || isnan( v ) ) {
351+ return NaN;
352+ }
353+ return 0.0;
342354 }
343355 ix = offsetX;
344356 for ( i = 0; i < N; i++ ) {
345357 min = clbk.call( thisArg, get( xbuf, ix ), i, ix, x );
346- if ( min === min && min !== void 0 ) {
347- break;
348- }
349- ix += strideX;
358+ if ( min === min && min !== void 0 ) {
359+ break;
360+ }
361+ ix += strideX;
350362 }
351363 if ( i === N ) {
352- return NaN;
364+ return NaN;
353365 }
354366 max = min;
355367 i += 1;
356368 for ( i; i < N; i++ ) {
357- ix += strideX;
358- v = clbk.call( thisArg, get( xbuf, ix ), i, ix, x );
359- if ( v === void 0 || isnan( v ) ) {
360- continue;
361- }
362- if ( v < min ) {
363- min = v;
364- } else if ( v > max ) {
365- max = v;
366- }
369+ ix += strideX;
370+ v = clbk.call( thisArg, get( xbuf, ix ), i, ix, x );
371+ if ( v === void 0 || isnan( v ) ) {
372+ continue;
373+ }
374+ if ( v < min ) {
375+ min = v;
376+ } else if ( v > max ) {
377+ max = v;
378+ }
367379 }
368380 return max - min;
369381}
@@ -379,7 +391,7 @@ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">stats/
379391 < div class ='footer quiet pad2 space-top1 center small '>
380392 Code coverage generated by
381393 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
382- at 2025-07-05T09:30:09.448Z
394+ at 2025-07-05T10:00:15.949Z
383395 </ div >
384396 < script src ="../../../../prettify.js "> </ script >
385397 < script >
0 commit comments