diff options
author | Martin Odersky <odersky@gmail.com> | 2003-02-14 14:39:24 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-02-14 14:39:24 +0000 |
commit | 21b147f7caf8b558b00044f493cf9da392c7e30e (patch) | |
tree | a964142a10a16e7c9a64b03e44fdde1d9f1b63be /test/pos/cours1.scala | |
parent | fd3f10df3cd88fe3b970f8312a479ae63f0803b8 (diff) | |
download | scala-21b147f7caf8b558b00044f493cf9da392c7e30e.tar.gz scala-21b147f7caf8b558b00044f493cf9da392c7e30e.tar.bz2 scala-21b147f7caf8b558b00044f493cf9da392c7e30e.zip |
Initial version.
Diffstat (limited to 'test/pos/cours1.scala')
-rw-r--r-- | test/pos/cours1.scala | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/test/pos/cours1.scala b/test/pos/cours1.scala new file mode 100644 index 0000000000..48b5f6504d --- /dev/null +++ b/test/pos/cours1.scala @@ -0,0 +1,54 @@ +module test { + + def size = 2; + def pi = 3.14159; + def radius = 10; + def circumference = 2 * pi * radius; + def square(x: Double) = x * x; + def sumOfSquares(x: Double, y: Double) = square(x) + square(y); + def loop: Int = loop; + def first(x: Int, y: Int) = x; + def constOne(x: Int, def y: Int) = 1; + def abs(x: Double) = if (x >= 0) x else -x; + + def sqrtIter0(guess: Double, x: Double): Double = + if (isGoodEnough0(guess, x)) guess + else sqrtIter0(improve0(guess, x), x); + def improve0(guess: Double, x: Double) = + (guess + x / guess) / 2; + def isGoodEnough0(guess: Double, x: Double) = + abs(square(guess) - x) < 0.001; + def sqrt0(x: Double) = sqrtIter0(1.0, x); + + def sqrt1(x: Double) = { + def sqrtIter1(guess: Double, x: Double): Double = + if (isGoodEnough1(guess, x)) guess + else sqrtIter1(improve1(guess, x), x); + + def improve1(guess: Double, x: Double) = + (guess + x / guess) / 2; + + def isGoodEnough1(guess: Double, x: Double) = + abs(square(guess) - x) < 0.001; + + sqrtIter1(1.0, x); + } + + def sqrt2(x: Double) = { + def sqrtIter2(guess: Double): Double = + if (isGoodEnough2(guess)) guess + else sqrtIter2(improve2(guess)); + + def improve2(guess: Double) = + (guess + x / guess) / 2; + + def isGoodEnough2(guess: Double) = + abs(square(guess) - x) < 0.001; + + sqrtIter2(1.0); + } + + sqrt0(2); + sqrt1(2); + sqrt2(2); +}
\ No newline at end of file |