149 lines
5.0 KiB
Plaintext
149 lines
5.0 KiB
Plaintext
|
|
||
|
{{alias}}( fcns, types, data, nargs, nin, nout )
|
||
|
Returns a strided array function interface which performs multiple dispatch.
|
||
|
|
||
|
Without offsets, a strided array function interface has the following
|
||
|
signature:
|
||
|
|
||
|
f( N, x, strideX, y, strideY, ... )
|
||
|
|
||
|
where
|
||
|
|
||
|
- N: number of indexed elements.
|
||
|
- x: strided array.
|
||
|
- strideX: index increment for `x`.
|
||
|
- y: strided array.
|
||
|
- strideY: index increment for `y`.
|
||
|
- ...: additional strided arrays and associated strides.
|
||
|
|
||
|
The number of parameters is derived from `nargs`, the number of input
|
||
|
strided arrays is derived from `nin`, and the number of output strided
|
||
|
arrays is derived from `nout`.
|
||
|
|
||
|
Without offsets, the number of parameters must obey the following relation:
|
||
|
|
||
|
nargs = 2*(nout+nin) + 1
|
||
|
|
||
|
With offsets, the number of parameters must obey the following relation:
|
||
|
|
||
|
nargs = 3*(nout+nin) + 1
|
||
|
|
||
|
With offsets, a strided array function interface has the following
|
||
|
signature:
|
||
|
|
||
|
f( N, x, strideX, offsetX, y, strideY, offsetY, ... )
|
||
|
|
||
|
where
|
||
|
|
||
|
- N: number of indexed elements.
|
||
|
- x: strided array.
|
||
|
- strideX: index increment for `x`.
|
||
|
- offsetX: starting index for `x`.
|
||
|
- y: strided array.
|
||
|
- strideY: index increment for `y`.
|
||
|
- offsetY: starting index for `y`.
|
||
|
- ...: additional strided arrays and associated strides and offsets.
|
||
|
|
||
|
The choice of which strided array function interface to return depends on
|
||
|
the use case. The former is suitable for typed array views; while the latter
|
||
|
affords alternative indexing semantics more suitable for n-dimensional
|
||
|
arrays (ndarrays).
|
||
|
|
||
|
Parameters
|
||
|
----------
|
||
|
fcns: Function|ArrayLikeObject<Function>
|
||
|
List of strided array functions. Without offsets, a strided array
|
||
|
function should have the following signature:
|
||
|
|
||
|
f( arrays, shape, strides, data )
|
||
|
|
||
|
where
|
||
|
|
||
|
- arrays: array containing strided input and output arrays.
|
||
|
- shape: array containing a single element, the number of indexed
|
||
|
elements.
|
||
|
- strides: array containing the stride lengths for the strided input and
|
||
|
output arrays.
|
||
|
- data: strided array function data (e.g., a callback).
|
||
|
|
||
|
With offsets, a strided array function should have the following
|
||
|
signature:
|
||
|
|
||
|
f( arrays, shape, strides, offsets, data )
|
||
|
|
||
|
where
|
||
|
|
||
|
- offsets: array containing the starting indices (i.e., index offsets)
|
||
|
for the strided input and output arrays.
|
||
|
|
||
|
For convenience, a single strided array function may be provided which
|
||
|
will be invoked whenever the strided array argument data types match a
|
||
|
sequence of types in `types`. Providing a single strided array function
|
||
|
is particularly convenient for the case where, regardless of array data
|
||
|
types, traversing arrays remains the same, but the strided array
|
||
|
function `data` differs (e.g., callbacks which differ based on the array
|
||
|
data types).
|
||
|
|
||
|
types: ArrayLikeObject<string>
|
||
|
One-dimensional list of strided array argument data types.
|
||
|
|
||
|
data: ArrayLikeObject|null
|
||
|
Strided array function data (e.g., callbacks). If `null`, a returned
|
||
|
strided array function interface does **not** provide a `data` argument
|
||
|
to an invoked strided array function.
|
||
|
|
||
|
nargs: integer
|
||
|
Total number of strided array function interface arguments (including
|
||
|
strides and offsets).
|
||
|
|
||
|
nin: integer
|
||
|
Number of input strided arrays.
|
||
|
|
||
|
nout: integer
|
||
|
Number of output strided arrays.
|
||
|
|
||
|
Returns
|
||
|
-------
|
||
|
fcn: Function
|
||
|
Strided array function interface.
|
||
|
|
||
|
Examples
|
||
|
--------
|
||
|
// Define strided array argument data types:
|
||
|
> var t = [ 'float64', 'float64', 'float32', 'float32' ];
|
||
|
|
||
|
// Define a list of strided array function data (callbacks):
|
||
|
> var d = [ {{alias:@stdlib/math/base/special/abs}}, {{alias:@stdlib/math/base/special/absf}} ];
|
||
|
|
||
|
// Create a strided array function interface for applying unary callbacks:
|
||
|
> var f = {{alias}}( {{alias:@stdlib/strided/base/unary}}, t, d, 5, 1, 1 );
|
||
|
|
||
|
// Create an input strided array:
|
||
|
> var x = new {{alias:@stdlib/array/float64}}( [ -1.0, -2.0, -3.0, -4.0 ] );
|
||
|
|
||
|
// Create an output strided array:
|
||
|
> var y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0 ] );
|
||
|
|
||
|
// Compute the element-wise absolute value:
|
||
|
> f( x.length, x, 1, y, 1 );
|
||
|
> y
|
||
|
<Float64Array>[ 1.0, 2.0, 3.0, 4.0 ]
|
||
|
|
||
|
// Create a strided array function interface supporting offsets:
|
||
|
> f = {{alias}}( {{alias:@stdlib/strided/base/unary}}.ndarray, t, d, 7, 1, 1 );
|
||
|
|
||
|
// Create an input strided array:
|
||
|
> x = new {{alias:@stdlib/array/float64}}( [ -1.0, -2.0, -3.0, -4.0 ] );
|
||
|
|
||
|
// Create an output strided array:
|
||
|
> y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0 ] );
|
||
|
|
||
|
// Compute the element-wise absolute value starting from the third element:
|
||
|
> f( x.length/2, x, 1, 2, y, 1, 2 );
|
||
|
> y
|
||
|
<Float64Array>[ 0.0, 0.0, 3.0, 4.0 ]
|
||
|
|
||
|
See Also
|
||
|
--------
|
||
|
|