Skip to content

Commit 91b1269

Browse files
authored
Update nanmskmin.js
Signed-off-by: Kaushikgtm <162317291+Kaushikgtm@users.noreply.github.com>
1 parent 3f223fd commit 91b1269

File tree

1 file changed

+52
-3
lines changed
  • lib/node_modules/@stdlib/stats/base/nanmskmin/lib

1 file changed

+52
-3
lines changed

lib/node_modules/@stdlib/stats/base/nanmskmin/lib/nanmskmin.js

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,58 @@ var ndarray = require( './ndarray.js' );
4343
* var v = nanmskmin( x.length, x, 1, mask, 1 );
4444
* // returns -2.0
4545
*/
46-
function nanmskmin( N, x, strideX, mask, strideMask ) {
47-
48-
return ndarray(N, x, strideX, stride2offset( N, strideX ), mask, stride2offset( N, strideMask ) );
46+
function nanmskmin(N, x, strideX, offsetX, mask, strideMask, offsetMask) {
47+
var min;
48+
var ix;
49+
var im;
50+
var v;
51+
var i;
52+
53+
if (N <= 0) {
54+
return NaN;
55+
}
56+
57+
// Convert to accessor-aware object
58+
var ox = arraylike2object(x);
59+
var om = arraylike2object(mask);
60+
61+
// Use accessor function if needed
62+
if (ox.accessorProtocol || om.accessorProtocol) {
63+
return accessors(N, ox, strideX, offsetX, om, strideMask, offsetMask);
64+
}
65+
66+
ix = offsetX;
67+
im = offsetMask;
68+
69+
for (i = 0; i < N; i++) {
70+
v = ox.data[ix];
71+
if (v === v && om.data[im] === 0) {
72+
break;
73+
}
74+
ix += strideX;
75+
im += strideMask;
76+
}
77+
if (i === N) {
78+
return NaN;
79+
}
80+
min = v;
81+
i += 1;
82+
83+
for (; i < N; i++) {
84+
ix += strideX;
85+
im += strideMask;
86+
if (om.data[im]) {
87+
continue;
88+
}
89+
v = ox.data[ix];
90+
if (isnan(v)) {
91+
continue;
92+
}
93+
if (v < min || (v === min && isNegativeZero(v))) {
94+
min = v;
95+
}
96+
}
97+
return min;
4998
}
5099

51100

0 commit comments

Comments
 (0)