function cumax( N, x, strideX, offsetX, y, strideY, offsetY ) {
	var max;
	var ix;
	var iy;
	var ox;
	var oy;
	var v;
	var i;

	if ( N <= 0 ) {
		return y;
	}
	ox = arraylike2object( x );
	oy = arraylike2object( y );
	if ( ox.accessorProtocol || oy.accessorProtocol ) {
		accessors( N, ox, strideX, offsetX, oy, strideY, offsetY );
		return y;
	}
	ix = offsetX;
	iy = offsetY;

	max = x[ ix ];
	y[ iy ] = max;

	iy += strideY;
	i = 1;
	if ( isnan( max ) === false ) {
		for ( i; i < N; i++ ) {
			ix += strideX;
			v = x[ ix ];
			if ( isnan( v ) ) {
				max = v;
				break;
			}
			if ( v > max || ( v === max && isPositiveZero( v ) ) ) {
				max = v;
			}
			y[ iy ] = max;
			iy += strideY;
		}
	}
	if ( isnan( max ) ) {
		for ( i; i < N; i++ ) {
			y[ iy ] = max;
			iy += strideY;
		}
	}
	return y;
}
Computes the cumulative maximum of a strided array.

@param {PositiveInteger} N - number of indexed elements
@param {NumericArray} x - input array
@param {integer} strideX - stride length for `x`
@param {NonNegativeInteger} offsetX - starting index for `x`
@param {NumericArray} y - output array
@param {integer} strideY - stride length for `y`
@param {NonNegativeInteger} offsetY - starting index for `y`
@returns {NumericArray} output array

@example
var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ];
var y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];

var v = cumax( 4, x, 2, 1, y, 1, 0 );
// returns [ 1.0, 1.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ]