アカウント名:
パスワード:
日常生活だとあまり使わないセンスだけど、浮動小数点数の数値計算とかでは結構重要なセンスなんだよね。
あまりにピンポイントでアレだけど、sRGBのガンマ曲線で(1/2.4)乗の計算が必要になる。普通に計算するとexpが高コストな訳だけど1/2.4 = 5/12 = 1/2 + 1/4 - 1/3となってsqrtが2回とcbrtが1回と除算1回に分解できる。特にsqrtはハードウェア命令があったりするので速い。(まぁ、多項式近似の方が速いけどね)
角度や時間とかで60で割るという場面もよくあるけど(え、ない?)x / 60 = x * (1/60)と単純に逆数で計算してしまうと丸め誤差の影響が大きい。1/60 = 1/960 + 1/64に分解すると、後ろは2のべき乗なので、丸め誤差が発生しない。イマドキのCPUはFMA命令があったりするので、乗算2回分くらいのコストで除算とほぼ同じ結果が得られる。
体系的に理屈で攻めることもできるけど、やっぱり直感が大事だと思う。ピッタリでなくても近似値が得られれば、ニュートン法等の収束が速くなる場合もある。
yasuoka先生のこの日記を思い出しました。
Z80における「手抜き」回転行列https://srad.jp/~yasuoka/journal/624453/ [srad.jp]
RGBのだと256バイトのテーブルっていう手が……(RGB888からRBG888への各ch独立での計算の場合)
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
分数の和への分解 (スコア:2, 興味深い)
日常生活だとあまり使わないセンスだけど、浮動小数点数の数値計算とかでは結構重要なセンスなんだよね。
あまりにピンポイントでアレだけど、sRGBのガンマ曲線で(1/2.4)乗の計算が必要になる。
普通に計算するとexpが高コストな訳だけど
1/2.4 = 5/12 = 1/2 + 1/4 - 1/3
となってsqrtが2回とcbrtが1回と除算1回に分解できる。
特にsqrtはハードウェア命令があったりするので速い。(まぁ、多項式近似の方が速いけどね)
角度や時間とかで60で割るという場面もよくあるけど(え、ない?)
x / 60 = x * (1/60)
と単純に逆数で計算してしまうと丸め誤差の影響が大きい。
1/60 = 1/960 + 1/64
に分解すると、後ろは2のべき乗なので、丸め誤差が発生しない。
イマドキのCPUはFMA命令があったりするので、乗算2回分くらいのコストで除算とほぼ同じ結果が得られる。
体系的に理屈で攻めることもできるけど、やっぱり直感が大事だと思う。
ピッタリでなくても近似値が得られれば、ニュートン法等の収束が速くなる場合もある。
Re: (スコア:0)
yasuoka先生のこの日記を思い出しました。
Z80における「手抜き」回転行列
https://srad.jp/~yasuoka/journal/624453/ [srad.jp]
Re: (スコア:0)
RGBのだと256バイトのテーブルっていう手が……
(RGB888からRBG888への各ch独立での計算の場合)