Re: [闲聊] 写程式真的这么邪门吗?

楼主: orpheus2401 (绅士母鸡)   2023-01-26 18:10:31
※ 引述 《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%
作者: hdjj (hdjj)   2023-01-26 18:21:00
我看不懂,但我大受震撼
作者: SPDY (Alex)   2023-01-26 18:23:00
就能用 目前误差尚能接受 之后?谁知道...
作者: lovez04wj06 (车前草)   2023-01-26 18:27:00
1%可以了啦,省去运算太棒了
作者: hdjj (hdjj)   2023-01-26 18:30:00
数学上有很多犠牲精度来简化运算的方式,在程式上很有用
作者: kirimaru73 (雾丸)   2023-01-26 18:31:00
wiki的写法是,转型做快速log2后还需要一个误差参数
作者: lbowlbow (沉睡的小猫)   2023-01-26 18:31:00
数学近似值计算上也有很多这种怪物运算
作者: kirimaru73 (雾丸)   2023-01-26 18:32:00
后人有找到最差的误差参数,跟传说的版本只差约0.5%
作者: hdjj (hdjj)   2023-01-26 18:32:00
像圆周率我都用22/7替代
作者: Erichikaunkr (兩百四)   2023-01-26 19:29:00
这种我是觉得不叫邪门 只是写的人跟你知识差太多了

Links booklink

Contact Us: admin [ a t ] ucptt.com