time-to-botec/squiggle/node_modules/@stdlib/math/base/special/uimul/README.md
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00

2.0 KiB

uimul

Perform C-like multiplication of two unsigned 32-bit integers.

Usage

var uimul = require( '@stdlib/math/base/special/uimul' );

uimul( a, b )

Performs C-like multiplication of two unsigned 32-bit integers.

var v = uimul( 10>>>0, 4>>>0 );
// returns 40

v = uimul( 2147483648>>>0, 5>>>0 ); // 2^31 * 5 = 10737418240 => 32-bit integer overflow
// returns 2147483648

Notes

  • The function emulates C-like multiplication of two unsigned 32-bit integers.

Examples

var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory;
var UINT32_MAX = require( '@stdlib/constants/uint32/max' );
var uimul = require( '@stdlib/math/base/special/uimul' );

var randi;
var a;
var b;
var y;
var i;

randi = discreteUniform( 0, UINT32_MAX );

for ( i = 0; i < 100; i++ ) {
    a = randi()>>>0;
    b = randi()>>>0;
    y = uimul( a, b );
    console.log( '%d x %d = %d', a, b, y );
}