3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-06 14:13:23 +00:00

Fix Python API examples so they work with Python 3 as well as Python 2.

This commit is contained in:
Dan Liew 2017-06-26 11:29:00 +01:00
parent 849eb389e6
commit 896aae5606
4 changed files with 22 additions and 17 deletions

View file

@ -6,6 +6,10 @@
#
# Author: Leonardo de Moura (leonardo)
############################################
from __future__ import print_function
import sys
if sys.version_info.major >= 3:
from functools import reduce
from z3 import *
def _to_complex(a):
@ -53,7 +57,7 @@ class ComplexExpr:
return self
if k < 0:
return (self ** (-k)).inv()
return reduce(lambda x, y: x * y, [self for _ in xrange(k)], ComplexExpr(1, 0))
return reduce(lambda x, y: x * y, [self for _ in range(k)], ComplexExpr(1, 0))
def inv(self):
den = self.r*self.r + self.i*self.i
@ -63,6 +67,12 @@ class ComplexExpr:
inv_other = _to_complex(other).inv()
return self.__mul__(inv_other)
if sys.version_info.major >= 3:
# In python 3 the meaning of the '/' operator
# was changed.
def __truediv__(self, other):
return self.__div__(other)
def __rdiv__(self, other):
other = _to_complex(other)
return self.inv().__mul__(other)
@ -113,5 +123,5 @@ print(s.model())
s.add(x.i != 1)
print(s.check())
# print(s.model())
print ((3 + I) ** 2)/(5 - I)
print ((3 + I) ** -3)/(5 - I)
print(((3 + I) ** 2)/(5 - I))
print(((3 + I) ** -3)/(5 - I))