Пример #1
0
 def visit_LengthIdentifier(self,
                            expr: 'LengthIdentifier',
                            environment=None,
                            usub=False):
     assert not usub
     return PyTexpr1.cst(environment,
                         PyMPQIntervalCoeff(PyMPQInterval.top()))
Пример #2
0
 def get_cst(self):
     cst = self.lincons1.lincons0.linexpr0.contents.cst
     if cst.discr == CoeffDiscr.AP_COEFF_INTERVAL:
         if cst.val.interval.contents.inf.contents.discr == ScalarDiscr.AP_SCALAR_MPQ:
             result = PyMPQIntervalCoeff()
         elif cst.val.interval.contents.inf.contents.discr == ScalarDiscr.AP_SCALAR_MPFR:
             result = PyMPFRIntervalCoeff(0, 0)
         else:  # cst.val.interval.contents.inf.contents.discr == ScalarDiscr.AP_SCALAR_DOUBLE
             result = PyDoubleIntervalCoeff()
     else:  # CoeffDiscr.AP_COEFF_SCALAR
         if cst.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_MPQ:
             result = PyMPQScalarCoeff()
         elif cst.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_MPFR:
             result = PyMPFRScalarCoeff(0)
         else:  # cst.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_DOUBLE
             result = PyDoubleScalarCoeff()
     libapron.ap_coeff_set(result.coeff, self.lincons1.lincons0.linexpr0.contents.cst)
     return result
Пример #3
0
 def get_coeff(self, var: PyVar):
     coeff = libapron.ap_linexpr1_coeffref(self, var._as_parameter_)
     if coeff.contents.discr == CoeffDiscr.AP_COEFF_INTERVAL:
         discr = coeff.contents.val.interval.contents.inf.contents.discr
         if discr == ScalarDiscr.AP_SCALAR_MPQ:
             result = PyMPQIntervalCoeff()
         elif discr == ScalarDiscr.AP_SCALAR_MPFR:
             result = PyMPFRIntervalCoeff(0, 0)
         else:  # discr == ScalarDiscr.AP_SCALAR_DOUBLE
             result = PyDoubleIntervalCoeff()
     else:  # CoeffDiscr.AP_COEFF_SCALAR
         if coeff.contents.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_MPQ:
             result = PyMPQScalarCoeff()
         elif coeff.contents.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_MPFR:
             result = PyMPFRScalarCoeff(0)
         else:  # coeff.contents.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_DOUBLE
             result = PyDoubleScalarCoeff()
     libapron.ap_linexpr1_get_coeff(result, self, var._as_parameter_)
     return result
Пример #4
0
 def get_cst(self):
     cst = deepcopy(self.linexpr1.linexpr0.contents.cst)
     if cst.discr == CoeffDiscr.AP_COEFF_INTERVAL:
         if cst.val.interval.contents.inf.contents.discr == ScalarDiscr.AP_SCALAR_MPQ:
             result = PyMPQIntervalCoeff(cst)
         elif cst.val.interval.contents.inf.contents.discr == ScalarDiscr.AP_SCALAR_MPFR:
             result = PyMPFRIntervalCoeff(cst)
         else:
             assert cst.val.interval.contents.inf.contents.discr == ScalarDiscr.AP_SCALAR_DOUBLE
             result = PyDoubleIntervalCoeff(cst)
     else:
         assert cst.discr == CoeffDiscr.AP_COEFF_SCALAR
         if cst.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_MPQ:
             result = PyMPQScalarCoeff(cst)
         elif cst.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_MPFR:
             result = PyMPFRScalarCoeff(cst)
         else:
             assert cst.val.scalar.contents.discr == ScalarDiscr.AP_SCALAR_DOUBLE
             result = PyDoubleScalarCoeff(cst)
     return result
Пример #5
0
 def visit_Input(self, expr, environment=None, usub=False) -> PyTexpr1:
     assert not usub
     return PyTexpr1.cst(environment, PyMPQIntervalCoeff(PyMPQInterval.top()))
Пример #6
0
 def test_neg(self):
     self.assertEqual(-PyMPQIntervalCoeff(-1, 2), PyMPQIntervalCoeff(-2, 1))
     self.assertEqual(-PyMPQIntervalCoeff(), PyMPQIntervalCoeff(0, 0))
     self.assertEqual(-PyMPQIntervalCoeff(1, 2), PyMPQIntervalCoeff(-2, -1))
Пример #7
0
 def test_cmp(self):
     self.assertTrue(PyMPQIntervalCoeff() < PyMPQIntervalCoeff(-1, 1, 2, 2))
     self.assertFalse(
         PyMPQIntervalCoeff(-1, 1, 2, 2) < PyMPQIntervalCoeff())
     self.assertTrue(PyMPQIntervalCoeff() == PyMPQIntervalCoeff(0, 0))
     self.assertFalse(
         PyMPQIntervalCoeff() == PyMPQIntervalCoeff(-1, 1, 2, 2))
     self.assertTrue(PyMPQIntervalCoeff(-1, 1, 2, 2) > PyMPQIntervalCoeff())
     self.assertFalse(
         PyMPQIntervalCoeff() > PyMPQIntervalCoeff(-1, 1, 2, 2))
Пример #8
0
 def test_deepcopy(self):
     c0 = PyMPQIntervalCoeff()
     c1 = deepcopy(c0)
     c2 = c0
     self.assertNotEqual(id(c0), id(c1))
     self.assertEqual(id(c0), id(c2))
Пример #9
0
 def test_init(self):
     self.assertEqual(str(PyMPQIntervalCoeff()), '[0,0]')