@@ -46,64 +46,11 @@ var accessors = require( './accessors.js' );
4646* var v = nanmskmin( x.length, x, 1, mask, 1 );
4747* // returns -2.0
4848*/
49- function nanmskmin ( N , x , strideX , offsetX , mask , strideMask , offsetMask ) {
50- var min ;
51- var ix ;
52- var im ;
53- var v ;
54- var i ;
55-
56- if ( N <= 0 ) {
57- return NaN ;
58- }
59-
60- // Convert to accessor-aware object
61- var ox = arraylike2object ( x ) ;
62- var om = arraylike2object ( mask ) ;
63-
64- // Use accessor function if needed
65- if ( ox . accessorProtocol || om . accessorProtocol ) {
66- return accessors ( N , ox , strideX , offsetX , om , strideMask , offsetMask ) ;
67- }
68-
69- if ( strideX < 0 ) {
70- ix = ( 1 - N ) * strideX ;
71- } else {
72- ix = 0 ;
73- }
74- if ( strideMask < 0 ) {
75- im = ( 1 - N ) * strideMask ;
76- } else {
77- im = 0 ;
78- }
79- for ( i = 0 ; i < N ; i ++ ) {
80- v = x [ ix ] ;
81- if ( v === v && mask [ im ] === 0 ) {
82- break ;
83- }
84- ix += strideX ;
85- im += strideMask ;
86- }
87- if ( i === N ) {
88- return NaN ;
89- }
90- min = v ;
91- i += 1 ;
92- for ( i ; i < N ; i ++ ) {
93- ix += strideX ;
94- im += strideMask ;
95- if ( mask [ im ] ) {
96- continue ;
97- }
98- v = x [ ix ] ;
99- if ( isnan ( v ) ) {
100- continue ;
101- }
102- if ( v < min || ( v === min && isNegativeZero ( v ) ) ) {
103- min = v ;
104- }
105- }
106- return min ;
49+ function nanmskmin ( N , x , strideX , mask , strideMask ) {
50+
51+ var p = stride2offset ( N , strideX ) ;
52+ var q = stride2offset ( N , strideMask ) ;
53+ return ndarray ( N , x , strideX , p , mask , q ) ;
10754}
10855
10956
0 commit comments