summaryrefslogtreecommitdiff
path: root/bench/bigfactorial.myr
diff options
context:
space:
mode:
Diffstat (limited to 'bench/bigfactorial.myr')
-rw-r--r--bench/bigfactorial.myr26
1 files changed, 26 insertions, 0 deletions
diff --git a/bench/bigfactorial.myr b/bench/bigfactorial.myr
new file mode 100644
index 0000000..fdb8fbc
--- /dev/null
+++ b/bench/bigfactorial.myr
@@ -0,0 +1,26 @@
+use std
+
+const N = 600
+const main = {
+ var i
+ for i = 0; i < N; i++
+ std.bigfree(bigfact(i))
+ ;;
+}
+
+const bigfact = {n
+ var i
+ var x, y
+
+ if n == 0
+ x = std.mkbigint(1)
+ else
+ x = std.mkbigint(n)
+ for i = n; i > 0; i--
+ y = std.mkbigint(i)
+ std.bigmul(x, y)
+ std.bigfree(y)
+ ;;
+ ;;
+ -> x
+}