2023年もLunarMLの開発をゆるゆるとやっていきます。
前回の記事:
続きを読む古典的な(BigInt以前の)JavaScriptは数値型が倍精度浮動小数点数のみでした。5.2までのLuaも同様です。
このような言語で整数除算を行いたい場合は、浮動小数点演算を経由して行うことになります。例えばJavaScriptで32ビット整数の除算をやるならこんな感じです:
// x, yは整数値とする function Int_div(x, y) { return Math.floor(x / y); } function Int_quot(x, y) { return Math.trunc(x / y); } // 0除算やオーバーフローはここでは無視する
さて、浮動小数点演算と言えば誤差です。この「浮動小数点演算による整数除算のエミュレート」は誤差の影響を受けないのでしょうか?
続きを読む