|
@@ -108,6 +108,84 @@ assert_eq(gamma(2.5), 1.329_340_388, 1e-8)
|
|
|
assert_eq(gamma(3), 2)
|
|
|
assert_eq(gamma(4), 6)
|
|
|
|
|
|
+# factorial
|
|
|
+
|
|
|
+assert_eq(factorial(0), 1)
|
|
|
+assert_eq(factorial(1), 1)
|
|
|
+assert_eq(factorial(2), 2)
|
|
|
+assert_eq(factorial(3), 6)
|
|
|
+assert_eq(factorial(4), 24)
|
|
|
+assert_eq(factorial(20), 2432902008176640000)
|
|
|
+
|
|
|
+# falling factorial
|
|
|
+
|
|
|
+assert_eq(falling_factorial(0, 0), 1)
|
|
|
+assert_eq(falling_factorial(1, 0), 1)
|
|
|
+assert_eq(falling_factorial(2, 0), 1)
|
|
|
+assert_eq(falling_factorial(42.5, 0), 1)
|
|
|
+
|
|
|
+assert_eq(falling_factorial(0, 1), 0)
|
|
|
+assert_eq(falling_factorial(1, 1), 1)
|
|
|
+assert_eq(falling_factorial(2, 1), 2)
|
|
|
+assert_eq(falling_factorial(42.5, 1), 42.5)
|
|
|
+
|
|
|
+assert_eq(falling_factorial(0, 2), 0)
|
|
|
+assert_eq(falling_factorial(1, 2), 0)
|
|
|
+assert_eq(falling_factorial(2, 2), 2)
|
|
|
+assert_eq(falling_factorial(42.5, 2), 1763.75)
|
|
|
+
|
|
|
+assert_eq(falling_factorial(4, 0), 1)
|
|
|
+assert_eq(falling_factorial(4, 1), 4)
|
|
|
+assert_eq(falling_factorial(4, 2), 12)
|
|
|
+assert_eq(falling_factorial(4, 3), 24)
|
|
|
+assert_eq(falling_factorial(4, 4), 24)
|
|
|
+assert_eq(falling_factorial(4, 5), 0)
|
|
|
+assert_eq(falling_factorial(4, 6), 0)
|
|
|
+
|
|
|
+assert_eq(falling_factorial(20, 0), 1)
|
|
|
+assert_eq(falling_factorial(20, 1), 20)
|
|
|
+assert_eq(falling_factorial(20, 2), 380)
|
|
|
+assert_eq(falling_factorial(20, 20), 2432902008176640000)
|
|
|
+assert_eq(falling_factorial(20, 21), 0)
|
|
|
+
|
|
|
+# binomial coefficient
|
|
|
+assert_eq(binom(0, -1), 0)
|
|
|
+assert_eq(binom(0, 0), 1)
|
|
|
+assert_eq(binom(0, 1), 0)
|
|
|
+
|
|
|
+assert_eq(binom(1, -1), 0)
|
|
|
+assert_eq(binom(1, 0), 1)
|
|
|
+assert_eq(binom(1, 1), 1)
|
|
|
+assert_eq(binom(1, 2), 0)
|
|
|
+
|
|
|
+assert_eq(binom(2, -1), 0)
|
|
|
+assert_eq(binom(2, 0), 1)
|
|
|
+assert_eq(binom(2, 1), 2)
|
|
|
+assert_eq(binom(2, 2), 1)
|
|
|
+assert_eq(binom(2, 3), 0)
|
|
|
+
|
|
|
+assert_eq(binom(3, -1), 0)
|
|
|
+assert_eq(binom(3, 0), 1)
|
|
|
+assert_eq(binom(3, 1), 3)
|
|
|
+assert_eq(binom(3, 2), 3)
|
|
|
+assert_eq(binom(3, 3), 1)
|
|
|
+assert_eq(binom(3, 4), 0)
|
|
|
+
|
|
|
+assert_eq(binom(4, -1), 0)
|
|
|
+assert_eq(binom(4, 0), 1)
|
|
|
+assert_eq(binom(4, 1), 4)
|
|
|
+assert_eq(binom(4, 2), 6)
|
|
|
+assert_eq(binom(4, 3), 4)
|
|
|
+assert_eq(binom(4, 4), 1)
|
|
|
+assert_eq(binom(4, 5), 0)
|
|
|
+
|
|
|
+assert_eq(binom(1.5, -1), 0)
|
|
|
+assert_eq(binom(1.5, 0), 1)
|
|
|
+assert_eq(binom(1.5, 1), 1.5)
|
|
|
+assert_eq(binom(1.5, 2), 0.375)
|
|
|
+assert_eq(binom(1.5, 3), -0.0625)
|
|
|
+assert_eq(binom(1.5, 4), 0.0234375)
|
|
|
+
|
|
|
# maximum
|
|
|
|
|
|
assert_eq(maximum([1]), 1)
|