@@ -26,73 +26,61 @@ var abs = require('@stdlib/math/base/special/abs');
2626// MAIN // 
2727
2828/** 
29- * Computes the minimum absolute value of a strided array, ignoring `NaN` values, 
30- * and supports accessor protocol. 
31- * 
32- * @param  {PositiveInteger } N - number of indexed elements 
33- * @param  {Object } x - input array object 
34- * @param  {Collection } x.data - input array data 
35- * @param  {Array<Function> } x.accessors - array element accessors 
36- * @param  {integer } strideX - stride length for `x` 
37- * @param  {NonNegativeInteger } offsetX - starting index for `x` 
38- * @returns  {number } minimum absolute value 
39- * 
40- * @example  
41- * var x = { 
42- *     data: [ -2.0, NaN, -1.0, -3.0 ], 
43- *     accessors: [ (arr, idx) => arr[idx] ] 
44- * }; 
45- * var v = nanminabs( 4, x, 1, 0 ); 
46- * // returns 1.0 
47- */ 
29+  * Computes the minimum absolute value of a strided array, ignoring `NaN` values, 
30+  * and supports accessor protocol. 
31+  * 
32+  * @param  {PositiveInteger } N - number of indexed elements 
33+  * @param  {Object } x - input array object 
34+  * @param  {Collection } x.data - input array data 
35+  * @param  {Array<Function> } x.accessors - array element accessors 
36+  * @param  {integer } strideX - stride length for `x` 
37+  * @param  {NonNegativeInteger } offsetX - starting index for `x` 
38+  * @returns  {Object } output array object 
39+  * 
40+  * @example  
41+  * var data = { data: [ -3, NaN, 2, -1 ], accessors: [ (arr, idx) => arr[idx] ] }; 
42+  * var minAbs = nanminabs( 4, data, 1, 0 ); 
43+  * // returns 1 
44+  */ 
4845function  nanminabs ( N ,  x ,  strideX ,  offsetX )  { 
49-     var  xbuf ; 
50-     var  get ; 
51-     var  min ; 
52-     var  ix ; 
53-     var  v ; 
54-     var  i ; 
55- 
56-     // Cache reference to array data: 
57-     xbuf  =  x . data ; 
58- 
59-     // Cache a reference to the element accessor: 
60-     get  =  x . accessors [ 0 ] ; 
61- 
62-     if  ( N  ===  1  ||  strideX  ===  0 )  { 
63-         return  get  ? abs ( get ( xbuf ,  offsetX ) )  : abs ( xbuf [ offsetX ] ) ; 
64-     } 
65- 
66-     ix  =  offsetX ; 
67- 
68-     for  ( i  =  0 ;  i  <  N ;  i ++ )  { 
69-         v  =  get  ? get ( xbuf ,  ix )  : xbuf [ ix ] ; 
70-         if  ( v  ===  v )  { 
71-             break ; 
72-         } 
73-         ix  +=  strideX ; 
74-     } 
75- 
76-     if  ( i  ===  N )  { 
77-         return  NaN ; 
78-     } 
79- 
80-     min  =  abs ( v ) ; 
81-     i  +=  1 ; 
82- 
83-     for  ( ;  i  <  N ;  i ++ )  { 
84-         ix  +=  strideX ; 
85-         v  =  get  ? get ( xbuf ,  ix )  : xbuf [ ix ] ; 
86-         v  =  abs ( v ) ; 
87-         if  ( isnan ( v ) )  { 
88-             continue ; 
89-         } 
90-         if  ( v  <  min )  { 
91-             min  =  v ; 
92-         } 
93-     } 
94- 
95-     return  min ; 
46+ 	var  xbuf ; 
47+ 	var  get ; 
48+ 	var  min ; 
49+ 	var  ix ; 
50+ 	var  v ; 
51+ 	var  i ; 
52+ 
53+ 	// Cache reference to array data: 
54+ 	xbuf  =  x . data ; 
55+ 
56+ 	// Cache a reference to the element accessor: 
57+ 	get  =  x . accessors [ 0 ] ; 
58+ 
59+ 	if  ( N  ===  1  ||  strideX  ===  0 )  { 
60+ 		return  get  ? abs ( get ( xbuf ,  offsetX ) )  : abs ( xbuf [ offsetX ] ) ; 
61+ 	} 
62+ 
63+ 	ix  =  offsetX ; 
64+ 	for  ( i  =  0 ;  i  <  N ;  i ++ )  { 
65+ 		v  =  get  ? get ( xbuf ,  ix )  : xbuf [ ix ] ; 
66+ 		if  ( v  ===  v )  { 
67+ 			break ; 
68+ 		} 
69+ 		ix  +=  strideX ; 
70+ 	} 
71+ 	if  ( i  ===  N )  { 
72+ 		return  NaN ; 
73+ 	} 
74+ 	min  =  abs ( v ) ; 
75+ 	for  ( i  +=  1 ;  i  <  N ;  i ++ )  { 
76+ 		ix  +=  strideX ; 
77+ 		v  =  get  ? get ( xbuf ,  ix )  : xbuf [ ix ] ; 
78+ 		v  =  abs ( v ) ; 
79+ 		if  ( ! isnan ( v )  &&  v  <  min )  { 
80+ 			min  =  v ; 
81+ 		} 
82+ 	} 
83+ 	return  min ; 
9684} 
9785
9886// EXPORTS // 
0 commit comments