UNPKG

foop

Version:

interfaces that describe their intentions.

35 lines (33 loc) 2.47 kB
/** * @name multiplySigned * @alias imul * * @desc multiply signed integers * @see math/signed * * @see https://stackoverflow.com/questions/21052816/why-would-i-use-math-imul * @see https://github.com/facebook/immutable-js/blob/master/src/Math.js#L10 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul */ module.exports = Math.imul // @TODO polyfil // typeof Math.imul === 'function' && // Math.imul(0xffffffff, 2) === -2 // ? Math.imul // : // /** // * @param {number} a // * @param {number} b // * @return {int} // * // */ // function imul(a, b) { // a |= 0 // int // b |= 0 // int // const c = a & 0xffff // const d = b & 0xffff // // Shift by 0 fixes the sign on the high part. // // eslint-disable-next-line // return c * d + ((a >>> 16) * d + c * (b >>> 16) << 16 >>> 0) | 0 // } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbHlTaWduZWQuanMiLCJzb3VyY2VzIjpbIm11bHRpcGx5U2lnbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG5hbWUgbXVsdGlwbHlTaWduZWRcbiAqIEBhbGlhcyBpbXVsXG4gKlxuICogQGRlc2MgbXVsdGlwbHkgc2lnbmVkIGludGVnZXJzXG4gKiBAc2VlIG1hdGgvc2lnbmVkXG4gKlxuICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMTA1MjgxNi93aHktd291bGQtaS11c2UtbWF0aC1pbXVsXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9pbW11dGFibGUtanMvYmxvYi9tYXN0ZXIvc3JjL01hdGguanMjTDEwXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL01hdGgvaW11bFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGguaW11bFxuXG4vLyBAVE9ETyBwb2x5ZmlsXG4vLyB0eXBlb2YgTWF0aC5pbXVsID09PSAnZnVuY3Rpb24nICYmXG4vLyAgIE1hdGguaW11bCgweGZmZmZmZmZmLCAyKSA9PT0gLTJcbi8vICAgPyBNYXRoLmltdWxcbi8vICAgOlxuLy8gICAvKipcbi8vICAgICogQHBhcmFtIHtudW1iZXJ9IGFcbi8vICAgICogQHBhcmFtIHtudW1iZXJ9IGJcbi8vICAgICogQHJldHVybiB7aW50fVxuLy8gICAgKlxuLy8gICAgKi9cbi8vICAgZnVuY3Rpb24gaW11bChhLCBiKSB7XG4vLyAgICAgYSB8PSAwIC8vIGludFxuLy8gICAgIGIgfD0gMCAvLyBpbnRcbi8vICAgICBjb25zdCBjID0gYSAmIDB4ZmZmZlxuLy8gICAgIGNvbnN0IGQgPSBiICYgMHhmZmZmXG4vLyAgICAgLy8gU2hpZnQgYnkgMCBmaXhlcyB0aGUgc2lnbiBvbiB0aGUgaGlnaCBwYXJ0LlxuLy8gICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuLy8gICAgIHJldHVybiBjICogZCArICgoYSA+Pj4gMTYpICogZCArIGMgKiAoYiA+Pj4gMTYpIDw8IDE2ID4+PiAwKSB8IDBcbi8vICAgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztBQVdBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=