summaryrefslogtreecommitdiff
path: root/test/cminor/integr.cm
diff options
context:
space:
mode:
Diffstat (limited to 'test/cminor/integr.cm')
-rw-r--r--test/cminor/integr.cm25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/cminor/integr.cm b/test/cminor/integr.cm
new file mode 100644
index 0000000..28f0a1d
--- /dev/null
+++ b/test/cminor/integr.cm
@@ -0,0 +1,25 @@
+"square" (x): float -> float
+{
+ return x *f x;
+}
+
+"integr"(f, low, high, n): int -> float -> float -> int -> float
+{
+ var h, x, s, i;
+ h = (high -f low) /f floatofint n;
+ x = low;
+ s = 0.0;
+ i = n;
+ {{ loop {
+ if (! (i > 0)) exit;
+ s = s +f (f(x): float -> float);
+ x = x +f h;
+ i = i - 1;
+ } }}
+ return s *f h;
+}
+
+"test"(n) : int -> float
+{
+ return "integr"("square", 0.0, 1.0, n): int -> float -> float -> int -> float;
+}