提交 bb710bbc authored 作者: Frederic Bastien's avatar Frederic Bastien

Speed up simplify_factors when having multiple numerator or denominator

上级 5cbbcb72
...@@ -4752,6 +4752,21 @@ class Canonizer(gof.LocalOptimizer): ...@@ -4752,6 +4752,21 @@ class Canonizer(gof.LocalOptimizer):
| [a, b], [c, d] -> [a, b], [c, d] | [a, b], [c, d] -> [a, b], [c, d]
""" """
ln = len(num)
ld = len(denum)
if (ld > 2 and ln > 2):
# Faster version for "big" inputs.
while True:
s = set(num)
# Inputs can appear multiple times
redo = len(s) != len(num)
inter = s.intersection(denum)
for v in inter:
num.remove(v)
denum.remove(v)
if not redo or not inter:
break
else:
for v in list(num): for v in list(num):
if v in denum: if v in denum:
num.remove(v) num.remove(v)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论