function incrrange() {
	var range;
	var max = NINF;
	var min = PINF;

	return accumulator;

	/**
	* If provided a value, the accumulator function returns an updated range. If not provided a value, the accumulator function returns the current range.
	*
	* @private
	* @param {number} [x] - new value
	* @returns {(number|null)} range or null
	*/
	function accumulator( x ) {
		if ( arguments.length === 0 ) {
			return ( range === void 0 ) ? null : range;
		}
		if ( isnan( x ) ) {
			min = x;
			max = x;
		}
		if ( x > max ) {
			max = x;
		}
		if ( x < min ) {
			min = x;
		}
		range = max - min;
		return range;
	}
}
Returns an accumulator function which incrementally computes a range.

@returns {Function} accumulator function

@example
var accumulator = incrrange();

var range = accumulator();
// returns null

range = accumulator( 3.14 );
// returns 0.0

range = accumulator( -5.0 );
// returns 8.14

range = accumulator( 10.1 );
// returns 15.1

range = accumulator();
// returns 15.1