bpo-37295: Use constant-time comb() and perm() for larger n depending on k (GH-30305)

This commit is contained in:
Serhiy Storchaka 2022-01-09 15:32:25 +02:00 committed by GitHub
parent 5c66414b55
commit 2d787971c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 190 additions and 134 deletions

View file

@ -1889,8 +1889,8 @@ class MathTests(unittest.TestCase):
perm = math.perm
factorial = math.factorial
# Test if factorial definition is satisfied
for n in range(100):
for k in range(n + 1):
for n in range(500):
for k in (range(n + 1) if n < 100 else range(30) if n < 200 else range(10)):
self.assertEqual(perm(n, k),
factorial(n) // factorial(n - k))
@ -1953,8 +1953,8 @@ class MathTests(unittest.TestCase):
comb = math.comb
factorial = math.factorial
# Test if factorial definition is satisfied
for n in range(100):
for k in range(n + 1):
for n in range(500):
for k in (range(n + 1) if n < 100 else range(30) if n < 200 else range(10)):
self.assertEqual(comb(n, k), factorial(n)
// (factorial(k) * factorial(n - k)))