summaryrefslogtreecommitdiff
path: root/test/pos/sqrt.scala
blob: f6a53824b469a58e76215faf686e9606e75b8033 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module test {

  def abs(x: Double) = if (x >= 0) x else 0 - x;


  def square(x: Double) = x * x;

  def sqrt(x: Double) = {
    def sqrtIter(guess: Double): Double =
      if (isGoodEnough(guess)) guess
      else sqrtIter(improve(guess));

    def improve(guess: Double) =
      (guess + x / guess) / 2;

    def isGoodEnough(guess: Double) =
      abs(square(guess) - x) < 0.001;

    sqrtIter(1.0);
  }
}