Skip to content

Files

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jul 28, 2024
Sep 21, 2024
Feb 2, 2018
Mar 28, 2021
Nov 25, 2023
Nov 25, 2023
Nov 25, 2023
Nov 25, 2023
Apr 14, 2025
Aug 12, 2021

README.md

ind

Return an index given an index mode.

Usage

var ind = require( '@stdlib/ndarray/base/ind' );

ind( idx, max, mode )

Returns an index given an index mode.

var idx = ind( 2, 9, 'throw' );
// returns 2

idx = ind( -1, 9, 'throw' );
// throws <RangeError>

idx = ind( 10, 9, 'throw' );
// throws <RangeError>

// Wrapping indices around using modulo arithmetic:
idx = ind( 2, 9, 'wrap' );
// returns 2

idx = ind( 10, 9, 'wrap' );
// returns 0

idx = ind( -1, 9, 'wrap' );
// returns 9

// Clamping indices to first and last indices:
idx = ind( 2, 9, 'clamp' );
// returns 2

idx = ind( 10, 9, 'clamp' );
// returns 9

idx = ind( -1, 9, 'clamp' );
// returns 0

// Normalizing negative indices:
idx = ind( 2, 9, 'normalize' );
// returns 2

idx = ind( -4, 9, 'normalize' );
// returns 6

ind.factory( mode )

Returns a function for returning an index according to a provided index mode.

var fcn = ind.factory( 'clamp' );

var idx = fcn( 2, 9 );
// returns 2

idx = fcn( 10, 9 );
// returns 9

idx = fcn( -1, 9 );
// returns 0

The function returns a function accepts the following arguments:

  • index: input index.
  • max: maximum index value.

Notes

  • Both functions support the following modes:

    • throw: specifies that the function should throw an error when an index is outside the interval [0, max].
    • normalize: specifies that the function should normalize negative indices and throw an error when an index is outside the interval [-max-1, 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.

Examples

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 );
}