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)) }