Stop trying to cater to platforms with a broken HUGE_VAL definition. It

breaks other platforms (in this case, the hack for broken Cray systems in
turn caused failure on a Mac system broken in a different way).
This commit is contained in:
Tim Peters 2002-07-03 03:31:20 +00:00
parent 60ae701b3a
commit 1de41bfbc0
2 changed files with 25 additions and 12 deletions

View File

@ -229,19 +229,14 @@ extern "C" {
*/ */
#define Py_IS_INFINITY(X) ((X) && (X)*0.5 == (X)) #define Py_IS_INFINITY(X) ((X) && (X)*0.5 == (X))
/* According to /* HUGE_VAL is supposed to expand to a positive double infinity. Python
* http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm * uses Py_HUGE_VAL instead because some platforms are broken in this
* on some Cray systems HUGE_VAL is incorrectly (according to the C std) * respect. We used to embed code in pyport.h to try to worm around that,
* defined to be the largest positive finite rather than infinity. We need * but different platforms are broken in conflicting ways. If you're on
* the std-conforming infinity meaning (provided the platform has one!). * a platform where HUGE_VAL is defined incorrectly, fiddle your Python
* * config to #define Py_HUGE_VAL to something that works on your platform.
* Then, according to a bug report on SourceForge, defining Py_HUGE_VAL as
* INFINITY caused internal compiler errors under BeOS using some version
* of gcc. Explicitly casting INFINITY to double made that problem go away.
*/ */
#ifdef INFINITY #ifndef Py_HUGE_VAL
#define Py_HUGE_VAL ((double)INFINITY)
#else
#define Py_HUGE_VAL HUGE_VAL #define Py_HUGE_VAL HUGE_VAL
#endif #endif

View File

@ -289,6 +289,24 @@ Tools/Demos
Build Build
- Accoring to Annex F of the current C standard,
The Standard C macro HUGE_VAL and its float and long double analogs,
HUGE_VALF and HUGE_VALL, expand to expressions whose values are
positive infinities.
Python only uses the double HUGE_VAL, and only to #define its own symbol
Py_HUGE_VAL. Some platforms have incorrect definitions for HUGE_VAL.
pyport.h used to try to worm around that, but the workarounds triggered
other bugs on other platforms, so we gave up. If your platform defines
HUGE_VAL incorrectly, you'll need to #define Py_HUGE_VAL to something
that works on your platform. The only instance of this I'm sure about
is on an unknown subset of Cray systems, described here:
http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm
Presumably 2.3a1 breaks such systems. If anyone uses such a system, help!
- The configure option --without-doc-strings can be used to remove the - The configure option --without-doc-strings can be used to remove the
doc strings from the builtin functions and modules; this reduces the doc strings from the builtin functions and modules; this reduces the
size of the executable. size of the executable.