solve parenthesis bug for op.pw

This commit is contained in:
Lafrite 2015-04-27 19:16:08 +02:00
parent 0545d73751
commit fcee4a8942
2 changed files with 19 additions and 3 deletions

View File

@ -565,6 +565,21 @@ class op(object):
""" Calling this operator performs the rigth calculus """
return getattr(op1, "__pow__")(op2)
def l_parenthesis(self, opl, str_join=False):
""" Add parenthesis for left operand if necessary """
ans = opl
try:
if opl.mainOp.priority < self.priority:
ans = flatten_list(["(", opl, ")"])
except AttributeError as e:
# op has not the attribute priority
pass
ans = flatten_list([ans])
if str_join:
ans = ' '.join([str(i) for i in ans])
return ans
caract = {
"operator" : "^", \
"name" : "pw",\
@ -573,6 +588,7 @@ class op(object):
"actions" : ("__pow__",""), \
"txt" : "{op1} ^ {op2}",\
"tex" : "{op1}^{{ {op2} }}",\
"l_parenthesis": l_parenthesis,\
"_call":_call,\
}

View File

@ -77,11 +77,11 @@ if __name__ == '__main__':
from itertools import permutations
from pymath import Polynom
from pymath import Expression
coefs_p = [[(i-2),(j-2)] for i,j in permutations(range(3),2)]
coefs_q = [[2*(i-2),2*(j-2)] for i,j in permutations(range(3),2)]
coefs_p = [[(i-2),(j-2)] for i,j in permutations(range(5),2)]
coefs_q = [[2*(i-2),2*(j-2)] for i,j in permutations(range(5),2)]
l_p = [Polynom(i) for i in coefs_p]
l_q = [Polynom(i) for i in coefs_q]
operations = [Expression([l_p[i],l_q[j],op.mul]) for i,j in permutations(range(len(coefs_p)),2)]
operations = [Expression([l_p[i],l_q[j],op.pw]) for i,j in permutations(range(len(coefs_p)),2)]
for i in operations:
print(i)