diff options
Diffstat (limited to 'test/pos/sqrt.scala')
-rw-r--r-- | test/pos/sqrt.scala | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/pos/sqrt.scala b/test/pos/sqrt.scala new file mode 100644 index 0000000000..f6a53824b4 --- /dev/null +++ b/test/pos/sqrt.scala @@ -0,0 +1,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); + } +}
\ No newline at end of file |