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

Speed up simplify_factors when having multiple numerator or denominator

上级 5cbbcb72
...@@ -4752,10 +4752,25 @@ class Canonizer(gof.LocalOptimizer): ...@@ -4752,10 +4752,25 @@ class Canonizer(gof.LocalOptimizer):
| [a, b], [c, d] -> [a, b], [c, d] | [a, b], [c, d] -> [a, b], [c, d]
""" """
for v in list(num): ln = len(num)
if v in denum: ld = len(denum)
num.remove(v) if (ld > 2 and ln > 2):
denum.remove(v) # 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):
if v in denum:
num.remove(v)
denum.remove(v)
return num, denum return num, denum
def simplify_constants(self, orig_num, orig_denum, out_type=None): def simplify_constants(self, orig_num, orig_denum, out_type=None):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论