summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authordata-man <datamanrb@gmail.com>2018-05-17 19:54:41 +0300
committerdata-man <datamanrb@gmail.com>2018-05-17 19:54:41 +0300
commit173c92d374323f6fbbecae2ac344e6062dcfa351 (patch)
treec51cbf69ab6e5be98b0753499bd7a9e6d1dbf573 /lib
parent6c0185d4b7a9b38fa246c47c6d9baf3633e880d0 (diff)
downloadNim-173c92d374323f6fbbecae2ac344e6062dcfa351.tar.gz
Fixes factorial's bug
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/math.nim13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/pure/math.nim b/lib/pure/math.nim
index 5f3240e00..9e590debc 100644
--- a/lib/pure/math.nim
+++ b/lib/pure/math.nim
@@ -41,7 +41,7 @@ proc fac*(n: int): int =
       createFactTable[13]()
     else:
       createFactTable[21]()
-  assert(n > 0, $n & " must not be negative.")
+  assert(n >= 0, $n & " must not be negative.")
   assert(n < factTable.len, $n & " is too large to look up in the table")
   factTable[n]
 
@@ -560,3 +560,14 @@ when isMainModule:
     assert sgn(Inf) == 1
     assert sgn(NaN) == 0
 
+  block: # fac() tests
+    try:
+      discard fac(-1)
+    except AssertionError:
+      discard
+
+    doAssert fac(0) == 1
+    doAssert fac(1) == 1
+    doAssert fac(2) == 2
+    doAssert fac(3) == 6
+    doAssert fac(4) == 24