shithub: mc

Download patch

ref: 2eefb4d95ab159a313627f14f20e372ca188f1c5
parent: 399b644b26513d89f12bd1a52c6a6e2f30390338
author: Ori Bernstein <[email protected]>
date: Wed Sep 25 13:18:18 EDT 2013

Add a sqrt test to test floating point.

--- /dev/null
+++ b/test/basicfloat.myr
@@ -1,0 +1,10 @@
+use std
+
+const get42 = {
+	-> 42.0
+}
+
+/* basic sanity check on floating point operations. should return 84. */
+const main = {
+	-> (42.0 + get42()) castto(int)
+}
--- a/test/float.myr
+++ /dev/null
@@ -1,10 +1,0 @@
-use std
-
-const get42 = {
-	-> 42.0
-}
-
-/* basic sanity check on floating point operations. should return 84. */
-const main = {
-	-> (42.0 + get42()) castto(int)
-}
--- /dev/null
+++ b/test/sqrt.myr
@@ -1,0 +1,32 @@
+use std
+
+const abs = {d
+	if d < 0.0
+		-> -d
+	else
+		-> d
+	;;
+}
+
+const Eps = 0.00001
+const Maxiter = 20
+
+const sqrt = {x : float64
+	var val
+	var iter
+	var i;
+
+	val = 1;
+	for i = 0; i < Maxiter; i++
+		iter = 0.5*(val - x/val)
+		if abs(val - iter) < Eps
+			-> val;
+			val = iter;
+		;;
+	;;
+}
+
+const main = {
+	-> sqrt(20.0) castto(int)
+}
+
--- a/test/tests
+++ b/test/tests
@@ -53,7 +53,8 @@
 B condifrel	E	7
 B overlappingif	E	2
 B fib		E	21
-B float		E	84
+B basicfloat	E	84
+B sqrt		E	4
 B log-and	E	0
 B log-or	E	1
 B str		E	102