A Tour of Go 23 Exercise: Loops and Functions

演習:ニュートン法を使った平方根の計算を実装

package main

import (
    "fmt"
    //"math"
)

func square(x float64) float64 {
    return x*x
}

func abs(x float64) float64 {
    ret := 0.0
    if x >= 0 {
        ret = x
    } else {
        ret = -x
    }
    return ret
}

func enough(x,y float64) bool {
    const tolerance = 0.0001
    
    return abs(x-y) > tolerance 
}

func Sqrt(x float64) float64 {
    count := 0
    z := 1.0
    /*
    for i := 0 ; i < 10 ;i++{
	/*/
    for pre_z := 0.0 ; enough(pre_z,z);{
        pre_z = z
    //*/
        count++
        z -= ((square(z) - x)/(2*z))
    }
    fmt.Println(count)
    return z
}

func main() {
    for i := 2; i<10; i++ {
        n := float64(i)
    	fmt.Println(Sqrt(n))
    	//fmt.Println(math.Sqrt(n)-Sqrt(n))
    }
}