PTT推薦

Re: [閒聊] 寫程式真的這麼邪門嗎?

看板C_Chat標題Re: [閒聊] 寫程式真的這麼邪門嗎?作者
orpheus2401
(紳士母雞)
時間推噓 4 推:4 噓:0 →:5

※ 引述 《SkyPlus (Sky)》 之銘言:
:
https://liuslog.wordpress.com/2014/06/20/0x5f3759df/
:  
: 1/sqrt(x) 用神秘的數字y=0x5f3759df 帶入:
:  
: y+y*(1.5-(x*y^2)/2) 後直接算出來
:  

針對inverse square root
其實回覆提供的文章沒有很好的解釋神秘數字的由來
https://youtu.be/p8u_k2LIZyo
我認為這部影片講解得很清楚

簡單來說是利用浮點數bit representation與log base 2近似的特性
直接把bit representation當log處理
神秘數字則是轉換過程留下的常數
所以後面只需要一次牛頓插值法就能把誤差壓到1%

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.9.196.44 (臺灣)
PTT 網址

hdjj01/26 18:21我看不懂,但我大受震撼

SPDY01/26 18:23就能用 目前誤差尚能接受 之後?誰知道...

lovez04wj0601/26 18:271%可以了啦,省去運算太棒了

hdjj01/26 18:30數學上有很多犠牲精度來簡化運算的方式,在程式上很有用

kirimaru7301/26 18:31wiki的寫法是,轉型做快速log2後還需要一個誤差參數

lbowlbow01/26 18:31數學近似值計算上也有很多這種怪物運算

kirimaru7301/26 18:32後人有找到最差的誤差參數,跟傳說的版本只差約0.5%

hdjj01/26 18:32像圓周率我都用22/7替代

Erichikaunkr01/26 19:29這種我是覺得不叫邪門 只是寫的人跟你知識差太多了