Promotion Rules
Return the complex number data type with the smallest size and closest "kind" to which data types can be safely cast.
Usage
var promotionRules = require( '@stdlib/complex/promotion-rules' );
promotionRules( [dtype1, dtype2] )
If provided data types, returns the complex number data type with the smallest size and closest "kind" to which data types can be safely cast.
var out = promotionRules( 'complex128', 'complex64' );
// returns 'complex128'
If not provided data types, the function returns a promotion table.
var out = promotionRules();
// returns {...}
var c128 = out[ 'complex128' ];
// returns {...}
var rule = c128[ 'uint32' ];
// returns 'complex128'
If provided an unrecognized or unsupported dtype
, the function returns null
.
var out = promotionRules( 'foo', 'complex128' );
// returns null
Notes
- If a data type to which data types can be safely cast does not exist (or is not supported), the function returns
-1
.
Examples
var dtypes = require( '@stdlib/complex/dtypes' );
var promotionRules = require( '@stdlib/complex/promotion-rules' );
var DTYPES;
var dt1;
var dt2;
var dt;
var i;
var j;
// Get the list of supported data types:
DTYPES = dtypes();
// Print the promotion rule for each pair of data types...
for ( i = 0; i < DTYPES.length; i++ ) {
dt1 = DTYPES[ i ];
for ( j = 0; j < DTYPES.length; j++ ) {
dt2 = DTYPES[ j ];
dt = promotionRules( dt1, dt2 );
console.log( '(%s, %s) => %s', dt1, dt2, dt );
}
}