summaryrefslogtreecommitdiff
path: root/node_modules/core-js/modules/es7.math.imulh.js
blob: a25da686ae5bdad95eaf77395ca11edb2fd1af47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
var $export = require('./_export');

$export($export.S, 'Math', {
  imulh: function imulh(u, v){
    var UINT16 = 0xffff
      , $u = +u
      , $v = +v
      , u0 = $u & UINT16
      , v0 = $v & UINT16
      , u1 = $u >> 16
      , v1 = $v >> 16
      , t  = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
    return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
  }
});