|
38 | 38 | test_file = os.path.join(test_dir, 'mathdata', 'cmath_testcases.txt')
|
39 | 39 |
|
40 | 40 |
|
41 |
| -def is_signed_nan(x, x0): |
42 |
| - """Check if x is a NaN with the same sign as x0.""" |
43 |
| - return math.isnan(x) and math.copysign(1, x) == math.copysign(1, x0) |
44 |
| - |
45 |
| - |
46 | 41 | def to_ulps(x):
|
47 | 42 | """Convert a non-NaN float x to an integer, in such a way that
|
48 | 43 | adjacent floats are converted to adjacent integers. Then
|
@@ -670,12 +665,11 @@ def test_fmax_nans(self):
|
670 | 665 | self.assertFalse(math.isnan(math.fmax(x, NAN)))
|
671 | 666 | self.assertFalse(math.isnan(math.fmax(NNAN, x)))
|
672 | 667 | self.assertFalse(math.isnan(math.fmax(x, NNAN)))
|
673 |
| - # When operands are NaNs with identical sign, return this signed NaN. |
674 |
| - self.assertTrue(is_signed_nan(math.fmax(NAN, NAN), 1)) |
675 |
| - self.assertTrue(is_signed_nan(math.fmax(NNAN, NNAN), -1)) |
676 |
| - # When operands are NaNs of different signs, return the positive NaN. |
677 |
| - self.assertTrue(is_signed_nan(math.fmax(NAN, NNAN), 1)) |
678 |
| - self.assertTrue(is_signed_nan(math.fmax(NNAN, NAN), 1)) |
| 668 | + # When both operands are NaNs, fmax() returns NaN (see C11, F.10.9.2). |
| 669 | + self.assertTrue(math.isnan(math.fmax(NAN, NAN))) |
| 670 | + self.assertTrue(math.isnan(math.fmax(NNAN, NNAN))) |
| 671 | + self.assertTrue(math.isnan(math.fmax(NAN, NNAN))) |
| 672 | + self.assertTrue(math.isnan(math.fmax(NNAN, NAN))) |
679 | 673 |
|
680 | 674 | def test_fmin(self):
|
681 | 675 | self.assertRaises(TypeError, math.fmin)
|
@@ -718,12 +712,11 @@ def test_fmin_nans(self):
|
718 | 712 | self.assertFalse(math.isnan(math.fmin(x, NAN)))
|
719 | 713 | self.assertFalse(math.isnan(math.fmin(NNAN, x)))
|
720 | 714 | self.assertFalse(math.isnan(math.fmin(x, NNAN)))
|
721 |
| - # When operands are NaNs with identical sign, return this signed NaN. |
722 |
| - self.assertTrue(is_signed_nan(math.fmin(NAN, NAN), 1)) |
723 |
| - self.assertTrue(is_signed_nan(math.fmin(NNAN, NNAN), -1)) |
724 |
| - # When operands are NaNs of different signs, return the negative NaN. |
725 |
| - self.assertTrue(is_signed_nan(math.fmin(NAN, NNAN), -1)) |
726 |
| - self.assertTrue(is_signed_nan(math.fmin(NNAN, NAN), -1)) |
| 715 | + # When both operands are NaNs, fmax() returns NaN (see C11, F.10.9.2). |
| 716 | + self.assertTrue(math.isnan(math.fmin(NAN, NAN))) |
| 717 | + self.assertTrue(math.isnan(math.fmin(NNAN, NNAN))) |
| 718 | + self.assertTrue(math.isnan(math.fmin(NAN, NNAN))) |
| 719 | + self.assertTrue(math.isnan(math.fmin(NNAN, NAN))) |
727 | 720 |
|
728 | 721 | def testFrexp(self):
|
729 | 722 | self.assertRaises(TypeError, math.frexp)
|
|
0 commit comments