Unary
Apply a unary callback to elements in an input ndarray and assign results to elements in an output ndarray.
Usage
var unary = require( '@stdlib/ndarray/base/unary' );
unary( arrays, fcn )
Applies a unary callback to elements in an input ndarray and assigns results to elements in an output ndarray.
var Float64Array = require( '@stdlib/array/float64' );
function scale( x ) {
    return x * 10.0;
}
// Create data buffers:
var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );
var ybuf = new Float64Array( 6 );
// Define the shape of the input and output arrays:
var shape = [ 3, 1, 2 ];
// Define the array strides:
var sx = [ 4, 4, 1 ];
var sy = [ 2, 2, 1 ];
// Define the index offsets:
var ox = 1;
var oy = 0;
// Create the input and output ndarray-like objects:
var x = {
    'dtype': 'float64',
    'data': xbuf,
    'shape': shape,
    'strides': sx,
    'offset': ox,
    'order': 'row-major'
};
var y = {
    'dtype': 'float64',
    'data': ybuf,
    'shape': shape,
    'strides': sy,
    'offset': oy,
    'order': 'row-major'
};
// Apply the unary function:
unary( [ x, y ], scale );
console.log( y.data );
// => <Float64Array>[ 20.0, 30.0, 60.0, 70.0, 100.0, 110.0 ]
The function accepts the following arguments:
- arrays: array-like object containing one input ndarray and one output ndarray.
 - fcn: unary function to apply.
 
Each provided ndarray should be an object with the following properties:
- dtype: data type.
 - data: data buffer.
 - shape: dimensions.
 - strides: stride lengths.
 - offset: index offset.
 - order: specifies whether an ndarray is row-major (C-style) or column major (Fortran-style).
 
Notes
- For very high-dimensional ndarrays which are non-contiguous, one should consider copying the underlying data to contiguous memory before applying a unary function in order to achieve better performance.
 
Examples
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory;
var filledarray = require( '@stdlib/array/filled' );
var filledarrayBy = require( '@stdlib/array/filled-by' );
var abs = require( '@stdlib/math/base/special/abs' );
var shape2strides = require( '@stdlib/ndarray/base/shape2strides' );
var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
var unary = require( '@stdlib/ndarray/base/unary' );
var N = 10;
var x = {
    'dtype': 'generic',
    'data': filledarrayBy( N, 'generic', discreteUniform( -100, 100 ) ),
    'shape': [ 5, 2 ],
    'strides': [ 2, 1 ],
    'offset': 0,
    'order': 'row-major'
};
var y = {
    'dtype': 'generic',
    'data': filledarray( 0, N, 'generic' ),
    'shape': x.shape.slice(),
    'strides': shape2strides( x.shape, 'column-major' ),
    'offset': 0,
    'order': 'column-major'
};
unary( [ x, y ], abs );
console.log( ndarray2array( x.data, x.shape, x.strides, x.offset, x.order ) );
console.log( ndarray2array( y.data, y.shape, y.strides, y.offset, y.order ) );
C APIs
Character codes for data types:
- x: 
bool(boolean). - c: 
complex64(single-precision floating-point complex number). - z: 
complex128(double-precision floating-point complex number). - f: 
float32(single-precision floating-point number). - d: 
float64(double-precision floating-point number). - k: 
int16(signed 16-bit integer). - i: 
int32(signed 32-bit integer). - s: 
int8(signed 8-bit integer). - t: 
uint16(unsigned 16-bit integer). - u: 
uint32(unsigned 32-bit integer). - b: 
uint8(unsigned 8-bit integer). 
Function name suffix naming convention:
stdlib_ndarray_<input_data_type>_<output_data_type>[_as_<callback_arg_data_type>_<callback_return_data_type>]
For example,
void stdlib_ndarray_d_d(...) {...}
is a function which accepts one double-precision floating-point input ndarray and one double-precision floating-point output ndarray. In other words, the suffix encodes the function type signature.
To support callbacks whose input arguments and/or return values are of a different data type than the input and/or output ndarray data types, the naming convention supports appending an as suffix. For example,
void stdlib_ndarray_f_f_as_d_d(...) {...}
is a function which accepts one single-precision floating-point input ndarray and one single-precision floating-point output ndarray. However, the callback accepts and returns double-precision floating-point numbers. Accordingly, the input and output values need to be cast using the following conversion sequence
// Convert each input array element to double-precision:
double in1 = (double)x[ i ];
// Evaluate the callback:
double out = f( in1 );
// Convert the callback return value to single-precision:
y[ i ] = (float)out;
When the input ndarray and the callback (i.e., the input argument and return value) share the same data type, the as suffix can be omitted. For example,
void stdlib_ndarray_f_d(...) {...}
is a function which accepts one single-precision floating-point input ndarray and one double-precision floating-point output ndarray. The callback is assumed to accept and return single-precision floating-point numbers. Accordingly, the input and output values are cast according to the following conversion sequence
// Retrieve each input array element as single-precision:
float in1 = (float)x[ i ];
// Evaluate the callback:
float out = f( in1 );
// Convert the callback return value to double-precision:
y[ i ] = (double)out;
Usage
#include "stdlib/ndarray/base/unary.h"
stdlib_ndarray_b_b( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT8;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 2, 1 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_b( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_b( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_b_as_u_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT8;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 2, 1 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_b_as_u_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_b_as_u_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_c_as_b_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_c_as_b_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_c_as_b_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_c_as_c_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_c_as_c_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_c_as_c_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_c_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_c_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_c_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_d_as_b_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_d_as_b_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_d_as_b_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_d_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_d_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_d_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_f_as_b_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_f_as_b_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_f_as_b_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_f_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_f_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_f_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_f_as_f_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_f_as_f_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_f_as_f_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_i_as_b_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_i_as_b_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_i_as_b_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_i_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_i_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_i_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_k( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_k( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_k( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_k_as_b_k( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_k_as_b_k( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_k_as_b_k( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_k_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_k_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_k_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_k_as_k_k( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_k_as_k_k( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_k_as_k_k( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_t( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_t( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_t( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_t_as_b_t( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_t_as_b_t( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_t_as_b_t( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_t_as_t_t( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_t_as_t_t( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_t_as_t_t( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_t_as_u_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_t_as_u_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_t_as_u_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_u_as_b_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_u_as_b_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_u_as_b_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_u_as_u_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_u_as_u_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_u_as_u_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint8_t fcn( const uint8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint8_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_z_as_b_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const uint8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_z_as_b_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(uint8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_z_as_b_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_b_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_b_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_b_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_c_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_c_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_c_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_c_c_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_c_c_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_c_c_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_c_f_as_c_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_c_f_as_c_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_c_f_as_c_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_c_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_c_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_c_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_c_z_as_c_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_c_z_as_c_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_c_z_as_c_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_c_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_c_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_c_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_d_i_as_d_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const double x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_d_i_as_d_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_d_i_as_d_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_d_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_d_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_d_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_d_z_as_d_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const double x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_d_z_as_d_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_d_z_as_d_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_d_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT64;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 16, 8 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_d_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_d_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_c_as_c_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_c_as_c_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_c_as_c_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_c_as_f_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const float x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_c_as_f_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_c_as_f_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_c_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_c_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_c_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_d_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_d_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_d_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_d_as_f_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const float x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_d_as_f_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_d_as_f_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_f_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_f_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_f_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_i_as_f_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const float x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_i_as_f_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_i_as_f_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_z_as_f_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const float x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_z_as_f_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_z_as_f_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_f_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_FLOAT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_f_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_f_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_d_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_d_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_d_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_d_as_i_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const int32_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_d_as_i_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_d_as_i_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_z_as_i_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const int32_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_z_as_i_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_z_as_i_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_i_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_i_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_i_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_c_as_c_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_c_as_c_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_c_as_c_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_c_as_k_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const int16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_c_as_k_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_c_as_k_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_c_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_c_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_c_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_d_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_d_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_d_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_d_as_k_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const int16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_d_as_k_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_d_as_k_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_f_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_f_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_f_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_f_as_f_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_f_as_f_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_f_as_f_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_f_as_k_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const int16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_f_as_k_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_f_as_k_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_i_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_i_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_i_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_i_as_k_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_i_as_k_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_i_as_k_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_k( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_k( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_k( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_k_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_k_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_k_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_t( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_t( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_t( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_t_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_t_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_t_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_u_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_u_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_u_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_z_as_k_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const int16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_z_as_k_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_z_as_k_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_k_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_k_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_k_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_b( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT8;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 2, 1 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_b( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_b( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_c_as_c_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_c_as_c_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_c_as_c_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_c_as_s_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const int8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_c_as_s_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_c_as_s_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_c_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_c_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_c_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_d_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_d_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_d_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_d_as_s_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const int8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_d_as_s_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_d_as_s_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_f_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_f_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_f_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_f_as_f_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_f_as_f_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_f_as_f_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_f_as_s_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const int8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_f_as_s_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_f_as_s_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_i_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_i_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_i_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_i_as_s_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_i_as_s_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_i_as_s_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_k( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_k( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_k( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_k_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_k_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_k_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_k_as_k_k( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_k_as_k_k( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_k_as_k_k( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_k_as_s_k( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int16_t fcn( const int8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_k_as_s_k( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint16_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_k_as_s_k( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_s( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT8;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 2, 1 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_s( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_s( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_s_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT8;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 2, 1 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_s_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_s_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_t( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_t( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_t( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_t_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_t_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_t_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_u_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_u_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_u_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int8_t fcn( const int8_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint8_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_z_as_s_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const int8_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_z_as_s_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(int8_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_z_as_s_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_s_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_INT8;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_s_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_s_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_c_as_c_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const stdlib_complex64_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_c_as_c_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(stdlib_complex64_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_c_as_c_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_c_as_t_c( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float32/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex64_t fcn( const uint16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_c_as_t_c( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex64_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_c_as_t_c( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_c_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_c_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_c_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_d_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_d_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_d_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_d_as_t_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const uint16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_d_as_t_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_d_as_t_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_f_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_f_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_f_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_f_as_f_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const float x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_f_as_f_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(float)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_f_as_f_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_f_as_t_f( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static float fcn( const uint16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_f_as_t_f( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*afloat (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_f_as_t_f( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_i_as_i_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const int32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_i_as_i_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(int32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_i_as_i_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_i_as_t_i( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_INT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static int32_t fcn( const uint16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_i_as_t_i( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*aint32_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_i_as_t_i( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_t( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_t( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_t( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_t_as_u_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT16;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 4, 2 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_t_as_u_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_t_as_u_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_u_as_t_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_u_as_t_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_u_as_t_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_u_as_u_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_u_as_u_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_u_as_u_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint16_t fcn( const uint16_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint16_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_z_as_t_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const uint16_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_z_as_t_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(uint16_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_z_as_t_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_t_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT16;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 4, 2 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_t_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_t_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_u_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_u_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_u_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_u_d_as_d_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const double x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_u_d_as_d_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(double)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_u_d_as_d_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_u_d_as_u_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const uint32_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_u_d_as_u_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_u_d_as_u_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_u_u( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_UINT32;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 8, 4 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_u_u( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_u_u( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_u_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static uint32_t fcn( const uint32_t x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_u_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*auint32_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_u_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_u_z_as_u_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const uint32_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_u_z_as_u_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(uint32_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_u_z_as_u_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_u_z_as_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_UINT32;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 8, 4 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_u_z_as_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_u_z_as_z_z( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_x_x( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_BOOL;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_BOOL;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 2, 1 };
int64_t sy[] = { 2, 1 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static bool fcn( const bool x ) {
    return x;
}
// Apply the callback:
int8_t status = stdlib_ndarray_x_x( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*abool (*f)(bool)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_x_x( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_z_d_as_z_d( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX128;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_FLOAT64;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 32, 16 };
int64_t sy[] = { 16, 8 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static double fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_z_d_as_z_d( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*adouble (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_z_d_as_z_d( struct ndarray *arrays[], void *fcn );
stdlib_ndarray_z_z( *arrays[], *fcn )
Applies a unary callback to an input ndarray and assigns results to elements in an output ndarray.
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include "stdlib/complex/float64/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
// Define the ndarray data types:
enum STDLIB_NDARRAY_DTYPE xdtype = STDLIB_NDARRAY_COMPLEX128;
enum STDLIB_NDARRAY_DTYPE ydtype = STDLIB_NDARRAY_COMPLEX128;
// Create underlying byte arrays:
uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
// Define the number of dimensions:
int64_t ndims = 2;
// Define the array shapes:
int64_t shape[] = { 2, 2 };
// Define the strides:
int64_t sx[] = { 32, 16 };
int64_t sy[] = { 32, 16 };
// Define the offsets:
int64_t ox = 0;
int64_t oy = 0;
// Define the array order:
enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
// Specify the index mode:
enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
// Specify the subscript index modes:
int8_t submodes[] = { imode };
int64_t nsubmodes = 1;
// Create an input ndarray:
struct ndarray *x = stdlib_ndarray_allocate( xdtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
if ( x == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an output ndarray:
struct ndarray *y = stdlib_ndarray_allocate( ydtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
if ( y == NULL ) {
    fprintf( stderr, "Error allocating memory.\n" );
    exit( EXIT_FAILURE );
}
// Create an array containing the ndarrays:
struct ndarray *arrays[] = { x, y };
// Define a callback:
static stdlib_complex128_t fcn( const stdlib_complex128_t x ) {
    // ...
}
// Apply the callback:
int8_t status = stdlib_ndarray_z_z( arrays, (void *)fcn );
if ( status != 0 ) {
    fprintf( stderr, "Error during computation.\n" );
    exit( EXIT_FAILURE );
}
// ...
// Free allocated memory:
stdlib_ndarray_free( x );
stdlib_ndarray_free( y );
The function accepts the following arguments:
- arrays: 
[inout] struct ndarray**array whose first element is a pointer to an input ndarray and whose second element is a pointer to an output ndarray. - fcn: 
[in] void*astdlib_complex128_t (*f)(stdlib_complex128_t)function to apply provided as avoidpointer. 
int8_t stdlib_ndarray_z_z( struct ndarray *arrays[], void *fcn );
Examples
#include "stdlib/ndarray/base/unary.h"
#include "stdlib/ndarray/dtypes.h"
#include "stdlib/ndarray/index_modes.h"
#include "stdlib/ndarray/orders.h"
#include "stdlib/ndarray/ctor.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
static void print_ndarray_contents( const struct ndarray *x ) {
    int64_t i;
    int8_t s;
    double v;
    for ( i = 0; i < stdlib_ndarray_length( x ); i++ ) {
        s = stdlib_ndarray_iget_float64( x, i, &v );
        if ( s != 0 ) {
            fprintf( stderr, "Unable to resolve data element.\n" );
            exit( EXIT_FAILURE );
        }
        fprintf( stdout, "data[%"PRId64"] = %lf\n", i, v );
    }
}
static double scale( const double x ) {
    return x + 10.0;
}
int main( void ) {
    // Define the ndarray data type:
    enum STDLIB_NDARRAY_DTYPE dtype = STDLIB_NDARRAY_FLOAT64;
    // Create underlying byte arrays:
    uint8_t xbuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    uint8_t ybuf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    // Define the number of dimensions:
    int64_t ndims = 3;
    // Define the array shapes:
    int64_t shape[] = { 2, 2, 2 };
    // Define the strides:
    int64_t sx[] = { 32, 16, 8 };
    int64_t sy[] = { 32, 16, 8 };
    // Define the offsets:
    int64_t ox = 0;
    int64_t oy = 0;
    // Define the array order:
    enum STDLIB_NDARRAY_ORDER order = STDLIB_NDARRAY_ROW_MAJOR;
    // Specify the index mode:
    enum STDLIB_NDARRAY_INDEX_MODE imode = STDLIB_NDARRAY_INDEX_ERROR;
    // Specify the subscript index modes:
    int8_t submodes[] = { imode };
    int64_t nsubmodes = 1;
    // Create an input ndarray:
    struct ndarray *x = stdlib_ndarray_allocate( dtype, xbuf, ndims, shape, sx, ox, order, imode, nsubmodes, submodes );
    if ( x == NULL ) {
        fprintf( stderr, "Error allocating memory.\n" );
        exit( EXIT_FAILURE );
    }
    // Create an output ndarray:
    struct ndarray *y = stdlib_ndarray_allocate( dtype, ybuf, ndims, shape, sy, oy, order, imode, nsubmodes, submodes );
    if ( y == NULL ) {
        fprintf( stderr, "Error allocating memory.\n" );
        exit( EXIT_FAILURE );
    }
    // Define an array containing the ndarrays:
    struct ndarray *arrays[] = { x, y };
    // Apply the callback:
    int8_t status = stdlib_ndarray_d_d( arrays, (void *)scale );
    if ( status != 0 ) {
        fprintf( stderr, "Error during computation.\n" );
        exit( EXIT_FAILURE );
    }
    // Print the results:
    print_ndarray_contents( y );
    fprintf( stdout, "\n" );
    // Free allocated memory:
    stdlib_ndarray_free( x );
    stdlib_ndarray_free( y );
}