落書きノート

ふと自分が気になった事を書いてます

Go言語 Goツアーで試し斬り

Goツアーを見ていると演習問題的なプログラムがあったので挑戦してみました。

A Tour of Go

package main

import (
  "fmt"
  "math"
)

func Sqrt(x float64) float64 {
  z := float64(1)
  z_pre := float64(1)
  dist := float64(1)
  fin := 0.000001

  for i := 0; i < 10; i++ {
    z = z - (z * z - x) / (2 * z)
    dist = z - z_pre
    if dist < 0 {
      dist = dist * (-1)
      if dist < fin {
        break
      }
    } else {
      if dist < fin {
        break
      }
    }

    z_pre = z
  }
  return z
}

func main(){
  fmt.Println(Sqrt(2))
  fmt.Println(math.Sqrt(2))
}

mathパッケージを使った数値と比較してみると答えは一緒でした。