114 lines
2.8 KiB
Python
114 lines
2.8 KiB
Python
from mpmath import *
|
|
|
|
def test_special():
|
|
assert inf == inf
|
|
assert inf != -inf
|
|
assert -inf == -inf
|
|
assert inf != nan
|
|
assert nan != nan
|
|
assert isnan(nan)
|
|
assert --inf == inf
|
|
assert abs(inf) == inf
|
|
assert abs(-inf) == inf
|
|
assert abs(nan) != abs(nan)
|
|
|
|
assert isnan(inf - inf)
|
|
assert isnan(inf + (-inf))
|
|
assert isnan(-inf - (-inf))
|
|
|
|
assert isnan(inf + nan)
|
|
assert isnan(-inf + nan)
|
|
|
|
assert mpf(2) + inf == inf
|
|
assert 2 + inf == inf
|
|
assert mpf(2) - inf == -inf
|
|
assert 2 - inf == -inf
|
|
|
|
assert inf > 3
|
|
assert 3 < inf
|
|
assert 3 > -inf
|
|
assert -inf < 3
|
|
assert inf > mpf(3)
|
|
assert mpf(3) < inf
|
|
assert mpf(3) > -inf
|
|
assert -inf < mpf(3)
|
|
|
|
assert not (nan < 3)
|
|
assert not (nan > 3)
|
|
|
|
assert isnan(inf * 0)
|
|
assert isnan(-inf * 0)
|
|
assert inf * 3 == inf
|
|
assert inf * -3 == -inf
|
|
assert -inf * 3 == -inf
|
|
assert -inf * -3 == inf
|
|
assert inf * inf == inf
|
|
assert -inf * -inf == inf
|
|
|
|
assert isnan(nan / 3)
|
|
assert inf / -3 == -inf
|
|
assert inf / 3 == inf
|
|
assert 3 / inf == 0
|
|
assert -3 / inf == 0
|
|
assert 0 / inf == 0
|
|
assert isnan(inf / inf)
|
|
assert isnan(inf / -inf)
|
|
assert isnan(inf / nan)
|
|
|
|
assert mpf('inf') == mpf('+inf') == inf
|
|
assert mpf('-inf') == -inf
|
|
assert isnan(mpf('nan'))
|
|
|
|
assert isinf(inf)
|
|
assert isinf(-inf)
|
|
assert not isinf(mpf(0))
|
|
assert not isinf(nan)
|
|
|
|
def test_special_powers():
|
|
assert inf**3 == inf
|
|
assert isnan(inf**0)
|
|
assert inf**-3 == 0
|
|
assert (-inf)**2 == inf
|
|
assert (-inf)**3 == -inf
|
|
assert isnan((-inf)**0)
|
|
assert (-inf)**-2 == 0
|
|
assert (-inf)**-3 == 0
|
|
assert isnan(nan**5)
|
|
assert isnan(nan**0)
|
|
|
|
def test_functions_special():
|
|
assert exp(inf) == inf
|
|
assert exp(-inf) == 0
|
|
assert isnan(exp(nan))
|
|
assert log(inf) == inf
|
|
assert isnan(log(nan))
|
|
assert isnan(sin(inf))
|
|
assert isnan(sin(nan))
|
|
assert atan(inf).ae(pi/2)
|
|
assert atan(-inf).ae(-pi/2)
|
|
assert isnan(sqrt(nan))
|
|
assert sqrt(inf) == inf
|
|
|
|
def test_convert_special():
|
|
float_inf = 1e300 * 1e300
|
|
float_ninf = -float_inf
|
|
float_nan = float_inf/float_ninf
|
|
assert mpf(3) * float_inf == inf
|
|
assert mpf(3) * float_ninf == -inf
|
|
assert isnan(mpf(3) * float_nan)
|
|
assert not (mpf(3) < float_nan)
|
|
assert not (mpf(3) > float_nan)
|
|
assert not (mpf(3) <= float_nan)
|
|
assert not (mpf(3) >= float_nan)
|
|
assert float(mpf('1e1000')) == float_inf
|
|
assert float(mpf('-1e1000')) == float_ninf
|
|
assert float(mpf('1e100000000000000000')) == float_inf
|
|
assert float(mpf('-1e100000000000000000')) == float_ninf
|
|
assert float(mpf('1e-100000000000000000')) == 0.0
|
|
|
|
def test_div_bug():
|
|
assert isnan(nan/1)
|
|
assert isnan(nan/2)
|
|
assert inf/2 == inf
|
|
assert (-inf)/2 == -inf
|