Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

imuldw

Compute the double word product of two signed 32-bit integers.

Usage

var imuldw = require( '@stdlib/number/int32/base/muldw' );

imuldw( a, b )

Multiplies two signed 32-bit integers and returns an array of two signed 32-bit integers which represents the signed 64-bit integer product.

var v = imuldw( 1, 10 );
// returns [ 0, 10 ]

v = imuldw( 0x80000000|0, 0x40000000|0 ); // -(2^31) * 2^30 = -2305843009213694000 => 32-bit integer overflow
// returns [ -536870912, 0 ]

imuldw.assign( a, b, out, stride, offset )

Multiplies two signed 32-bit integers and assigns results representing the signed 64-bit integer product to a provided output array.

var out = [ 0, 0 ];

var v = imuldw.assign( 1, 10, out, 1, 0 );
// returns [ 0, 10 ]

var bool = ( v === out );
// returns true

Notes

Examples

var lpad = require( '@stdlib/string/left-pad' );
var imuldw = require( '@stdlib/number/int32/base/muldw' );

var i;
var j;
var y;

for ( i = 0x7FFFFFF0; i < 0x7FFFFFFF; i++ ) {
    for ( j = i; j < 0x7FFFFFFF; j++) {
        y = imuldw( i|0, j|0 );
        console.log( '%d x %d = 0x%s%s', i|0, j|0, lpad( ( y[0] >>> 0 ).toString( 16 ), 8, '0'), lpad( ( y[1] >>> 0 ).toString( 16 ), 8, '0' ) );
    }
}

See Also