程式語言:Go
功能:快速計算出平方根的倒數
FAST INVERSE SQUARE ROOT
如何通俗易懂地讲解牛顿迭代法?
- Package:
- math
功能:快速計算出平方根的倒數
程式碼
證明
參考
0x5f3759df 这个快速开方中的常数的数学依据和原理FAST INVERSE SQUARE ROOT
如何通俗易懂地讲解牛顿迭代法?
牛頓-拉弗森方法
- package main
- import (
- "fmt"
- "math"
- )
- func InvSqrt(x float32) float32 {
- var xhalf float32
- xhalf = 0.5 * x
- i := math.Float32bits(x)
- i = 0x5f3759df - (i >> 1) // 證明如下,直接求得接近的值
- x = math.Float32frombits(i)
- x = x * (1.5 - xhalf*x*x) // 牛頓-拉弗森方法
- return x
- }
- func main() {
- fmt.Println(InvSqrt(4))
- }
i = 0x5f3759df - (i >> 1)依此想法,可推廣至其他的數學運算,快速求一解
留言
張貼留言