2020
2121// MODULES // 
2222
23- var  isnan  =  require (  '@stdlib/math/base/assert/is-nan'  ) ; 
24- var  isNegativeZero  =  require (  '@stdlib/math/base/assert/is-negative-zero'  ) ; 
25- 
23+ var  isnan  =  require ( '@stdlib/math/base/assert/is-nan' ) ; 
24+ var  isNegativeZero  =  require ( '@stdlib/math/base/assert/is-negative-zero' ) ; 
2625
2726// MAIN // 
2827
2928/** 
30- * Computes the minimum value of a strided array according to a mask 
29+ * Computes the minimum value of a strided array according to a mask.  
3130* 
3231* @private  
3332* @param  {PositiveInteger } N - number of indexed elements 
@@ -41,17 +40,16 @@ var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
4140* @param  {Array<Function> } mask.accessors - mask element accessors 
4241* @param  {integer } strideMask - stride length for `mask` 
4342* @param  {NonNegativeInteger } offsetMask - starting index for `mask` 
44- * @returns  {Object } output minimum value 
45- /* 
46- * @example   
47- 
48- * var floor = require( '@stdlib/math/base/special/floor' ); 
43+ * @returns  {number } Minimum value according to mask. 
44+ * 
45+ * @example  
46+ * var floor = require('@stdlib/math/base/special/floor'); 
4947* 
5048* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, -5.0, -6.0 ]; 
5149* var mask = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 ]; 
52- * var N = floor(  x.length / 2  ); 
50+ * var N = floor(x.length / 2); 
5351* 
54- * var v = mskmax(  5, arraylike2object(  toAccessorArray( x )  ), 2, 1, arraylike2object(  toAccessorArray(  mask )  ), 2, 1  ); 
52+ * var v = nanmskmin( 5, arraylike2object(toAccessorArray(x) ), 2, 1, arraylike2object(toAccessorArray(mask) ), 2, 1); 
5553* // returns -2.0 
5654*/ 
5755function  nanmskmin (  N ,  x ,  strideX ,  offsetX ,  mask ,  strideMask ,  offsetMask  )  { 
@@ -66,65 +64,59 @@ function nanmskmin( N, x, strideX, offsetX, mask, strideMask, offsetMask ) {
6664	var  i ; 
6765
6866	// Cache references to array data: 
69- 
7067	xbuf  =  x . data ; 
7168	mbuf  =  mask . data ; 
7269
7370	// Cache references to element accessors: 
74- 
7571	xget  =  x . accessors [  0  ] ; 
7672	mget  =  mask . accessors [  0  ] ; 
7773
7874	if  (  N  <=  0  )  { 
7975		return  NaN ; 
8076	} 
81- 	 
77+ 
8278	ix  =  offsetX ; 
8379	im  =  offsetMask ; 
84- 	for  ( i  =  0 ;  i  <  N ;  i ++ )  { 
85- 		if (  mget (  mbuf ,  im  )  ===  0 ) { 
80+ 
81+ 	for  (  i  =  0 ;  i  <  N ;  i ++  )  { 
82+ 		if  (  mget ( mbuf ,  im )  ===  0  )  { 
8683			break ; 
8784		} 
88- 		
8985		ix  +=  strideX ; 
9086		im  +=  strideMask ; 
91- 	}        
92- 		if  (  i  ===  N  )  { 
93- 			return  NaN 
87+ 	} 
88+ 
89+ 	if  (  i  ===  N  )  { 
90+ 		return  NaN ; 
91+ 	} 
92+ 
93+ 	min  =  xget ( xbuf ,  ix ) ; 
94+ 
95+ 	if  (  isnan ( min )  )  { 
96+ 		return  NaN ; 
97+ 	} 
98+ 
99+ 	for  (  i  =  i  +  1 ;  i  <  N ;  i ++  )  { 
100+ 		ix  +=  strideX ; 
101+ 		im  +=  strideMask ; 
102+ 
103+ 		if  (  mget ( mbuf ,  im )  !==  0  )  { 
104+ 			continue ; 
94105		} 
95- 	 
96- 		min  =  xget (   xbuf ,  ix   ) ; 
97- 	 
98- 		if  (  isnan (   min   )  )  { 
99- 			return  NaN ; 
106+ 
107+ 		v  =  xget ( xbuf ,  ix ) ; 
108+ 
109+ 		if  (  isnan ( v )  )  { 
110+ 			return  v ; 
100111		} 
101- 	
102- 		i + 1 ; 
103- 	
104- 		for  (  i ;  i < N ;  i ++  )  { 
105- 			ix  +=  strideX ; 
106- 			im  +=  strideMask ; 
107- 			if  (  mget (  mbuf ,  im  )  !== 0  ) { 
108- 				continue ; 
109- 			} 
110- 			
111- 			v  =  xget (  xbuf ,  ix  ) ; 
112- 			
113- 			if  (  isnan (  v  )  )  { 
114- 				
115- 				return  v ; 
116- 			} 
117- 			
118- 			if  (  v  <  min  ||  (  v  ===  min  &&  isNegativeZero (  v  )  )  )  { 
119- 				
120- 				min  =  v ; 
121- 			} 
122- 			
112+ 
113+ 		if  (  v  <  min  ||  (  v  ===  min  &&  isNegativeZero ( v )  )  )  { 
114+ 			min  =  v ; 
123115		} 
124- 		return  min ; 
116+ 	} 
117+ 	return  min ; 
125118} 
126119
127- //Exports 
128- 
120+ // EXPORTS // 
129121
130122module . exports  =  nanmskmin ; 
0 commit comments