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 ndarray data type with the smallest size and closest "kind" to which ndarray data types can be safely cast.

Usage

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

promotionRules( [dtype1, dtype2] )

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 -1

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

Examples

var 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 );

See Also