"""
import ctypes, ctypes.util
+import functools
import math
import numbers
import operator
import re
-import functools
-
from decimal import Decimal
from fractions import Fraction
from functools import wraps
+
libisl = ctypes.CDLL(ctypes.util.find_library('isl'))
libisl.isl_printer_get_str.restype = ctypes.c_char_p
+
def _polymorphic_method(func):
@functools.wraps(func)
def wrapper(self, other):
raise TypeError('operand should be a Value or a Rational')
return wrapper
+
class Context:
__slots__ = ('_ic')
@property
def _as_parameter_(self):
return self._ic
-
- #comment out so does not delete itself after being created
+
+ #comment out so does not delete itself after being created
#def __del__(self):
# libisl.isl_ctx_free(self)
numerator = libisl.isl_val_read_from_str(context, numerator)
denominator = str(frac.denominator).encode()
denominator = libisl.isl_val_read_from_str(context, denominator)
- self._iv = libisl.isl_val_div(numerator, denominator)
+ self._iv = libisl.isl_val_div(numerator, denominator)
return self
-
@property
def _as_parameter_(self):
return self._iv
-
- def symbols(self):
- s = set()
- for constraint in self.constraints():
- s.update(constraint.symbols)
- yield from sorted(s)
def __del__(self):
libisl.isl_val_free(self)
@property
def denominator(self):
if self._denominator is None:
- raise ValueError('not a rational number')
+ raise ValueError('not a rational number')
return self._denominator
def __bool__(self):
return bool(libisl.isl_val_is_infty(self) or
libisl.isl_val_is_neginfty(self))
- def is_nan(self):
+ def is_nan(self):
return bool(libisl.isl_val_is_nan(self))
def __str__(self):