time-to-botec/squiggle/node_modules/@stdlib/ndarray/promotion-rules
..
docs
include/stdlib/ndarray
lib
manifest.json
package.json
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 dtypes = require( '@stdlib/ndarray/dtypes' );
var promotionRules = require( '@stdlib/ndarray/promotion-rules' );

var DTYPES;
var dt1;
var dt2;
var dt;
var i;
var j;

// Get the list of supported ndarray data types:
DTYPES = dtypes();

// Print the promotion rule for each pair of ndarray 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 );
    }
}