time-to-botec/squiggle/node_modules/@stdlib/ndarray/base/strides2offset/README.md
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00

3.1 KiB

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 = [ 0, 0, 0 ];
shape[ 0 ] = discreteUniform( 1, 10 );
shape[ 1 ] = discreteUniform( 1, 10 );
shape[ 2 ] = discreteUniform( 1, 10 );

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

arr = [];
for ( i = 0; i < len; i++ ) {
    arr.push( 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 ] );
}