foop
Version:
interfaces that describe their intentions.
35 lines (33 loc) • 2.47 kB
JavaScript
/**
* @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=