# incrmmidrange

Compute a moving mid-range incrementally.

The mid-range, or mid-extreme, is the arithmetic mean of maximum and minimum values. Accordingly, the mid-range is the midpoint of the range and a measure of central tendency.

## Usage

``````var incrmmidrange = require( '@stdlib/stats/incr/mmidrange' );
``````

#### incrmmidrange( window )

Returns an accumulator `function` which incrementally computes a moving mid-range. The `window` parameter defines the number of values over which to compute the moving mid-range.

``````var accumulator = incrmmidrange( 3 );
``````

#### accumulator( [x] )

If provided an input value `x`, the accumulator function returns an updated mid-range. If not provided an input value `x`, the accumulator function returns the current mid-range.

``````var accumulator = incrmmidrange( 3 );

var mr = accumulator();
// returns null

// Fill the window...
mr = accumulator( 2.0 ); // [2.0]
// returns 2.0

mr = accumulator( 1.0 ); // [2.0, 1.0]
// returns 1.5

mr = accumulator( 3.0 ); // [2.0, 1.0, 3.0]
// returns 2.0

// Window begins sliding...
mr = accumulator( -7.0 ); // [1.0, 3.0, -7.0]
// returns -2.0

mr = accumulator( -5.0 ); // [3.0, -7.0, -5.0]
// returns -2.0

mr = accumulator();
// returns -2.0
``````
• Input values are not type checked. If provided `NaN`, the accumulated value is `NaN` for at least `W-1` future invocations. If non-numeric inputs are possible, you are advised to type check and handle accordingly before passing the value to the accumulator function.
• As `W` values are needed to fill the window buffer, the first `W-1` returned values are calculated from smaller sample sizes. Until the window is full, each returned value is calculated from all provided values.