mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
fix complex.py example with power prompted by suggestion of smilliken
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
3b16cfbd44
commit
e456af142e
|
@ -46,6 +46,15 @@ class ComplexExpr:
|
||||||
other = _to_complex(other)
|
other = _to_complex(other)
|
||||||
return ComplexExpr(other.r*self.r - other.i*self.i, other.i*self.r + other.r*self.i)
|
return ComplexExpr(other.r*self.r - other.i*self.i, other.i*self.r + other.r*self.i)
|
||||||
|
|
||||||
|
def __pow__(self, k):
|
||||||
|
if k == 0:
|
||||||
|
return ComplexExpr(1, 0)
|
||||||
|
if k == 1:
|
||||||
|
return self
|
||||||
|
if k < 0:
|
||||||
|
return (self ** (-k)).inv()
|
||||||
|
return reduce(lambda x, y: x * y, [self for _ in xrange(k)], ComplexExpr(1, 0))
|
||||||
|
|
||||||
def inv(self):
|
def inv(self):
|
||||||
den = self.r*self.r + self.i*self.i
|
den = self.r*self.r + self.i*self.i
|
||||||
return ComplexExpr(self.r/den, -self.i/den)
|
return ComplexExpr(self.r/den, -self.i/den)
|
||||||
|
@ -104,4 +113,5 @@ print(s.model())
|
||||||
s.add(x.i != 1)
|
s.add(x.i != 1)
|
||||||
print(s.check())
|
print(s.check())
|
||||||
# print(s.model())
|
# print(s.model())
|
||||||
print (3 + I)^2/(5 - I)
|
print ((3 + I) ** 2)/(5 - I)
|
||||||
|
print ((3 + I) ** -3)/(5 - I)
|
||||||
|
|
Loading…
Reference in a new issue