- package mymath
- import "math"
- func InvSqrt(x float32) float32 {
- var xhalf float32 = 0.5*x // get bits for floating VALUE
- i := math.Float32bits(x) // gives initial guess y0
- i = 0x5f375a86 - (i>>1) // convert bits BACK to float
- x = math.Float32frombits(i) // Newton step, repeating increases accuracy
- x = x*(1.5-xhalf*x*x)
- x = x*(1.5-xhalf*x*x)
- x = x*(1.5-xhalf*x*x)
- return 1/x
- }
- //该片段来自于http://www.codesnippet.cn/detail/28112012687.html
来源: http://www.codesnippet.cn/detail/28112012687.html