@@ -50,62 +50,60 @@ var accessors = require( './accessors.js' );
5050* var v = nanmskmin( N, x, 2, 1, mask, 2, 1 );
5151* // returns -2.0
5252*/
53- function nanmskmin ( N , x , strideX , offsetX , mask , strideMask , offsetMask ) {
53+ function nanmskmin ( N , x , strideX , offsetX , mask , strideMask , offsetMask ) {
5454 var min ;
5555 var ix ;
5656 var im ;
5757 var ox ;
5858 var om ;
5959 var v ;
6060 var i ;
61-
62- if ( N <= 0 ) {
63- return NaN ;
61+
62+ if ( N <= 0 ) {
63+ return NaN ;
6464 }
65+
6566 ox = arraylike2object ( x ) ;
6667 om = arraylike2object ( mask ) ;
67- if ( ox . accessorProtocol || om . accessorProtocol ) {
68- return accessors ( N , ox , strideX , offsetX , om , strideMask , offsetMask )
68+
69+ if ( ox . accessorProtocol || om . accessorProtocol ) {
70+ console . log ( "Using accessorProtocol:" , ox . accessorProtocol , om . accessorProtocol ) ;
71+ return accessors ( N , ox , strideX , offsetX , om , strideMask , offsetMask ) ;
6972 }
73+
7074 ix = offsetX ;
7175 im = offsetMask ;
72-
73- // Find the first unmasked element
7476 for ( i = 0 ; i < N ; i ++ ) {
75- if ( mask [ im ] === 0 ) {
77+ v = x [ ix ] ;
78+ if ( v === v && mask [ im ] === 0 ) {
7679 break ;
7780 }
7881 ix += strideX ;
7982 im += strideMask ;
8083 }
81-
8284 if ( i === N ) {
8385 return NaN ;
8486 }
85-
86- min = x [ ix ] ;
87- if ( isnan ( min ) ) {
88- return min ;
89- }
90-
91- for ( i += 1 ; i < N ; i ++ ) {
87+ min = v ;
88+ i += 1 ;
89+ for ( i ; i < N ; i ++ ) {
9290 ix += strideX ;
9391 im += strideMask ;
94- if ( mask [ im ] !== 0 ) {
92+ if ( mask [ im ] ) {
9593 continue ;
9694 }
9795 v = x [ ix ] ;
9896 if ( isnan ( v ) ) {
99- return v ;
97+ continue ;
10098 }
10199 if ( v < min || ( v === min && isNegativeZero ( v ) ) ) {
102100 min = v ;
103101 }
104102 }
105103 return min ;
106- }
104+ }
107105
108106
109- // EXPORTS //
107+ //exports
110108
111- module . exports = nanmskmin ;
109+ module . exports = nanmskmin
0 commit comments