summaryrefslogtreecommitdiff
path: root/test/pos/sqrt.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-02-14 14:39:24 +0000
committerMartin Odersky <odersky@gmail.com>2003-02-14 14:39:24 +0000
commit21b147f7caf8b558b00044f493cf9da392c7e30e (patch)
treea964142a10a16e7c9a64b03e44fdde1d9f1b63be /test/pos/sqrt.scala
parentfd3f10df3cd88fe3b970f8312a479ae63f0803b8 (diff)
downloadscala-21b147f7caf8b558b00044f493cf9da392c7e30e.tar.gz
scala-21b147f7caf8b558b00044f493cf9da392c7e30e.tar.bz2
scala-21b147f7caf8b558b00044f493cf9da392c7e30e.zip
Initial version.
Diffstat (limited to 'test/pos/sqrt.scala')
-rw-r--r--test/pos/sqrt.scala21
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