Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Promotion Rules

Return the array data type with the smallest size and closest "kind" to which array data types can be safely cast.

Usage

var promotionRules = require( '@stdlib/array/promotion-rules' );

promotionRules( [dtype1, dtype2] )

If provided data types, returns the array data type with the smallest size and closest "kind" to which array data types can be safely cast.

var out = promotionRules( 'float32', 'uint32' );
// returns 'float64'

If 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 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 cartesianProduct = require( '@stdlib/array/cartesian-product' );
var dtypes = require( '@stdlib/array/dtypes' );
var unzip = require( '@stdlib/utils/unzip' );
var logEachMap = require( '@stdlib/console/log-each-map' );
var promotionRules = require( '@stdlib/array/promotion-rules' );

// Get the list of supported array 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 array data types:
logEachMap( '(%s, %s) => %s', args[ 0 ], args[ 1 ], promotionRules );

See Also