To calc the root we will use here the Newton Raphson Method. In this case, Newton’s formula is to approximate Sqrt(x) by picking a guess starting point z and then repeating it: z – (z*z-x)/(2*z). To understand it mathematically check the following video.
Following my solution in Golang.
package main import ( "fmt" ) func Sqrt(x float64) float64 { z := 1.0 // initial guess to be 1 i := 0 for int(z*z) != int(x) { // until find the first approximation // Newton root algorithm z -= (z*z - x) / (2 * z) i++ } return z } func main() { fmt.Println(Sqrt(8900009870)) }
Following a classic/common solution.
package main import ( "fmt" "math" ) func Sqrt(num float64) float64 { const DIFF = 0.0001 // To fix the precision z := 1.0 for { z1 := z - (((z * z) - num) / (2 * z)) // Return a result when the diff between the last execution // and the current one is lass than the precision constant if (math.Abs(z1 - z) < DIFF) { break } z = z1 } return z } func main() { fmt.Println(Sqrt(94339)) }