]> 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
[rbdr/dotfiles] / atom / packages / vim-mode / node_modules / grim / node_modules / emissary / node_modules / es6-weak-map / node_modules / es5-ext / math / imul / shim.js
1 // Thanks: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
2 // /Global_Objects/Math/imul
3
4 'use strict';
5
6 module.exports = function (x, y) {
7 var xh = (x >>> 16) & 0xffff, xl = x & 0xffff
8 , yh = (y >>> 16) & 0xffff, yl = y & 0xffff;
9
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);
13 };