1
0
Fork 0
gotour-notes/exercise00/go.go

35 lines
578 B
Go

package main
import (
"fmt"
"math"
)
const min_threshold = 1e-200
func Sqrt(x float64, threshold float64) (z float64, iterations int) {
z = x
old_z := z
for {
z = z - (z*z-x)/(2*x)
if math.Abs(z-old_z) < threshold {
break
}
old_z = z
iterations++
}
return
}
func main() {
threshold := 1.0
right_answer := math.Sqrt(2)
for threshold > min_threshold {
answer, iterations := Sqrt(2, threshold)
fmt.Printf("%0.4g %0.4g %0.20f %0.20f %0.2d\n",
threshold, right_answer-answer, right_answer, answer,
iterations)
threshold = threshold / 10.0
}
}