From 1de41bfbc0afadc0b1fa2f4076b54385fa5b33ba Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Wed, 3 Jul 2002 03:31:20 +0000 Subject: [PATCH] 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). --- Include/pyport.h | 19 +++++++------------ Misc/NEWS | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/Include/pyport.h b/Include/pyport.h index 5c3e0a947f1..3f0923fd3cc 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -229,19 +229,14 @@ extern "C" { */ #define Py_IS_INFINITY(X) ((X) && (X)*0.5 == (X)) -/* According to - * http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm - * on some Cray systems HUGE_VAL is incorrectly (according to the C std) - * defined to be the largest positive finite rather than infinity. We need - * the std-conforming infinity meaning (provided the platform has one!). - * - * 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. +/* HUGE_VAL is supposed to expand to a positive double infinity. Python + * uses Py_HUGE_VAL instead because some platforms are broken in this + * respect. We used to embed code in pyport.h to try to worm around that, + * but different platforms are broken in conflicting ways. If you're on + * a platform where HUGE_VAL is defined incorrectly, fiddle your Python + * config to #define Py_HUGE_VAL to something that works on your platform. */ -#ifdef INFINITY -#define Py_HUGE_VAL ((double)INFINITY) -#else +#ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif diff --git a/Misc/NEWS b/Misc/NEWS index defbc47c8c8..c8bda833f0d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -289,6 +289,24 @@ Tools/Demos 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 doc strings from the builtin functions and modules; this reduces the size of the executable.