The Math.imul()
function returns the result of the C-like 32-bit multiplication of the two parameters.
The Math.imul()
function returns the result of the C-like 32-bit multiplication of the two parameters.
Math.imul(a, b)
a
First number.
b
Second number.
The result of the C-like 32-bit multiplication of the given arguments.
Math.imul()
allows for 32-bit integer multiplication with C-like semantics. This feature is useful for projects like Emscripten.
Because imul()
is a static method of Math
, you always use it as Math.imul()
, rather than as a method of a Math
object you created (Math
is not a constructor).
If you use normal JavaScript floating point numbers in imul, you will experience a degrade in performance. This is because of the costly conversion from a floating point to an integer for multiplication, and then converting the multiplied integer back into a floating point. The reason imul exists is because it is faster in only one (so far) circumstance: AsmJS. AsmJS allows for JIT-optimizers to more easily implement internal integers in JavaScript. Multiplying two numbers stored internally as integers (which is only possible with AsmJS) with imul is the only potential circumstance where Math.imul may prove performant in current browsers.
Math.imul(2, 4); // 8 Math.imul(-1, 8); // -8 Math.imul(-2, -2); // 4 Math.imul(0xffffffff, 5); // -5 Math.imul(0xfffffffe, 5); // -10
Specification |
---|
ECMAScript Language Specification # sec-math.imul |
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | Deno | Node.js | |
imul |
28 |
12 |
20 |
No |
16 |
7 |
4.4 |
28 |
20 |
15 |
7 |
1.5 |
1.0 |
0.12.0 |
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul