function incrminmaxabs( out ) {
	var minmax;
	var min;
	var max;
	var FLG;
	if ( arguments.length === 0 ) {
		minmax = [ 0.0, 0.0 ];
	} else {
		if ( !isArrayLike( out ) ) {
			throw new TypeError( format( 'invalid argument. Output argument must be an array-like object. Value: `%s`.', out ) );
		}
		minmax = out;
	}
	min = PINF;
	max = 0.0;
	FLG = false;
	return accumulator;

	/**
	* If provided a value, the accumulator function returns updated minimum and maximum absolute values. If not provided a value, the accumulator function returns the current minimum and maximum absolute values.
	*
	* @private
	* @param {number} [x] - input value
	* @returns {(ArrayLikeObject|null)} output array or null
	*/
	function accumulator( x ) {
		var ax;
		if ( arguments.length === 0 ) {
			if ( FLG === false ) {
				return null;
			}
			minmax[ 0 ] = min; // Why? Because we cannot guarantee someone hasn't mutated the output array
			minmax[ 1 ] = max;
			return minmax;
		}
		FLG = true;
		if ( isnan( x ) ) {
			min = x;
			max = x;
		} else {
			ax = abs( x );
			if ( ax < min ) {
				min = ax;
			}
			if ( ax > max ) {
				max = ax;
			}
		}
		minmax[ 0 ] = min;
		minmax[ 1 ] = max;
		return minmax;
	}
}
Returns an accumulator function which incrementally computes minimum and maximum absolute values.

@param {Collection} [out] - output array
@throws {TypeError} output argument must be array-like
@returns {Function} accumulator function

@example
var accumulator = incrminmaxabs();

var mm = accumulator();
// returns null

mm = accumulator( 2.0 );
// returns [ 2.0, 2.0 ]

mm = accumulator( -5.0 );
// returns [ 2.0, 5.0 ]

mm = accumulator( 3.0 );
// returns [ 2.0, 5.0 ]

mm = accumulator( 5.0 );
// returns [ 2.0, 5.0 ]

mm = accumulator();
// returns [ 2.0, 5.0 ]