1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-04-25 12:01:46 +00:00

Clean up \#ifdefs. Add entry for FPTEST/FPCLEAR for MacOS and FreeBSD

This commit is contained in:
Nick Briggs
2017-05-24 15:22:05 -07:00
parent e0195ec664
commit 2bf281cefb

View File

@@ -24,6 +24,7 @@
#ifdef DOS #ifdef DOS
#include <i32.h> #include <i32.h>
#endif /* DOS */ #endif /* DOS */
#ifdef ULTRIX #ifdef ULTRIX
#include <ieeefp.h> #include <ieeefp.h>
#endif /* ULTRIX */ #endif /* ULTRIX */
@@ -67,18 +68,15 @@ volatile extern int FP_error;
For sparc, should also check for isnan? Don't know what isnormal For sparc, should also check for isnan? Don't know what isnormal
& issubnormal do (these are sunos4.0 only) & issubnormal do (these are sunos4.0 only)
*/ */
#if defined(OS5)
#ifdef OS5
#define FPCLEAR #define FPCLEAR
#define FPTEST(result) (!finite(result)) #define FPTEST(result) (!finite(result))
#elif (defined(sparc) || defined(I386) || defined(HPUX)) #elif (defined(sparc) || defined(I386) || defined(HPUX))
#define FPCLEAR #define FPCLEAR
#define FPTEST(result) (isinf(result) || isnan(result)) #define FPTEST(result) (isinf(result) || isnan(result))
#elif APOLLO #elif defined(APOLLO)
/**********************************************************/ /**********************************************************/
/* Need values.h & nan.h, so we all parts of IsNANorINF */ /* Need values.h & nan.h, so we all parts of IsNANorINF */
/* are defined. IsNANorINF uses structure aliasing to */ /* are defined. IsNANorINF uses structure aliasing to */
@@ -92,23 +90,28 @@ volatile extern int FP_error;
#undef REGISTER #undef REGISTER
#define REGISTER #define REGISTER
#elif OSF1 #elif defined(OSF1)
#include <fp.h> #include <fp.h>
#define FPCLEAR #define FPCLEAR
#define FPTEST(result) (!FINITE(result)) #define FPTEST(result) (!FINITE(result))
#elif defined(INDIGO)
#elif INDIGO
#include <nan.h> #include <nan.h>
#define FPCLEAR #define FPCLEAR
#define FPTEST(result) (IsNANorINF(result)) #define FPTEST(result) (IsNANorINF(result))
#else
#ifdef AIX #elif defined(AIX)
#define FPCLEAR #define FPCLEAR
#define FPTEST(result) ((!finite(result)) || isnan(result)) #define FPTEST(result) ((!finite(result)) || isnan(result))
#elif DOS
#elif defined(MACOSX) || defined(FREEBSD)
#define FPCLEAR
#define FPTEST(result) (!finite(result))
#elif defined(DOS)
#define FPCLEAR #define FPCLEAR
#define FPTEST(result) (_getrealerror() & ( I87_ZERO_DIVIDE | I87_OVERFLOW | I87_UNDERFLOW)) #define FPTEST(result) (_getrealerror() & ( I87_ZERO_DIVIDE | I87_OVERFLOW | I87_UNDERFLOW))
#else #else
static int constant0 = 0; static int constant0 = 0;
unsigned int fpstatus_(); unsigned int fpstatus_();
@@ -116,10 +119,7 @@ unsigned int fpstatus_();
#define FPCLEAR fpstatus_(&constant0); #define FPCLEAR fpstatus_(&constant0);
#define FPTEST(result) (fpstatus_(&constant0) & 0xF0) #define FPTEST(result) (fpstatus_(&constant0) & 0xF0)
#endif /* AIX */ #endif
#endif /* sparc | I386 */
#endif /* FLTINT */ #endif /* FLTINT */