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 );
        }
    }
}
Did you find this page helpful?