diff --git a/Lib/test/test_capi/test_float.py b/Lib/test/test_capi/test_float.py index df7017e6436a69..8b25607b6d504f 100644 --- a/Lib/test/test_capi/test_float.py +++ b/Lib/test/test_capi/test_float.py @@ -1,6 +1,5 @@ import math import random -import platform import sys import unittest import warnings @@ -215,8 +214,8 @@ def test_pack_unpack_roundtrip_for_nans(self): # PyFloat_Pack/Unpack*() API. See also gh-130317 and # e.g. https://developercommunity.visualstudio.com/t/155064 signaling = 0 - if platform.machine().startswith('parisc'): - # HP PA RISC uses 0 for quiet, see: + if _testcapi.nan_msb_is_signaling: + # HP PA RISC and some MIPS CPUs use 0 for quiet, see: # https://en.wikipedia.org/wiki/NaN#Encoding signaling = 1 i = make_nan(size, sign, not signaling) diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py index cceecdd526c006..bbfe19a4e0bab7 100644 --- a/Lib/test/test_struct.py +++ b/Lib/test/test_struct.py @@ -5,7 +5,6 @@ import math import operator import unittest -import platform import struct import sys import weakref @@ -891,6 +890,7 @@ def test_module_func(self): self.assertRaises(StopIteration, next, it) def test_half_float(self): + _testcapi = import_helper.import_module('_testcapi') # Little-endian examples from: # http://en.wikipedia.org/wiki/Half_precision_floating-point_format format_bits_float__cleanRoundtrip_list = [ @@ -935,8 +935,8 @@ def test_half_float(self): # Check that packing produces a bit pattern representing a quiet NaN: # all exponent bits and the msb of the fraction should all be 1. - if platform.machine().startswith('parisc'): - # HP PA RISC uses 0 for quiet, see: + if _testcapi.nan_msb_is_signaling: + # HP PA RISC and some MIPS CPUs use 0 for quiet, see: # https://en.wikipedia.org/wiki/NaN#Encoding expected = 0x7c else: diff --git a/Modules/_testcapi/float.c b/Modules/_testcapi/float.c index e3869134c84d43..63de77ca6b8651 100644 --- a/Modules/_testcapi/float.c +++ b/Modules/_testcapi/float.c @@ -171,5 +171,9 @@ _PyTestCapi_Init_Float(PyObject *mod) return -1; } - return 0; +#if (defined(__mips__) && !defined(__mips_nan2008)) || defined(__hppa__) + return PyModule_Add(mod, "nan_msb_is_signaling", PyBool_FromLong(1)); +#else + return PyModule_Add(mod, "nan_msb_is_signaling", PyBool_FromLong(0)); +#endif }