add more detailed benchmarks.
This commit is contained in:
@@ -3,7 +3,10 @@ from solver import Group
|
|||||||
|
|
||||||
def A(n):
|
def A(n):
|
||||||
""""""
|
""""""
|
||||||
assert 1 <= n
|
assert 0 <= n
|
||||||
|
|
||||||
|
if n == 0:
|
||||||
|
return Group(0)
|
||||||
|
|
||||||
return Group.schlafli(*[3] * (n - 1))
|
return Group.schlafli(*[3] * (n - 1))
|
||||||
|
|
||||||
|
|||||||
37
tests.py
37
tests.py
@@ -1,9 +1,31 @@
|
|||||||
|
import math
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
from groups import *
|
from groups import *
|
||||||
|
|
||||||
|
|
||||||
|
def perm(a, b):
|
||||||
|
return math.factorial(a) // math.factorial(b)
|
||||||
|
|
||||||
|
|
||||||
|
def simple_n_gens(n: int, p: int):
|
||||||
|
"""
|
||||||
|
:param n: Maximum number of generators
|
||||||
|
:param p: Order of root I2
|
||||||
|
"""
|
||||||
|
|
||||||
|
return [
|
||||||
|
(f'{g} gens', I2(n * perm(p - 1, g - 1)) * A(g - 2))
|
||||||
|
for g in range(2, p)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
gs = [
|
# benchmark with increasing number of generators
|
||||||
|
gs = simple_n_gens(2, 9)
|
||||||
|
|
||||||
|
# benchmark original groups
|
||||||
|
gs += [
|
||||||
('T(50)', T(50)),
|
('T(50)', T(50)),
|
||||||
('T(100)', T(100)),
|
('T(100)', T(100)),
|
||||||
('T(150)', T(150)),
|
('T(150)', T(150)),
|
||||||
@@ -28,16 +50,3 @@ if __name__ == '__main__':
|
|||||||
speed = cosets / diff
|
speed = cosets / diff
|
||||||
|
|
||||||
print(f'{name}, {cosets :,}, {diff:,.3g}, {speed:,.2g}')
|
print(f'{name}, {cosets :,}, {diff:,.3g}, {speed:,.2g}')
|
||||||
|
|
||||||
# group, cosets, time, speed
|
|
||||||
# T(50), 10,000, 0.0751, 1.3e+05
|
|
||||||
# T(100), 40,000, 0.304, 1.3e+05
|
|
||||||
# T(150), 90,000, 0.688, 1.3e+05
|
|
||||||
# T(200), 160,000, 1.21, 1.3e+05
|
|
||||||
# T(250), 250,000, 1.89, 1.3e+05
|
|
||||||
# B(5), 3,840, 0.0495, 7.8e+04
|
|
||||||
# H(4), 14,400, 0.11, 1.3e+05
|
|
||||||
# B(6), 46,080, 0.837, 5.5e+04
|
|
||||||
# E(6), 51,840, 0.944, 5.5e+04
|
|
||||||
# B(7), 645,120, 17.2, 3.7e+04
|
|
||||||
# E(7), 2,903,040, 79.4, 3.7e+04
|
|
||||||
|
|||||||
Reference in New Issue
Block a user