Return the ndarray data type with the smallest size and closest "kind" to which ndarray data types can be safely cast.
var promotionRules = require( '@stdlib/ndarray/promotion-rules' );If provided data types, returns the ndarray data type with the smallest size and closest "kind" to which ndarray data types can be safely cast.
var out = promotionRules( 'float32', 'uint32' );
// returns 'float64'If a data type to which data types can be safely cast does not exist (or is not supported), the function returns -1.
var out = promotionRules( 'binary', 'generic' );
// returns -1If not provided data types, the function returns a promotion table.
var out = promotionRules();
// returns {...}
var f32 = out[ 'float32' ];
// returns {...}
var rule = f32[ 'uint32' ];
// returns 'float64'If provided an unrecognized or unsupported dtype, the function returns null.
var out = promotionRules( 'foo', 'generic' );
// returns nullvar cartesianProduct = require( '@stdlib/array/cartesian-product' );
var dtypes = require( '@stdlib/ndarray/dtypes' );
var unzip = require( '@stdlib/utils/unzip' );
var logEachMap = require( '@stdlib/console/log-each-map' );
var promotionRules = require( '@stdlib/ndarray/promotion-rules' );
// Get the list of supported ndarray data types:
var dt = dtypes();
// Generate a list of data type pairs:
var pairs = cartesianProduct( dt, dt );
// Split the pairs into separate arrays:
var args = unzip( pairs );
// Print the promotion rule for each pair of ndarray data types:
logEachMap( '(%s, %s) => %s', args[ 0 ], args[ 1 ], promotionRules );@stdlib/ndarray/casting-modes: list of ndarray casting modes.@stdlib/ndarray/dtypes: list of ndarray data types.@stdlib/ndarray/safe-casts: return a list of ndarray data types to which a provided ndarray data type can be safely cast.