solve issue wit - and polynoms
This commit is contained in:
parent
8f4d63595d
commit
2425a2dfca
@ -137,36 +137,52 @@ class Polynom(object):
|
||||
"""
|
||||
postfix = []
|
||||
for (i,a) in list(enumerate(self._coef))[::-1]:
|
||||
operator = op.add
|
||||
operator = [op.add]
|
||||
operator_sub1 = []
|
||||
if type(a) == Expression:
|
||||
# case coef is an arithmetic expression
|
||||
c = self.coef_postfix(a.postfix_tokens,i)
|
||||
if c != []:
|
||||
postfix.append(c)
|
||||
if len(postfix) > 1:
|
||||
postfix.append(operator)
|
||||
postfix += operator
|
||||
|
||||
elif type(a) == list:
|
||||
# case need to repeat the x^i
|
||||
for b in a:
|
||||
if len(postfix) > 0 and isNumber(b) and b < 0:
|
||||
b = -b
|
||||
operator = op.sub
|
||||
c = self.coef_postfix([b],i)
|
||||
if len(postfix) == 0 and isNumber(b) and b < 0:
|
||||
b = [-b]
|
||||
operator_sub1 = [op.sub1]
|
||||
elif len(postfix) > 0 and isNumber(b) and b < 0:
|
||||
b = [-b]
|
||||
operator = [op.sub]
|
||||
else:
|
||||
b = [b]
|
||||
c = self.coef_postfix(b,i)
|
||||
if c != []:
|
||||
postfix.append(c)
|
||||
if len(postfix) > 1:
|
||||
postfix.append(operator)
|
||||
postfix += operator_sub1
|
||||
postfix += operator
|
||||
postfix += operator_sub1
|
||||
|
||||
elif a != 0:
|
||||
if len(postfix) > 0 and a < 0:
|
||||
a = -a
|
||||
operator = op.sub
|
||||
c = self.coef_postfix([a],i)
|
||||
if len(postfix) == 0 and a < 0:
|
||||
a = [-a]
|
||||
operator_sub1 = [op.sub1]
|
||||
elif len(postfix) > 0 and a < 0:
|
||||
a = [-a]
|
||||
operator = [op.sub]
|
||||
else:
|
||||
a = [a]
|
||||
|
||||
c = self.coef_postfix(a,i)
|
||||
if c != []:
|
||||
postfix.append(c)
|
||||
if len(postfix) > 1:
|
||||
postfix.append(operator)
|
||||
postfix += operator_sub1
|
||||
postfix += operator
|
||||
postfix += operator_sub1
|
||||
|
||||
return flatten_list(postfix)
|
||||
|
||||
|
@ -77,7 +77,7 @@ class TestPolynom(unittest.TestCase):
|
||||
# TODO: Choix arbitraire (vis à vis des + et des -) il faudra faire en fonction de render |sam. juin 14 09:45:55 CEST 2014
|
||||
p = Polynom([-1,-2,-3])
|
||||
#ans = [-1, -2, "x", "*", "+", -3, "x", 2, "^", "*", "+"]
|
||||
ans = [-3, 'x', 2, '^', '*', 2, 'x', '*', '-', 1, '-']
|
||||
ans = [3, 'x', 2, '^', '*', '-', 2, 'x', '*', '-', 1, '-']
|
||||
self.assertEqual(ans, p.postfix)
|
||||
|
||||
def test_postfix_multi_coef(self):
|
||||
@ -118,6 +118,25 @@ class TestPolynom(unittest.TestCase):
|
||||
r = (p + q)[-1]
|
||||
self.assertEqual(str(r), '6 x ^ 2 + 2 x + 1')
|
||||
|
||||
def test_sub_int(self):
|
||||
p = Polynom([1, 2, 3])
|
||||
q = (p - 2)[-1]
|
||||
self.assertEqual(str(q), '3 x ^ 2 + 2 x - 1')
|
||||
|
||||
def test_sub_frac(self):
|
||||
p = Polynom([1, 2, 3])
|
||||
f = Fraction(1, 2)
|
||||
q = (p - f)[-1]
|
||||
#ans = repr(Polynom([Expression(Fraction(3, 2)), Expression(2), Expression(3)]))
|
||||
self.assertEqual(str(q),'3 x ^ 2 + 2 x + 1 / 2')
|
||||
|
||||
def test_sub_poly(self):
|
||||
p = Polynom([1, 0, 2])
|
||||
q = Polynom([0, 2, 3])
|
||||
r = (p - q)[-1]
|
||||
self.assertEqual(str(r), '- x ^ 2 - 2 x + 1')
|
||||
|
||||
|
||||
def test_radd_int(self):
|
||||
pass
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user