Skip to content

Commit b9f3dd2

Browse files
authored
Update ndarray.js
Signed-off-by: Kaushikgtm <162317291+Kaushikgtm@users.noreply.github.com>
1 parent 6889442 commit b9f3dd2

File tree

1 file changed

+21
-6
lines changed
  • lib/node_modules/@stdlib/stats/base/nanmskmin/lib

1 file changed

+21
-6
lines changed

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

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ var accessors = require( './accessors.js' );
3333
*
3434
* @param {PositiveInteger} N - number of indexed elements
3535
* @param {NumericArray} x - input array
36-
* @param {integer} StrideX - `x` stride length
36+
* @param {integer} strideX - `x` stride length
3737
* @param {NonNegativeInteger} offsetX - `x` starting index
3838
* @param {NumericArray} mask - mask array
39-
* @param {integer} StrideMask - `mask` stride length
39+
* @param {integer} strideMask - `mask` stride length
4040
* @param {NonNegativeInteger} offsetMask - `mask` starting index
4141
* @returns {number} minimum value
4242
*
@@ -69,28 +69,43 @@ function nanmskmin( N, x, strideX, offsetX, mask, strideMask, offsetMask ) {
6969
}
7070
ix = offsetX;
7171
im = offsetMask;
72+
73+
// Check for NaN in unmasked elements
7274
for ( i = 0; i < N; i++ ) {
73-
if( mask[im] === 0 ){
75+
if ( mask[im] === 0 && isnan( x[ix] ) ) {
76+
return NaN;
77+
}
78+
ix += strideX;
79+
im += strideMask;
80+
}
81+
82+
// Reset indices
83+
ix = offsetX;
84+
im = offsetMask;
85+
86+
// Find the first unmasked element
87+
for ( i = 0; i < N; i++ ) {
88+
if ( mask[im] === 0 ) {
7489
break;
7590
}
7691
ix += strideX;
7792
im += strideMask;
7893
}
94+
7995
if ( i === N ) {
8096
return NaN;
8197
}
98+
8299
min = x[ ix ];
83100
i += 1;
101+
84102
for ( i; i < N; i++ ) {
85103
ix += strideX;
86104
im += strideMask;
87105
if ( mask[ im ] ) {
88106
continue;
89107
}
90108
v = x[ ix ];
91-
if ( isnan( v ) ) {
92-
continue;
93-
}
94109
if ( v < min || ( v === min && isNegativeZero( v ) ) ) {
95110
min = v;
96111
}

0 commit comments

Comments
 (0)