box-o-sand/oldstuff/gotime/gotour-artifacts/exercise-sqrt/main.go
2015-06-22 13:15:42 -05:00

26 lines
397 B
Go

package main
import (
"fmt"
"math"
)
// using Newton's method
func Sqrt(x float64) float64 {
z := x - (x * 0.1)
for i := 0; i < 1000; i++ {
newZ := z - (((z * z) - x) / 2 * z)
diff := math.Abs(newZ) - math.Abs(z)
if math.Abs(diff) < 0.01 {
return newZ
}
z = newZ
}
return z
}
func main() {
fmt.Printf("stdlib -> %f\n", math.Sqrt(2))
fmt.Printf("newton -> %f\n", Sqrt(2))
}