我们从Python开源项目中,提取了以下19个代码示例,用于说明如何使用cmath.isinf()。
def _load_(self, value, context): if isinstance(value, bool): if self.get_options().allow_bool: return int(value) else: raise ValueError() elif isinstance(value, integer_types): if self.get_options().jssafe and not (-MAX_SAFE_INTEGER <= value <= MAX_SAFE_INTEGER): raise ValueError() return value elif isinstance(value, float): if not self.get_options().allow_nan and (math.isnan(value) or math.isinf(value)): raise ValueError() return value else: raise ValueError()
def _load_(self, value, context): if isinstance(value, decimal.Decimal): if not self.get_options().allow_nan and not value.is_finite(): raise ValueError() return value elif isinstance(value, text_types): try: with decimal.localcontext() as ctx: ctx.traps[decimal.InvalidOperation] = 1 value = decimal.Decimal(value) if not self.get_options().allow_nan and not value.is_finite(): raise ValueError() return value except decimal.InvalidOperation: raise ValueError() elif isinstance(value, integer_types): return decimal.Decimal(value) elif isinstance(value, float): if not self.get_options().allow_nan: if math.isnan(value) or math.isinf(value): raise ValueError() return decimal.Decimal(value) else: raise ValueError()
def _load_(self, value, context): if isinstance(value, complex): pass elif isinstance(value, (integer_types, float)): value = complex(value) elif isinstance(value, (tuple, list)): if len(value) != 2: raise ValueError() if not isinstance(value[0], (integer_types, float)) or not isinstance(value[1], (integer_types, float)): raise ValueError() value = complex(value[0], value[1]) else: raise ValueError() if not self.get_options().allow_nan and (cmath.isnan(value) or cmath.isinf(value)): raise ValueError() return value
def test_isinf(self): self.assertFalse(cmath.isinf(1)) self.assertFalse(cmath.isinf(1j)) self.assertFalse(cmath.isinf(NAN)) self.assertTrue(cmath.isinf(INF)) self.assertTrue(cmath.isinf(complex(INF, 0))) self.assertTrue(cmath.isinf(complex(0, INF))) self.assertTrue(cmath.isinf(complex(INF, INF))) self.assertTrue(cmath.isinf(complex(NAN, INF))) self.assertTrue(cmath.isinf(complex(INF, NAN)))
def rAssertAlmostEqual(self, a, b, rel_err = 2e-15, abs_err = 5e-323, msg=None): """Fail if the two floating-point numbers are not almost equal. Determine whether floating-point values a and b are equal to within a (small) rounding error. The default values for rel_err and abs_err are chosen to be suitable for platforms where a float is represented by an IEEE 754 double. They allow an error of between 9 and 19 ulps. """ # special values testing if math.isnan(a): if math.isnan(b): return self.fail(msg or '{!r} should be nan'.format(b)) if math.isinf(a): if a == b: return self.fail(msg or 'finite result where infinity expected: ' 'expected {!r}, got {!r}'.format(a, b)) # if both a and b are zero, check whether they have the same sign # (in theory there are examples where it would be legitimate for a # and b to have opposite signs; in practice these hardly ever # occur). if not a and not b: if math.copysign(1., a) != math.copysign(1., b): self.fail(msg or 'zero has wrong sign: expected {!r}, ' 'got {!r}'.format(a, b)) # if a-b overflows, or b is infinite, return False. Again, in # theory there are examples where a is within a few ulps of the # max representable float, and then b could legitimately be # infinite. In practice these examples are rare. try: absolute_error = abs(b-a) except OverflowError: pass else: # test passes if either the absolute error or the relative # error is sufficiently small. The defaults amount to an # error of between 9 ulps and 19 ulps on an IEEE-754 compliant # machine. if absolute_error <= max(abs_err, rel_err * abs(a)): return self.fail(msg or '{!r} and {!r} are not sufficiently close'.format(a, b))