gcc-3.0 on HPUX-11

Jim Buffenbarger buff@hpbs9968.boi.hp.com
Thu Jun 28 06:48:00 GMT 2001


Hi Bruce,

Bruce> I noticed you explicitly removed the 'extern "C"'
Bruce> stuff.  Do you (or anyone else) know if it can be
Bruce> added back to this fix or also removed from the
Bruce> hpux10 fix?  I _really_ prefer not adding new fixes
Bruce> if it is not really necessary.

I've attached the entire HP-UX B.11.00 A 9000/785 math.h
file. The relevant part is a couple of lines from the
bottom. As you can see, it doesn't have the 'extern "C"'
stuff (anymore). I didn't want to try to do the "meld" you
want to do, because I was afraid I'd break the HPUX-10
selection pattern.

I don't know what exact version of HPUX-10 the original
pattern was intended to match, but the HPUX-10 math.h that I
have available still has 'extern "C"' stuff. I can send that
math.h, too, if you want it.

By the way, we really appreciate all the hard work you guys
do, bringing us such a good compiler.

-- Jim

------------------------------ 8< ------------------------------
#ifndef _MATH_INCLUDED
#define _MATH_INCLUDED

#ifndef _SYS_STDSYMS_INCLUDED
#  include <sys/stdsyms.h>
#endif /* _SYS_STDSYMS_INCLUDED */

#if !defined(__IA64__)
#  define _PA_RISC
#endif

#ifdef __cplusplus
extern "C" {
#endif


/********* STANDARD C INTERFACE ********************************/

#define HUGE_VAL   _DINFINITY

#if defined(_PA_RISC) && !defined(__cplusplus)
#  pragma NO_SIDE_EFFECTS fabs
#  ifdef __BUILTIN_MATH
#    pragma NO_SIDE_EFFECTS acos, asin, atan, atan2, cos, sin, tan
#    pragma NO_SIDE_EFFECTS cosh, sinh, tanh
#    pragma NO_SIDE_EFFECTS exp, ldexp, log, log10, pow
#    pragma NO_SIDE_EFFECTS sqrt, ceil, floor, fmod
#  endif
#endif /* #if for pragmas */

#ifdef _PROTOTYPES 
#ifdef _NAMESPACE_STD
namespace std {
#endif
   extern double acos(double);
   extern double asin(double);
   extern double atan(double);
   extern double atan2(double, double);
   extern double cos(double);
   extern double sin(double);
   extern double tan(double);
   extern double cosh(double);
   extern double sinh(double);
   extern double tanh(double);
   extern double exp(double);
   extern double frexp(double, int *);
   extern double ldexp(double, int);
   extern double log(double);
   extern double log10(double);
   extern double modf(double, double *);
   extern double pow(double, double);
   extern double sqrt(double);
   extern double ceil(double);
   extern double fabs(double);
   extern double floor(double);
   extern double fmod(double, double);
#ifdef _NAMESPACE_STD
} //namespace std
#endif
#else /* not _PROTOTYPES */
   extern double acos();
   extern double asin();
   extern double atan();
   extern double atan2();
   extern double cos();
   extern double sin();
   extern double tan();
   extern double cosh();
   extern double sinh();
   extern double tanh();
   extern double exp();
   extern double frexp();
   extern double ldexp();
   extern double log();
   extern double log10();
   extern double modf();
   extern double pow();
   extern double sqrt();
   extern double ceil();
   extern double fabs();
   extern double floor();
   extern double fmod();
#endif /* _PROTOTYPES */


/********* XOPEN EXTENSIONS ***********************************/ 

#ifdef _INCLUDE_XOPEN_SOURCE

#  define M_E           2.7182818284590452354
#  define M_LOG2E       1.4426950408889634074
#  define M_LOG10E      0.43429448190325182765
#  define M_LN2         0.69314718055994530942
#  define M_LN10        2.30258509299404568402
#  define M_PI          3.14159265358979323846
#  define M_PI_2        1.57079632679489661923
#  define M_PI_4        0.78539816339744830962
#  define M_1_PI        0.31830988618379067154
#  define M_2_PI        0.63661977236758134308
#  define M_2_SQRTPI    1.12837916709551257390
#  define M_SQRT2       1.41421356237309504880
#  define M_SQRT1_2     0.70710678118654752440
#  define MAXFLOAT      ((float)3.40282346638528860e+38)

   extern int signgam;

#  if defined(_PA_RISC) && !defined(__cplusplus)
#    pragma NO_SIDE_EFFECTS isnan
#    ifdef __BUILTIN_MATH
#      pragma NO_SIDE_EFFECTS acosh, asinh, atanh, rint, scalb, logb, cbrt
#      pragma NO_SIDE_EFFECTS nextafter, remainder, expm1, ilogb, log1p
#    endif
#  endif /* #if for pragma */

#  ifdef _PROTOTYPES
     extern double erf(double);
     extern double erfc(double);
     extern double gamma(double);                             /* obsolescent */
     extern double hypot(double, double);
     extern int    isnan(double);
     extern double j0(double);
     extern double j1(double);
     extern double jn(int, double);
     extern double lgamma(double);
     extern double y0(double);
     extern double y1(double);
     extern double yn(int, double);
#  else /* not _PROTOTYPES */
     extern double erf();
     extern double erfc();
     extern double gamma();                                   /* obsolescent */
     extern double hypot();
     extern int    isnan();
     extern double j0();
     extern double j1();
     extern double jn();
     extern double lgamma();
     extern double y0();
     extern double y1();
     extern double yn();
#  endif /* _PROTOTYPES */

#endif /* _INCLUDE_XOPEN_SOURCE */

#ifdef _INCLUDE_XOPEN_SOURCE_EXTENDED

#  ifdef _PROTOTYPES
     extern double acosh(double);
     extern double asinh(double);
     extern double atanh(double);
     extern double cbrt(double);
     extern double expm1(double);
     extern int    ilogb(double);
     extern double log1p(double);
     extern double logb(double);
     extern double nextafter(double, double);
     extern double remainder(double, double);
     extern double rint(double);
     extern double scalb(double,double);
#  else /* not _PROTOTYPES */
     extern double acosh();
     extern double asinh();
     extern double atanh();
     extern double cbrt();
     extern double expm1();
     extern int    ilogb();
     extern double log1p();
     extern double logb();
     extern double nextafter();
     extern double remainder();
     extern double rint();
     extern double scalb();
#  endif /* _PROTOTYPES */

#endif /* _INCLUDE_XOPEN_SOURCE_EXTENDED */


/******** HPUX EXTENSIONS *************************************/ 

#ifdef _INCLUDE_HPUX_SOURCE

#  ifdef __STDC__
     typedef float float_t;
     typedef double double_t;
#  endif

#  define HUGE_VALF     _SINFINITY
#  define INFINITY      _SINFINITY
#  define NAN           _SQNAN

#  define FP_ILOGB0	(-2147483647 - 1)
#  define FP_ILOGBNAN	(-2147483647 - 1)

#  define isnan(x)		_ISNAN(x)
#  define isinf(x)		_ISINF(x)
#  define signbit(x)		_SIGNBIT(x)
#  define isfinite(x)		_ISFINITE(x)
#  define isnormal(x)		_ISNORMAL(x)
#  define fpclassify(x)		_FPCLASSIFY(x)
#  define isunordered(x,y)	_ISUNORDERED(x,y)
#  define isgreater(x,y)	_ISGREATER(x,y)
#  define isgreaterequal(x,y)	_ISGREATEREQUAL(x,y)
#  define isless(x,y)		_ISLESS(x,y)
#  define islessequal(x,y)	_ISLESSEQUAL(x,y)
#  define islessgreater(x,y)	_ISLESSGREATER(x,y)

#  define FP_NORMAL     0
#  define FP_ZERO       1
#  define FP_INFINITE   2
#  define FP_SUBNORMAL  3
#  define FP_NAN        4

#  ifndef _PA_RISC
#    define FP_FAST_FMA
#    define FP_FAST_FMAF
#  endif

#  define DECIMAL_DIG  17

#  if defined(_PA_RISC) && !defined(__cplusplus)
#    pragma NO_SIDE_EFFECTS copysign, copysignf, fabsf
#    pragma NO_SIDE_EFFECTS _Fpclassify, _Fpclassifyf, _Fpclassifyfd
#    pragma NO_SIDE_EFFECTS _Isunordered, _Isunorderedf
#    pragma NO_SIDE_EFFECTS _Signbit, _Signbitf, _Isnanf, _Isinf, _Isinff
#    pragma NO_SIDE_EFFECTS _Isfinite, _Isfinitef, _Isnormal, _Isnormalf, _Isnormalfd
#    ifdef __BUILTIN_MATH
#      pragma NO_SIDE_EFFECTS acosd, asind, atand, atan2d, cosd, sind, tand, log2
#      pragma NO_SIDE_EFFECTS acosf, asinf, atanf, atan2f, cosf, sinf, tanf
#      pragma NO_SIDE_EFFECTS coshf, sinhf, tanhf, acosdf, asindf, atandf, atan2df
#      pragma NO_SIDE_EFFECTS cosdf, sindf, tandf, expf, logf, log10f, log2f
#      pragma NO_SIDE_EFFECTS powf, sqrtf, fmodf, cbrtf
#    endif
#  endif /* #if for pragmas */

#  ifdef _PROTOTYPES
     extern double copysign(double, double);
     extern double log2(double);
     extern double lgamma_r(double, int *);
     extern double exp2(double);
     extern double fdim(double, double);
     extern double fmax(double, double);
     extern double fmin(double, double);
     extern double nan(const char *);
     extern double scalbn(double, int);
     extern double nearbyint(double);
     extern double round(double);
     extern double trunc(double);
     extern double remquo(double, double, int *);
     extern long   lrint(double);
     extern long   lround(double);
#    if defined(__STDC_EXT__) || defined(_INCLUDE_LONGLONG)
       extern long long llrint(double);
       extern long long llround(double);
#    endif
     extern double cosd(double);
     extern double sind(double);
     extern double tand(double);
#    ifndef _PA_RISC
       extern double    exp10(double);
       extern double    fma(double, double, double);
       extern double    scalbln(double, long);
       extern double    tgamma(double);
#    endif
     extern double acosd(double);
     extern double asind(double);
     extern double atand(double);
     extern double atan2d(double, double);

     extern float acosf(float);
     extern float asinf(float);
     extern float atanf(float);
     extern float atan2f(float, float);
     extern float cosf(float);
     extern float sinf(float);
     extern float tanf(float);
     extern float coshf(float);
     extern float sinhf(float);     
     extern float tanhf(float);
     extern float expf(float);
     extern float logf(float);
     extern float log10f(float);
     extern float powf(float, float);
     extern float sqrtf(float);
     extern float fabsf(float);
     extern float fmodf(float, float);
     extern float cbrtf(float);
     extern float copysignf(float, float);
     extern float nextafterf(float, float);
     extern float log2f(float);
     extern float cosdf(float);
     extern float sindf(float);
     extern float tandf(float);
     extern float acosdf(float);
     extern float asindf(float);
     extern float atandf(float);
     extern float atan2df(float, float);
#    ifndef _PA_RISC
       extern float exp2f(float);
       extern float exp10f(float);
       extern float expm1f(float);
       extern float log1pf(float);
       extern float fmaf(float, float, float);
       extern float acoshf(float);
       extern float asinhf(float);
       extern float atanhf(float);
       extern float frexpf(float, int *);
       extern float ldexpf(float, int);
       extern float modff(float, float *);
       extern float logbf(float);
       extern float scalbnf(float, int);
       extern float scalblnf(float, long);
       extern int   ilogbf(float);
       extern float hypotf(float, float);
       extern float erff(float);
       extern float erfcf(float);
       extern float gammaf(float);
       extern float lgammaf(float);
       extern float lgammaf_r(float, int *);
       extern float tgammaf(float);
       extern float ceilf(float);
       extern float floorf(float);
       extern float nearbyintf(float);
       extern float rintf(float);
       extern float roundf(float);
       extern long  lrintf(float);
       extern long  lroundf(float);
#      if defined(__STDC_EXT__) || defined(_INCLUDE_LONGLONG)
         extern long long llrintf(float);
         extern long long llroundf(float);
#      endif
       extern float truncf(float);
       extern float nanf(const char *);
       extern float remainderf(float, float);
       extern float remquof(float, float, int *);
       extern float fdimf(float, float);
       extern float fmaxf(float, float);
       extern float fminf(float, float);
#    endif /* !PA_RISC */

#    ifdef __IA64__
       extern __float80 acosf80(__float80);
       extern __float80 asinf80(__float80);
       extern __float80 atanf80(__float80);
       extern __float80 atan2f80(__float80, __float80);
       extern __float80 cosf80(__float80);
       extern __float80 sinf80(__float80);
       extern __float80 tanf80(__float80);
       extern __float80 acosdf80(__float80);
       extern __float80 asindf80(__float80);
       extern __float80 atandf80(__float80);
       extern __float80 atan2df80(__float80, __float80);
       extern __float80 cosdf80(__float80);
       extern __float80 sindf80(__float80);
       extern __float80 tandf80(__float80);
       extern __float80 coshf80(__float80);
       extern __float80 sinhf80(__float80);
       extern __float80 tanhf80(__float80);
       extern __float80 acoshf80(__float80);
       extern __float80 asinhf80(__float80);
       extern __float80 atanhf80(__float80);
       extern __float80 expf80(__float80);
       extern __float80 exp2f80(__float80);
       extern __float80 exp10f80(__float80);
       extern __float80 expm1f80(__float80);
       extern __float80 logf80(__float80);
       extern __float80 log2f80(__float80);
       extern __float80 log10f80(__float80);
       extern __float80 log1pf80(__float80);
       extern __float80 powf80(__float80, __float80);
       extern __float80 frexpf80(__float80, int *);
       extern __float80 ldexpf80(__float80, int);
       extern __float80 modff80(__float80, __float80 *);
       extern __float80 logbf80(__float80);
       extern __float80 scalbnf80(__float80, int);
       extern __float80 scalblnf80(__float80, long);
       extern int       ilogbf80(__float80);
       extern __float80 fabsf80(__float80);
       extern __float80 sqrtf80(__float80);
       extern __float80 cbrtf80(__float80);
       extern __float80 hypotf80(__float80, __float80);
       /* Not implemented yet
         extern __float80 erff80(__float80);
         extern __float80 erfcf80(__float80);
         extern __float80 gammaf80(__float80);
         extern __float80 lgammaf80(__float80);
         extern __float80 lgammaf80_r(__float80, int *);
         extern __float80 tgammaf80(__float80);
       */
       extern __float80 ceilf80(__float80);
       extern __float80 floorf80(__float80);
       extern __float80 nearbyintf80(__float80);
       extern __float80 rintf80(__float80);
       extern __float80 roundf80(__float80);
       extern long      lrintf80(__float80);
       extern long      lroundf80(__float80);
#      if defined(__STDC_EXT__) || defined(_INCLUDE_LONGLONG)
         extern long long llrintf80(__float80);
         extern long long llroundf80(__float80);
#      endif
       extern __float80 truncf80(__float80);
       extern __float80 nanf80(const char *);
       extern __float80 fmodf80(__float80, __float80);
       extern __float80 remainderf80(__float80, __float80);
       extern __float80 remquof80(__float80, __float80, int *);
       extern __float80 copysignf80(__float80, __float80);
       extern __float80 nextafterf80(__float80, __float80);
       extern __float80 fdimf80(__float80, __float80);
       extern __float80 fmaxf80(__float80, __float80);
       extern __float80 fminf80(__float80, __float80);
       extern __float80 fmaf80(__float80, __float80, __float80);
#    endif /* __IA64__ */
#  else /* not _PROTOTYPES */
     extern double copysign();
     extern double log2();
     extern double lgamma_r();
     extern double exp2();
     extern double fdim();
     extern double fmax();
     extern double fmin();
     extern double nan();
     extern double scalbn();
     extern double nearbyint();
     extern double round();
     extern double trunc();
     extern double remquo();
     extern long   lrint();
     extern long   lround();
     extern double cosd();
     extern double sind();
     extern double tand();
#    ifndef _PA_RISC
       extern double    exp10();
       extern double    fma();
       extern double    scalbln();
       extern double    tgamma();
#    endif
     extern double acosd();
     extern double asind();
     extern double atand();
     extern double atan2d();
#  endif /* _PROTOTYPES */

#endif /* _INCLUDE_HPUX_SOURCE */


/******** INTERNAL INTERFACE used in macro definitions ********/

#if defined(__cplusplus) && !defined(_DISALLOW_MASKING_MACROS)
#  define _DISALLOW_MASKING_MACROS
#endif

#if defined(__IA64__) && (defined(__STDC__) || defined(__cplusplus))
#  define _SUPPORT_F80
#endif

#ifdef _PROTOTYPES 
   extern const double _DINFINITY;
#else
   extern double _DINFINITY;
#endif

#ifdef _INCLUDE_HPUX_SOURCE

#  define _IS64(x) (sizeof(x)==sizeof(double))
#  define _IS32(x) (sizeof(x)==sizeof(float))
#  ifdef _SUPPORT_F80
#    define _IS128(x) (sizeof(x)==sizeof(__float80))
#  endif
#  ifndef _DISALLOW_MASKING_MACROS
#    define nan(x) ((double)NAN)
#  endif /* DISALLOW_MASKING_MACROS */
#  ifdef _PROTOTYPES
     extern const float _SINFINITY;
     extern const float _SQNAN;
     extern int _Islessgreater(double, double);
     extern int _Islessgreaterf(float, float);
#    ifdef _SUPPORT_F80
       extern int _Islessgreaterf80(__float80, __float80);
#    endif
#    if !defined(__IA64__) || !defined(_INLINE_ASM)
#      ifdef _SUPPORT_F80
#        define _ISNAN(x)          (_IS32(x)?_Isnanf(x):_IS64(x)?(isnan)(x):_Isnanf80(x))
#        define _ISINF(x)          (_IS32(x)?_Isinff(x):_IS64(x)?_Isinf(x):_Isinff80(x))
#        define _SIGNBIT(x)        (_IS32(x)?_Signbitf(x):_IS64(x)?_Signbit(x):_Signbitf80(x))
#        define _ISFINITE(x)       (_IS32(x)?_Isfinitef(x):_IS64(x)?_Isfinite(x):_Isfinitef80(x))
#        define _ISNORMAL(x)       (_IS32(x)?_Isnormalf(x):_IS64(x)?_Isnormal(x):_Isnormalf80(x))
#        define _ISUNORDERED(x,y)  ((_IS128(x)||_IS128(y))?_Isunorderedf80(x,y):\
           (_IS64(x)||_IS64(y))?_Isunordered(x,y):_Isunorderedf(x,y))
#        define _ISLESS(x,y)  ((_IS128(x)||_IS128(y))?_Islessf80(x,y):\
           (_IS64(x)||_IS64(y))?_Isless(x,y):_Islessf(x,y))
#        define _ISLESSEQUAL(x,y)  ((_IS128(x)||_IS128(y))?_Islessequalf80(x,y):\
           (_IS64(x)||_IS64(y))?_Islessequal(x,y):_Islessequalf(x,y))
#        define _ISGREATER(x,y)  ((_IS128(x)||_IS128(y))?_Isgreaterf80(x,y):\
           (_IS64(x)||_IS64(y))?_Isgreater(x,y):_Isgreaterf(x,y))
#        define _ISGREATEREQUAL(x,y)  ((_IS128(x)||_IS128(y))?_Isgreaterequalf80(x,y):\
           (_IS64(x)||_IS64(y))?_Isgreaterequal(x,y):_Isgreaterequalf(x,y))
         extern int _Signbitf80(__float80);
         extern int _Isnanf80(__float80);
         extern int _Isfinitef80(__float80);
         extern int _Isinff80(__float80);
         extern int _Isnormalf80(__float80);
         extern int _Isunorderedf80(__float80, __float80);
         extern int _Islessf80(__float80, __float80);
         extern int _Islessequalf80(__float80, __float80);
         extern int _Isgreaterf80(__float80, __float80);
         extern int _Isgreaterequalf80(__float80, __float80);
#      else
#        define _ISNAN(x)          (_IS32(x)?_Isnanf(x):(isnan)(x))
#        define _ISINF(x)          (_IS32(x)?_Isinff(x):_Isinf(x))
#        define _SIGNBIT(x)        (_IS32(x)?_Signbitf(x):_Signbit(x))
#        define _ISFINITE(x)       (_IS32(x)?_Isfinitef(x):_Isfinite(x))
#        define _ISNORMAL(x)       (_IS32(x)?_Isnormalf(x):_Isnormal(x))
#        define _ISUNORDERED(x,y)  (_IS32(x)&&_IS32(y)?_Isunorderedf(x,y):_Isunordered(x,y))
#        define _ISLESS(x,y)       (_IS32(x)&&_IS32(y)?_Islessf(x,y):_Isless(x,y)) 
#        define _ISLESSEQUAL(x,y)  (_IS32(x)&&_IS32(y)?_Islessequalf(x,y):_Islessequal(x,y))
#        define _ISGREATER(x,y)    (_IS32(x)&&_IS32(y)?_Isgreaterf(x,y):_Isgreater(x,y))
#        define _ISGREATEREQUAL(x,y) (_IS32(x)&&_IS32(y)?_Isgreaterequalf(x,y):_Isgreaterequal(x,y))
#        define _ISLESSGREATER(x,y)  (_IS32(x)&&_IS32(y)?_Islessgreaterf(x,y):_Islessgreater(x,y))
#      endif /* _SUPPORT_F80 */
       extern int _Signbit(double);
       extern int _Signbitf(float);
       extern int _Isnanf(float);
       extern int _Isfinite(double);
       extern int _Isfinitef(float);
       extern int _Isinf(double);
       extern int _Isinff(float);
       extern int _Isnormal(double);
       extern int _Isnormalf(float);
       extern int _Isunordered(double, double);
       extern int _Isunorderedf(float, float);
       extern int _Isless(double, double);
       extern int _Islessf(float, float);
       extern int _Islessequal(double, double);
       extern int _Islessequalf(float, float);
       extern int _Isgreater(double, double);
       extern int _Isgreaterf(float, float);
       extern int _Isgreaterequal(double, double);
       extern int _Isgreaterequalf(float, float);
#    endif /* !defined(__IA64__) || !defined(_INLINE_ASM) */

#    ifdef _PA_RISC
#      define _FPCLASSIFY(x)     (_IS32(x)?_Fpclassifyf(x)>>1:_Fpclassify(x)>>1)
       extern int _Fpclassify(double);
       extern int _Fpclassifyf(float);
#      ifndef _DISALLOW_MASKING_MACROS
#        define fabsf(x) ((float)fabs((double)(float)(x)))
#      endif
#    else /* __IA64__ */ 
#      ifdef _INLINE_ASM /* implies not __cplusplus */
#        include "math_ia64_internal.h"
#      endif
#      ifdef _SUPPORT_F80
#        define _FPCLASSIFY(x)     (_IS32(x)?_Fpclassf(x):_IS64(x)?_Fpclass(x):_Fpclassf80(x))
#        define _ISLESSGREATER(x,y) ((_IS128(x)||_IS128(y))?_Islessgreaterf80(x,y):\
           (_IS64(x)||_IS64(y))?_Islessgreater(x,y):_Islessgreaterf(x,y))
         extern int _Fpclassf80(__float80);
#      else /* !defined(_SUPPORT_F80) */
#        define _FPCLASSIFY(x)     (_IS32(x)?_Fpclassf(x):_Fpclass(x))
#      endif /* _SUPPORT_F80 */
       extern int _Fpclass(double);
       extern int _Fpclassf(float);
#      ifndef _DISALLOW_MASKING_MACROS
#        define nanf(x) ((float)NAN)
#        define nanf80(x) ((__float80)NAN)
#      endif
#    endif /* _PA_RISC */
#  else /* NO PROTOTYPES */
     extern float _SINFINITY;
     extern float _SQNAN;
#    define _ISNAN(x)		((isnan)((double)(x)))
#    define _ISINF(x)		(_Isinf((double)(x)))
#    define _SIGNBIT(x)		(_Signbit((double)(x)))
#    define _ISFINITE(x)	(_Isfinite((double)(x)))
#    define _ISNORMAL(x)	(_IS32(x)?_Isnormalfd((double)(x)):_Isnormal((double)(x)))
#    define _ISUNORDERED(x,y) 	(_Isunordered((double)(x),(double)(y)))
#    define _ISLESS(x,y) 	(_Isless((double)(x),(double)(y)))
#    define _ISLESSEQUAL(x,y) 	(_Islessequal((double)(x),(double)(y)))
#    define _ISGREATER(x,y) 	(_Isgreater((double)(x),(double)(y)))
#    define _ISGREATEREQUAL(x,y) (_Isgreaterequal((double)(x),(double)(y)))
#    define _ISLESSGREATER(x,y)  (_Islessgreater((double)(x),(double)(y)))
#    ifdef _PA_RISC
#      define _FPCLASSIFY(x) (_IS32(x)?_Fpclassifyfd((double)(x))>>1:_Fpclassify((double)(x))>>1)
       extern int _Fpclassify();
       extern int _Fpclassifyfd();
#    else
#      define _FPCLASSIFY(x) (_IS32(x)?_Fpclassfd((double)(x)):_Fpclass((double)(x)))
       extern int _Fpclass();
       extern int _Fpclassfd();
#    endif
     extern int _Signbit();
     extern int _Isfinite();
     extern int _Isinf();
     extern int _Isnormal();
     extern int _Isnormalfd();
     extern int _Isunordered();
     extern int _Isless();
     extern int _Islessequal();
     extern int _Isgreater();
     extern int _Isgreaterequal();
     extern int _Islessgreater();
#  endif /* _PROTOTYPES */

#endif /* _INCLUDE_HPUX_SOURCE */

#ifdef __cplusplus
}
#endif


/******** PRE STANDARD C++ ****************************/

#if defined(__cplusplus) && (__cplusplus < 199707)
   inline int sqr(int x) {return(x*x);}
   inline double sqr(double x) {return(x*x);}

#  ifndef _STDLIB_INCLUDED
   inline int abs(int d) { return (d>0)?d:-d; }
#  endif /* _STDLIB_INCLUDED */

   inline double abs(double d) { return fabs(d); }
   inline double pow(double d,int expon) {
     return pow(d, (double)expon);
   }
#endif

#endif /* _MATH_INCLUDED */



More information about the Gcc-patches mailing list