# ind > Return an index given an index mode.
## Usage ```javascript var ind = require( '@stdlib/ndarray/base/ind' ); ``` #### ind( idx, max, mode ) Returns an index given an index `mode`. ```javascript var idx = ind( 2, 9, 'throw' ); // returns 2 idx = ind( -1, 9, 'throw' ); // throws idx = ind( 10, 9, 'throw' ); // throws ``` The function supports the following `modes`: - `throw`: specifies that the function should throw an error when an index is outside the interval `[0,max]`. - `wrap`: specifies that the function should wrap around an index using modulo arithmetic. - `clamp`: specifies that the function should set an index less than `0` to `0` (minimum index) and set an index greater than `max` to `max`. ```javascript var idx = ind( 2, 9, 'wrap' ); // returns 2 idx = ind( 10, 9, 'wrap' ); // returns 0 idx = ind( -1, 9, 'wrap' ); // returns 9 idx = ind( 2, 9, 'clamp' ); // returns 2 idx = ind( 10, 9, 'clamp' ); // returns 9 idx = ind( -1, 9, 'clamp' ); // returns 0 ```
## Examples ```javascript var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var ind = require( '@stdlib/ndarray/base/ind' ); var modes; var mode; var idx; var out; var i; modes = [ 'clamp', 'wrap' ]; for ( i = 0; i < 100; i++ ) { idx = discreteUniform( -20, 20 ); mode = modes[ discreteUniform( 0, modes.length-1 ) ]; out = ind( idx, 9, mode ); console.log( '%d => %s(%d,%d) => %d', idx, mode, 0, 9, out ); } ```