From df812f2af2fd8a1f8144de2bbef01352f9a7b591 Mon Sep 17 00:00:00 2001 From: Alex Denes Date: Fri, 30 Apr 2021 17:08:51 +0000 Subject: [PATCH] Add errors --- sqrterr.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 sqrterr.go diff --git a/sqrterr.go b/sqrterr.go new file mode 100644 index 0000000..ac6a9ed --- /dev/null +++ b/sqrterr.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" +) +type ErrNegativeSqrt float64 + +func (e ErrNegativeSqrt) Error() string { + return fmt.Sprintf("cannot Sqrt negative number: %f", float64(e)) +} + +func Sqrt(x float64) (float64, error) { + if x < 0 { + return 0, ErrNegativeSqrt(x) + } + z := 1.0 + for count := 0; count < 10; count++ { + z -= (z*z - x) / (2*z) + } + return z, nil +} + +func main() { + fmt.Println(Sqrt(2)) + fmt.Println(Sqrt(-2)) +}