isAllowedCast
Determine whether an ndarray data type can be cast to another ndarray data type according to a specified casting mode.
Usage
var isAllowedCast = require( '@stdlib/ndarray/base/assert/is-allowed-data-type-cast' );
isAllowedCast( from, to, casting )
Returns a boolean indicating whether an ndarray data type can be cast to another ndarray data type according to a specified casting
mode.
var bool = isAllowedCast( 'float32', 'float64', 'safe' );
// returns true
bool = isAllowedCast( 'float64', 'int32', 'safe' );
// returns false
The following casting
modes are supported:
none
: only allow casting between identical types.equiv
: allow casting between identical and byte swapped types.safe
: only allow "safe" casts.mostly-safe
: allow "safe" casts and, for floating-point data types, downcasts.same-kind
: allow "safe" casts and casts within the same kind (e.g., between signed integers or between floats).unsafe
: allow casting between all types (including between integers and floats).
Examples
var dtypes = require( '@stdlib/ndarray/dtypes' );
var modes = require( '@stdlib/ndarray/casting-modes' );
var isAllowedCast = require( '@stdlib/ndarray/base/assert/is-allowed-data-type-cast' );
var DTYPES;
var MODES;
var bool;
var dt1;
var dt2;
var i;
var j;
var k;
// Get a list of supported ndarray data types and casting modes:
DTYPES = dtypes();
MODES = modes();
// For each data type and mode, determine whether one can cast to another data type...
for ( i = 0; i < DTYPES.length; i++ ) {
dt1 = DTYPES[ i ];
for ( j = 0; j < DTYPES.length; j++ ) {
dt2 = DTYPES[ j ];
for ( k = 0; k < MODES.length; k++ ) {
bool = isAllowedCast( dt1, dt2, MODES[ k ] );
console.log( '%s => %s. %s: %s.', dt1, dt2, MODES[ k ], bool );
}
}
}