2020
2121// MODULES //
2222
23- var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
24- var abs = require ( '@stdlib/math/base/special/abs' ) ;
23+ var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
24+ var abs = require ( '@stdlib/math/base/special/abs' ) ;
2525
2626// MAIN //
2727
@@ -38,49 +38,53 @@ var abs = require('@stdlib/math/base/special/abs');
3838 * @returns {Object } output array object
3939 *
4040 * @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
41+ * var x = { data: [ -3.0 , NaN, 2.0 , -1.0 ], accessors: [ ( arr, i ) => arr[ i ] ] };
42+ * var minAbs = nanminabs( 4, x , 1, 0 );
43+ * // returns 1.0
4444 */
45- function nanminabs ( N , x , strideX , offsetX ) {
46- var xbuf ;
47- var get ;
48- var min ;
49- var ix ;
50- var v ;
51- var i ;
45+ function nanminabs ( N , x , strideX , offsetX ) {
46+ var xbuf ;
47+ var get ;
48+ var min ;
49+ var ix ;
50+ var v ;
51+ var i ;
5252
53- // Cache reference to array data:
54- xbuf = x . data ;
53+ // Cache reference to array data:
54+ xbuf = x . data ;
5555
56- // Cache a reference to the element accessor:
57- get = x . accessors [ 0 ] ;
56+ // Cache a reference to the element accessor:
57+ get = x . accessors [ 0 ] ;
5858
59- if ( N === 1 || strideX === 0 ) {
60- return get ? abs ( get ( xbuf , offsetX ) ) : abs ( xbuf [ offsetX ] ) ;
61- }
59+ if ( N === 1 || strideX === 0 ) {
60+ return get ? abs ( get ( xbuf , offsetX ) ) : abs ( xbuf [ offsetX ] ) ;
61+ }
6262
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 ;
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+
76+ for ( i += 1 ; i < N ; i ++ ) {
77+ ix += strideX ;
78+ v = get ? get ( xbuf , ix ) : xbuf [ ix ] ;
79+ v = abs ( v ) ;
80+ if ( isnan ( v ) ) {
81+ continue ;
82+ }
83+ if ( v < min ) {
84+ min = v ;
85+ }
86+ }
87+ return min ;
8488}
8589
8690// EXPORTS //
0 commit comments