Math.imul()

この記事は翻訳が完了していません。 この記事の翻訳にご協力ください

概要

このメソッドは 2 つの引数をとり、C 言語の様な 32 ビット乗算の結果を返します。

構文

Math.imul(a, b)

引数

a
最初の数字
b
2 番目の数字

説明

Math.imul は、 C 言語の様なセマンティクスを持つ、高速な 32 ビット整数乗算を可能にします。この機能は Emscripten のようなプロジェクトに有用です。

Math.imul(2, 4)   // 8
Math.imul(-1, 8)  //-8
Math.imul(-2, -2) // 4
Math.imul(0xffffffff, 5) //-5
Math.imul(0xfffffffe, 5) //-10

Polyfill

次の関数を用いる事により、imul をサポートしていない環境でもこれをエミュレートする事が出来ます。

// Math.imul の代替関数
function imul(a, b) {
  var ah  = (a >>> 16) & 0xffff;
  var al = a & 0xffff;
  var bh  = (b >>> 16) & 0xffff;
  var bl = b & 0xffff;
  // the shift by 0 fixes the sign on the high part
  // the final |0 converts the unsigned value into a signed value
  return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
}

仕様

仕様書 策定状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Math.imul の定義
標準 最初の定義。
ECMAScript (ECMA-262)
Math.imul の定義
現行の標準

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
imulChrome 完全対応 28Edge 完全対応 12Firefox 完全対応 20IE 未対応 なしOpera 完全対応 16Safari 完全対応 7WebView Android 完全対応 ≤37Chrome Android 完全対応 28Firefox Android 完全対応 20Opera Android 完全対応 15Safari iOS 完全対応 7Samsung Internet Android 完全対応 1.5nodejs 完全対応 0.12

凡例

完全対応  
完全対応
未対応  
未対応