function incrmidrange() {
	var max = NINF;
	var min = PINF;
	var sum;

	return accumulator;

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

@returns {Function} accumulator function

@example
var accumulator = incrmidrange();

var midrange = accumulator();
// returns null

midrange = accumulator( 3.14 );
// returns 3.14

midrange = accumulator( -5.0 );
// returns ~-0.93

midrange = accumulator( 10.1 );
// returns 2.55

midrange = accumulator();
// returns 2.55