]>
git.r.bdr.sh - rbdr/dotfiles/blob - atom/packages/vim-mode/node_modules/grim/node_modules/emissary/node_modules/es6-weak-map/node_modules/es5-ext/math/imul/shim.js
8fd8a8d7a7911107ee476bcf175cc74dcd70f4b2
1 // Thanks: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
2 // /Global_Objects/Math/imul
6 module
.exports = function (x
, y
) {
7 var xh
= (x
>>> 16) & 0xffff, xl
= x
& 0xffff
8 , yh
= (y
>>> 16) & 0xffff, yl
= y
& 0xffff;
10 // the shift by 0 fixes the sign on the high part
11 // the final |0 converts the unsigned value into a signed value
12 return ((xl
* yl
) + (((xh
* yl
+ xl
* yh
) << 16) >>> 0) | 0);