# Min View Buffer Index > Compute the minimum linear index in an underlying data buffer accessible to an array view.
## Usage ```javascript var minViewBufferIndex = require( '@stdlib/ndarray/base/min-view-buffer-index' ); ``` #### minViewBufferIndex( shape, strides, offset ) Computes the minimum linear index in an underlying data buffer accessible to an array view. ```javascript // Array shape: var shape = [ 2, 2 ]; // Stride array: var strides = [ -2, -1 ]; // Index offset which specifies the location of the first indexed value: var offset = 13; // includes a view offset var idx = minViewBufferIndex( shape, strides, offset ); // returns 10 ```
## Examples ```javascript var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); var randu = require( '@stdlib/random/base/randu' ); var minViewBufferIndex = require( '@stdlib/ndarray/base/min-view-buffer-index' ); var strides; var offset; var shape; var idx; var i; var j; shape = [ 0, 0, 0 ]; for ( i = 0; i < 100; i++ ) { // Generate a random array shape: shape[ 0 ] = discreteUniform( 1, 10 ); shape[ 1 ] = discreteUniform( 1, 10 ); shape[ 2 ] = discreteUniform( 1, 10 ); // Generate strides: if ( randu() < 0.5 ) { strides = shape2strides( shape, 'row-major' ); } else { strides = shape2strides( shape, 'column-major' ); } j = discreteUniform( 0, shape.length-1 ); strides[ j ] *= ( randu() < 0.5 ) ? -1 : 1; // Compute the index offset: offset = strides2offset( shape, strides ) + 25; // include view offset // Compute the minimum linear index: idx = minViewBufferIndex( shape, strides, offset ); console.log( 'Shape: %s. Strides: %s. Offset: %d. Min idx: %d.', shape.join( 'x' ), strides.join( ',' ), offset, idx ); } ```