strides2offset

Determine the index offset which specifies the location of the first indexed value in a multidimensional array based on a stride array.

Usage

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

strides2offset( shape, strides )

Returns the index offset which specifies the location of the first indexed value in a multidimensional array.

var offset = strides2offset( [ 3, 2 ], [ 2, 1 ] );
// returns 0

offset = strides2offset( [ 3, 2 ], [ -2, 1 ] );
// returns 4

Examples

var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var shape2strides = require( '@stdlib/ndarray/base/shape2strides' );
var numel = require( '@stdlib/ndarray/base/numel' );
var randu = require( '@stdlib/random/base/randu' );
var strides2offset = require( '@stdlib/ndarray/base/strides2offset' );

var strides;
var offset;
var shape;
var len;
var arr;
var i;
var j;

shape = new Array( 3 );
shape[ 0 ] = discreteUniform( 1, 10 );
shape[ 1 ] = discreteUniform( 1, 10 );
shape[ 2 ] = discreteUniform( 1, 10 );

strides = shape2strides( shape, 'row-major' );
len = numel( shape );

arr = new Array( len );
for ( i = 0; i < len; i++ ) {
    arr[ i ] = i;
}
for ( i = 0; i < 100; i++ ) {
    j = discreteUniform( 0, shape.length-1 );
    strides[ j ] *= ( randu() < 0.5 ) ? -1 : 1;
    offset = strides2offset( shape, strides );
    console.log( 'arr[0][0][0] = %d', arr[ offset ] );
}