wisp
 
(Arne Babenhauserheide)
2015-09-29: added fast-sum

added fast-sum

diff --git a/tests/fast-sum.scm b/tests/fast-sum.scm
new file mode 100644
--- /dev/null
+++ b/tests/fast-sum.scm
@@ -0,0 +1,8 @@
+(define-syntax fast-sum
+  (syntax-rules (iota)
+    ((fast-sum (iota count start))
+     (+ 1
+        (apply - (map (lambda (x) (/ (* x (+ x 1)) 2))
+                      (list (+ count (- start 1)) start)))))
+    ((fast-sum e)
+     (apply + e))))
diff --git a/tests/fast-sum.w b/tests/fast-sum.w
new file mode 100644
--- /dev/null
+++ b/tests/fast-sum.w
@@ -0,0 +1,9 @@
+define-syntax fast-sum
+  syntax-rules : iota
+    : fast-sum : iota count start
+      + 1
+        apply - 
+          map : lambda (x) : / {x * {x + 1} } 2
+                list {count + {start - 1}} start
+    : fast-sum e
+      apply + e