Example #1
0
def test_float(self):
    f1 = as_ufl(1)
    f2 = as_ufl(1.0)
    f3 = FloatValue(1)
    f4 = FloatValue(1.0)
    f5 = 3 - FloatValue(1) - 1
    f6 = 3 * FloatValue(2) / 6

    assert f1 == f1
    self.assertNotEqual(f1, f2)  # IntValue vs FloatValue, == compares representations!
    assert f2 == f3
    assert f2 == f4
    assert f2 == f5
    assert f2 == f6
Example #2
0
 def __new__(cls, arg1, arg2):
     if isinstance(arg1, (RealValue, Zero)) and isinstance(
             arg2, (RealValue, Zero)):
         return FloatValue(math.atan2(float(arg1), float(arg2)))
     if isinstance(arg1,
                   (ComplexValue)) or isinstance(arg2, (ComplexValue)):
         raise TypeError("Atan2 does not support complex numbers.")
     return Operator.__new__(cls)
Example #3
0
 def __new__(cls, argument):
     if isinstance(argument, (RealValue, Zero, numbers.Real)):
         if float(argument) < 0:
             return ComplexValue(cmath.sqrt(complex(argument)))
         else:
             return FloatValue(math.sqrt(float(argument)))
     if isinstance(argument, (ComplexValue, complex)):
         return ComplexValue(cmath.sqrt(complex(argument)))
     return MathFunction.__new__(cls)
Example #4
0
 def __new__(cls, argument):
     if isinstance(argument, (RealValue, Zero)):
         erf = _find_erf()
         if erf is not None:
             return FloatValue(erf(float(argument)))
     if isinstance(argument, (ConstantValue)):
         erf = _find_erf()
         if erf is not None:
             return ComplexValue(erf(complex(argument)))
     return MathFunction.__new__(cls)
Example #5
0
def test_zero(self):
    z1 = Zero(())
    z2 = Zero(())
    z3 = as_ufl(0)
    z4 = as_ufl(0.0)
    z5 = FloatValue(0)
    z6 = FloatValue(0.0)

    # self.assertTrue(z1 is z2)
    # self.assertTrue(z1 is z3)
    # self.assertTrue(z1 is z4)
    # self.assertTrue(z1 is z5)
    # self.assertTrue(z1 is z6)
    assert z1 == z1
    assert int(z1) == 0
    assert float(z1) == 0.0
    self.assertNotEqual(z1, 1.0)
    self.assertFalse(z1)

    # If zero() == 0 is to be allowed, it must not have the same hash or it will collide with 0 as key in dicts...
    self.assertNotEqual(hash(z1), hash(0.0))
    self.assertNotEqual(hash(z1), hash(0))
Example #6
0
 def __new__(cls, argument):
     if isinstance(argument, (ScalarValue, Zero)):
         return FloatValue(math.exp(float(argument)))
     return MathFunction.__new__(cls)
Example #7
0
 def __new__(cls, argument):
     if isinstance(argument, (ScalarValue, Zero)):
         erf = _find_erf()
         if erf is not None:
             return FloatValue(erf(float(argument)))
     return MathFunction.__new__(cls)
Example #8
0
 def __new__(cls, arg1, arg2):
     if isinstance(arg1, (ScalarValue, Zero)) and isinstance(
             arg2, (ScalarValue, Zero)):
         return FloatValue(math.atan2(float(arg1), float(arg2)))
     return Operator.__new__(cls)
Example #9
0
 def __new__(cls, argument):
     if isinstance(argument, (RealValue, Zero)):
         return FloatValue(math.exp(float(argument)))
     if isinstance(argument, (ComplexValue)):
         return ComplexValue(cmath.exp(complex(argument)))
     return MathFunction.__new__(cls)