function minViewBufferIndex( shape, strides, offset ) {
	var ndims;
	var idx;
	var i;

	ndims = shape.length;
	idx = offset;
	for ( i = 0; i < ndims; i++ ) {
		if ( shape[ i ] === 0 ) {
			return offset;
		}
		if ( strides[ i ] < 0 ) {
			idx += strides[ i ] * ( shape[ i ] - 1 ); // decrements the index
		}
	}
	return idx;
}
Computes the minimum linear index in an underlying data buffer accessible to an array view.

@param {NonNegativeIntegerArray} shape - array shape
@param {IntegerArray} strides - stride array
@param {NonNegativeInteger} offset - index offset
@returns {NonNegativeInteger} linear index

@example
var shape = [ 10, 10 ];
var strides = [ 10, 1 ];
var offset = 10;

var idx = minViewBufferIndex( shape, strides, offset );
// returns 10

@example
var shape = [ 10, 10 ];
var strides = [ -10, -1 ];
var offset = 109;

var idx = minViewBufferIndex( shape, strides, offset );
// returns 10

@example
var shape = [ 10, 10 ];
var strides = [ 1, 10 ];
var offset = 10;

var idx = minViewBufferIndex( shape, strides, offset );
// returns 10

@example
var shape = [ 10, 10 ];
var strides = [ -1, -10 ];
var offset = 109;

var idx = minViewBufferIndex( shape, strides, offset );
// returns 10