stride2offset

Determine the index offset which specifies the location of the first indexed value in a strided array.

Usage

var stride2offset = require( '@stdlib/strided/base/stride2offset' );

stride2offset( N, stride )

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

var offset = stride2offset( 10, 10 );
// returns 0

offset = stride2offset( 10, -10 );
// returns 90

Examples

var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var stride2offset = require( '@stdlib/strided/base/stride2offset' );

var opts = {
    'dtype': 'generic'
};

// Define the number of indexed elements:
var N = 100;

// Define a maximum stride length:
var maxStride = 10;

// Create an array of random integers which can accommodate the maximum stride length:
var arr = discreteUniform( N*maxStride, 0, 255, opts );

// Generate random stride lengths:
var strides = discreteUniform( 10, -maxStride, maxStride, opts );

// Resolve values in the data array for the first indexed element based on various stride lengths...
var offset;
var i;
for ( i = 0; i < strides.length; i++ ) {
    offset = stride2offset( N, strides[ i ] );
    console.log( 'stride = %d. arr[%d] = %d.', strides[ i ], offset, arr[ offset ] );
}

C APIs

Usage

#include "stdlib/strided/base/stride2offset.h"

stdlib_strided_stride2offset( N, stride )

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

#include "stdlib/strided/base/stride2offset.h"
#include <stdint.h>

int64_t offset = stdlib_strided_stride2offset( 10, -10 );
// returns 90

The function accepts the following arguments:

  • N: [in] int64_t number of indexed elements.
  • stride: [in] int64_t index increment.
int64_t stdlib_strided_stride2offset( int64_t N, int64_t stride );

Examples

#include "stdlib/strided/base/stride2offset.h"
#include <stdint.h>
#include <stdio.h>
#include <inttypes.h>

int main( void ) {
    // Specify the number of indexed elements:
    int64_t N = 6;

    // Define a stride:
    int64_t stride = -2;

    // Compute the offset:
    int64_t offset = stdlib_strided_stride2offset( N, stride )

    // Print the results:
    printf( "stride: %"PRId64" => offset: %"PRId64"\n", stride, offset );
}
Did you find this page helpful?