Skip to content

Commit 2021fb2

Browse files
authored
Update accessors.js
Signed-off-by: Kaushikgtm <[email protected]>
1 parent 4b58244 commit 2021fb2

File tree

1 file changed

+54
-66
lines changed
  • lib/node_modules/@stdlib/stats/base/nanminabs/lib

1 file changed

+54
-66
lines changed

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

Lines changed: 54 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -26,73 +26,61 @@ var abs = require('@stdlib/math/base/special/abs');
2626
// MAIN //
2727

2828
/**
29-
* Computes the minimum absolute value of a strided array, ignoring `NaN` values,
30-
* and supports accessor protocol.
31-
*
32-
* @param {PositiveInteger} N - number of indexed elements
33-
* @param {Object} x - input array object
34-
* @param {Collection} x.data - input array data
35-
* @param {Array<Function>} x.accessors - array element accessors
36-
* @param {integer} strideX - stride length for `x`
37-
* @param {NonNegativeInteger} offsetX - starting index for `x`
38-
* @returns {number} minimum absolute value
39-
*
40-
* @example
41-
* var x = {
42-
* data: [ -2.0, NaN, -1.0, -3.0 ],
43-
* accessors: [ (arr, idx) => arr[idx] ]
44-
* };
45-
* var v = nanminabs( 4, x, 1, 0 );
46-
* // returns 1.0
47-
*/
29+
* Computes the minimum absolute value of a strided array, ignoring `NaN` values,
30+
* and supports accessor protocol.
31+
*
32+
* @param {PositiveInteger} N - number of indexed elements
33+
* @param {Object} x - input array object
34+
* @param {Collection} x.data - input array data
35+
* @param {Array<Function>} x.accessors - array element accessors
36+
* @param {integer} strideX - stride length for `x`
37+
* @param {NonNegativeInteger} offsetX - starting index for `x`
38+
* @returns {Object} output array object
39+
*
40+
* @example
41+
* var data = { data: [ -3, NaN, 2, -1 ], accessors: [ (arr, idx) => arr[idx] ] };
42+
* var minAbs = nanminabs( 4, data, 1, 0 );
43+
* // returns 1
44+
*/
4845
function nanminabs(N, x, strideX, offsetX) {
49-
var xbuf;
50-
var get;
51-
var min;
52-
var ix;
53-
var v;
54-
var i;
55-
56-
// Cache reference to array data:
57-
xbuf = x.data;
58-
59-
// Cache a reference to the element accessor:
60-
get = x.accessors[0];
61-
62-
if (N === 1 || strideX === 0) {
63-
return get ? abs(get(xbuf, offsetX)) : abs(xbuf[offsetX]);
64-
}
65-
66-
ix = offsetX;
67-
68-
for (i = 0; i < N; i++) {
69-
v = get ? get(xbuf, ix) : xbuf[ix];
70-
if (v === v) {
71-
break;
72-
}
73-
ix += strideX;
74-
}
75-
76-
if (i === N) {
77-
return NaN;
78-
}
79-
80-
min = abs(v);
81-
i += 1;
82-
83-
for (; i < N; i++) {
84-
ix += strideX;
85-
v = get ? get(xbuf, ix) : xbuf[ix];
86-
v = abs(v);
87-
if (isnan(v)) {
88-
continue;
89-
}
90-
if (v < min) {
91-
min = v;
92-
}
93-
}
94-
95-
return min;
46+
var xbuf;
47+
var get;
48+
var min;
49+
var ix;
50+
var v;
51+
var i;
52+
53+
// Cache reference to array data:
54+
xbuf = x.data;
55+
56+
// Cache a reference to the element accessor:
57+
get = x.accessors[0];
58+
59+
if (N === 1 || strideX === 0) {
60+
return get ? abs(get(xbuf, offsetX)) : abs(xbuf[offsetX]);
61+
}
62+
63+
ix = offsetX;
64+
for (i = 0; i < N; i++) {
65+
v = get ? get(xbuf, ix) : xbuf[ix];
66+
if (v === v) {
67+
break;
68+
}
69+
ix += strideX;
70+
}
71+
if (i === N) {
72+
return NaN;
73+
}
74+
min = abs(v);
75+
for (i += 1; i < N; i++) {
76+
ix += strideX;
77+
v = get ? get(xbuf, ix) : xbuf[ix];
78+
v = abs(v);
79+
if (!isnan(v) && v < min) {
80+
min = v;
81+
}
82+
}
83+
return min;
9684
}
9785

9886
// EXPORTS //

0 commit comments

Comments
 (0)