Sunday, September 7, 2014

Go tour #48

#48 Cube rootの計算。

package main

import (
    "fmt"
    "math/cmplx"
)

func Cbrt(x complex128) complex128 {
    var z complex128 = x

    // なんとz,xが参照できる件w
    f := func() complex128 {
        //fmt.Println("z=", z, "x=", x)
        for i := 0; i < 20; i++ {
            z = z - ((z*z*z - x)/(3*z*z))
        }
        return z
    }
    return f()
}

func main() {
    fmt.Println(Cbrt(2))
    fmt.Println(cmplx.Pow(2, 1.0/3))
}

なんとなく関数の中に関数を定義してみた。理由はない。

Written with StackEdit.

No comments:

Post a Comment