summaryrefslogtreecommitdiff
path: root/test/pos/sqrt.scala
blob: 5ad17186191245bbc07b2e1f7ba9bcaf171a53ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
object 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);
  }
}