精華區beta C_Chat 關於我們 聯絡資訊
※ 引述 《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.cc), 來自: 101.9.196.44 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1674727833.A.D8C.html
hdjj: 我看不懂,但我大受震撼 01/26 18:21
SPDY: 就能用 目前誤差尚能接受 之後?誰知道... 01/26 18:23
lovez04wj06: 1%可以了啦,省去運算太棒了 01/26 18:27
hdjj: 數學上有很多犠牲精度來簡化運算的方式,在程式上很有用 01/26 18:30
kirimaru73: wiki的寫法是,轉型做快速log2後還需要一個誤差參數 01/26 18:31
lbowlbow: 數學近似值計算上也有很多這種怪物運算 01/26 18:31
kirimaru73: 後人有找到最差的誤差參數,跟傳說的版本只差約0.5% 01/26 18:32
hdjj: 像圓周率我都用22/7替代 01/26 18:32
Erichikaunkr: 這種我是覺得不叫邪門 只是寫的人跟你知識差太多了 01/26 19:29