the usual (part II)

This commit is contained in:
Jeremy Hylton 2000-10-16 17:42:40 +00:00
parent 98c8184f2f
commit e21670553e
1 changed files with 37 additions and 27 deletions

View File

@ -153,33 +153,43 @@ print 'tanh'
testit('tanh(0)', math.tanh(0), 0)
testit('tanh(1)+tanh(-1)', math.tanh(1)+math.tanh(-1), 0)
print 'exceptions' # oooooh, *this* is a x-platform gamble! good luck
# RED_FLAG 16-Oct-2000 Tim
# While 2.0 is more consistent about exceptions than previous releases, it
# still fails this part of the test on some platforms. For now, we only
# *run* test_exceptions() in verbose mode, so that this isn't normally
# tested.
try:
def test_exceptions():
print 'exceptions'
try:
x = math.exp(-1000000000)
except:
except:
# mathmodule.c is failing to weed out underflows from libm, or
# we've got an fp format with huge dynamic range
raise TestFailed("underflowing exp() should not have rasied an exception")
if x != 0:
raise TestFailed("underflowing exp() should not have raised "
"an exception")
if x != 0:
raise TestFailed("underflowing exp() should have returned 0")
# If this fails, probably using a strict IEEE-754 conforming libm, and x
# is +Inf afterwards. But Python wants overflows detected by default.
try:
# If this fails, probably using a strict IEEE-754 conforming libm, and x
# is +Inf afterwards. But Python wants overflows detected by default.
try:
x = math.exp(1000000000)
except OverflowError:
except OverflowError:
pass
else:
else:
raise TestFailed("overflowing exp() didn't trigger OverflowError")
# If this fails, it could be a puzzle. One odd possibility is that
# mathmodule.c's CHECK() macro is getting confused while comparing
# Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE
# as a result (and so raising OverflowError instead).
try:
# If this fails, it could be a puzzle. One odd possibility is that
# mathmodule.c's CHECK() macro is getting confused while comparing
# Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE
# as a result (and so raising OverflowError instead).
try:
x = math.sqrt(-1.0)
except ValueError:
except ValueError:
pass
else:
else:
raise TestFailed("sqrt(-1) didn't raise ValueError")
if verbose:
test_exceptions()