Print this page
10882 math headers should stop supporting K&R C

*** 34,50 **** #ifdef __cplusplus extern "C" { #endif ! #ifndef __P ! #ifdef __STDC__ ! #define __P(p) p ! #else ! #define __P(p) () ! #endif ! #endif /* !defined(__P) */ #if defined(_STDC_C99) || _XOPEN_SOURCE - 0 >= 600 || defined(__C99FEATURES__) #if defined(__GNUC__) #undef HUGE_VAL #define HUGE_VAL (__builtin_huge_val()) --- 34,53 ---- #ifdef __cplusplus extern "C" { #endif ! #undef FP_ZERO ! #define FP_ZERO 0 ! #undef FP_SUBNORMAL ! #define FP_SUBNORMAL 1 ! #undef FP_NORMAL ! #define FP_NORMAL 2 ! #undef FP_INFINITE ! #define FP_INFINITE 3 ! #undef FP_NAN ! #define FP_NAN 4 #if defined(_STDC_C99) || _XOPEN_SOURCE - 0 >= 600 || defined(__C99FEATURES__) #if defined(__GNUC__) #undef HUGE_VAL #define HUGE_VAL (__builtin_huge_val())
*** 63,81 **** #undef isnan #undef isinf #if __GNUC__ >= 4 #define isnan(x) __builtin_isnan(x) #define isinf(x) __builtin_isinf(x) ! #else #define isnan(x) __extension__( \ { __typeof(x) __x_n = (x); \ __builtin_isunordered(__x_n, __x_n); }) #define isinf(x) __extension__( \ { __typeof(x) __x_i = (x); \ __x_i == (__typeof(__x_i)) INFINITY || \ __x_i == (__typeof(__x_i)) (-INFINITY); }) - #endif #undef isfinite #define isfinite(x) __extension__( \ { __typeof(x) __x_f = (x); \ !isnan(__x_f) && !isinf(__x_f); }) #undef isnormal --- 66,88 ---- #undef isnan #undef isinf #if __GNUC__ >= 4 #define isnan(x) __builtin_isnan(x) #define isinf(x) __builtin_isinf(x) ! #define fpclassify(x) __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, \ ! FP_SUBNORMAL, FP_ZERO, x) ! #define isfinite(x) __builtin_isfinite(x) ! #define isnormal(x) __builtin_isnormal(x) ! #define signbit(x) __builtin_signbit(x) ! #else /* __GNUC__ >= 4 */ #define isnan(x) __extension__( \ { __typeof(x) __x_n = (x); \ __builtin_isunordered(__x_n, __x_n); }) #define isinf(x) __extension__( \ { __typeof(x) __x_i = (x); \ __x_i == (__typeof(__x_i)) INFINITY || \ __x_i == (__typeof(__x_i)) (-INFINITY); }) #undef isfinite #define isfinite(x) __extension__( \ { __typeof(x) __x_f = (x); \ !isnan(__x_f) && !isinf(__x_f); }) #undef isnormal
*** 96,115 **** FP_SUBNORMAL; }) #undef signbit #if defined(_BIG_ENDIAN) #define signbit(x) __extension__( \ { __typeof(x) __x_s = (x); \ ! (int) (*(unsigned *) &__x_s >> 31); }) #elif defined(_LITTLE_ENDIAN) #define signbit(x) __extension__( \ { __typeof(x) __x_s = (x); \ (sizeof (__x_s) == sizeof (float) ? \ ! (int) (*(unsigned *) &__x_s >> 31) : \ sizeof (__x_s) == sizeof (double) ? \ ! (int) (((unsigned *) &__x_s)[1] >> 31) : \ ! (int) (((unsigned short *) &__x_s)[4] >> 15)); }) ! #endif /* * C99 7.12.14 comparison macros */ #undef isgreater --- 103,123 ---- FP_SUBNORMAL; }) #undef signbit #if defined(_BIG_ENDIAN) #define signbit(x) __extension__( \ { __typeof(x) __x_s = (x); \ ! (int)(*(unsigned *)&__x_s >> 31); }) #elif defined(_LITTLE_ENDIAN) #define signbit(x) __extension__( \ { __typeof(x) __x_s = (x); \ (sizeof (__x_s) == sizeof (float) ? \ ! (int)(*(unsigned *)&__x_s >> 31) : \ sizeof (__x_s) == sizeof (double) ? \ ! (int)(((unsigned *)&__x_s)[1] >> 31) : \ ! (int)(((unsigned short *)&__x_s)[4] >> 15)); }) ! #endif /* defined(_BIG_ENDIAN) */ ! #endif /* __GNUC__ >= 4 */ /* * C99 7.12.14 comparison macros */ #undef isgreater
*** 188,208 **** #elif defined(__i386) typedef long double float_t; typedef long double double_t; #endif - #undef FP_ZERO - #define FP_ZERO 0 - #undef FP_SUBNORMAL - #define FP_SUBNORMAL 1 - #undef FP_NORMAL - #define FP_NORMAL 2 - #undef FP_INFINITE - #define FP_INFINITE 3 - #undef FP_NAN - #define FP_NAN 4 - #undef FP_ILOGB0 #define FP_ILOGB0 (-2147483647) #undef FP_ILOGBNAN #define FP_ILOGBNAN 2147483647 --- 196,205 ----
*** 211,402 **** #undef MATH_ERREXCEPT #define MATH_ERREXCEPT 2 #undef math_errhandling #define math_errhandling MATH_ERREXCEPT ! extern double acosh __P((double)); ! extern double asinh __P((double)); ! extern double atanh __P((double)); ! ! extern double exp2 __P((double)); ! extern double expm1 __P((double)); ! extern int ilogb __P((double)); ! extern double log1p __P((double)); ! extern double log2 __P((double)); ! extern double logb __P((double)); ! extern double scalbn __P((double, int)); ! extern double scalbln __P((double, long int)); ! ! extern double cbrt __P((double)); ! extern double hypot __P((double, double)); ! ! extern double erf __P((double)); ! extern double erfc __P((double)); ! extern double lgamma __P((double)); ! extern double tgamma __P((double)); ! ! extern double nearbyint __P((double)); ! extern double rint __P((double)); ! extern long int lrint __P((double)); ! extern double round __P((double)); ! extern long int lround __P((double)); ! extern double trunc __P((double)); ! ! extern double remainder __P((double, double)); ! extern double remquo __P((double, double, int *)); ! ! extern double copysign __P((double, double)); ! extern double nan __P((const char *)); ! extern double nextafter __P((double, double)); ! extern double nexttoward __P((double, long double)); ! ! extern double fdim __P((double, double)); ! extern double fmax __P((double, double)); ! extern double fmin __P((double, double)); ! ! extern double fma __P((double, double, double)); ! ! extern float acosf __P((float)); ! extern float asinf __P((float)); ! extern float atanf __P((float)); ! extern float atan2f __P((float, float)); ! extern float cosf __P((float)); ! extern float sinf __P((float)); ! extern float tanf __P((float)); ! ! extern float acoshf __P((float)); ! extern float asinhf __P((float)); ! extern float atanhf __P((float)); ! extern float coshf __P((float)); ! extern float sinhf __P((float)); ! extern float tanhf __P((float)); ! ! extern float expf __P((float)); ! extern float exp2f __P((float)); ! extern float expm1f __P((float)); ! extern float frexpf __P((float, int *)); ! extern int ilogbf __P((float)); ! extern float ldexpf __P((float, int)); ! extern float logf __P((float)); ! extern float log10f __P((float)); ! extern float log1pf __P((float)); ! extern float log2f __P((float)); ! extern float logbf __P((float)); ! extern float modff __P((float, float *)); ! extern float scalbnf __P((float, int)); ! extern float scalblnf __P((float, long int)); ! ! extern float cbrtf __P((float)); ! extern float fabsf __P((float)); ! extern float hypotf __P((float, float)); ! extern float powf __P((float, float)); ! extern float sqrtf __P((float)); ! ! extern float erff __P((float)); ! extern float erfcf __P((float)); ! extern float lgammaf __P((float)); ! extern float tgammaf __P((float)); ! ! extern float ceilf __P((float)); ! extern float floorf __P((float)); ! extern float nearbyintf __P((float)); ! extern float rintf __P((float)); ! extern long int lrintf __P((float)); ! extern float roundf __P((float)); ! extern long int lroundf __P((float)); ! extern float truncf __P((float)); ! ! extern float fmodf __P((float, float)); ! extern float remainderf __P((float, float)); ! extern float remquof __P((float, float, int *)); ! ! extern float copysignf __P((float, float)); ! extern float nanf __P((const char *)); ! extern float nextafterf __P((float, float)); ! extern float nexttowardf __P((float, long double)); ! ! extern float fdimf __P((float, float)); ! extern float fmaxf __P((float, float)); ! extern float fminf __P((float, float)); ! ! extern float fmaf __P((float, float, float)); ! ! extern long double acosl __P((long double)); ! extern long double asinl __P((long double)); ! extern long double atanl __P((long double)); ! extern long double atan2l __P((long double, long double)); ! extern long double cosl __P((long double)); ! extern long double sinl __P((long double)); ! extern long double tanl __P((long double)); ! ! extern long double acoshl __P((long double)); ! extern long double asinhl __P((long double)); ! extern long double atanhl __P((long double)); ! extern long double coshl __P((long double)); ! extern long double sinhl __P((long double)); ! extern long double tanhl __P((long double)); ! ! extern long double expl __P((long double)); ! extern long double exp2l __P((long double)); ! extern long double expm1l __P((long double)); ! extern long double frexpl __P((long double, int *)); ! extern int ilogbl __P((long double)); ! extern long double ldexpl __P((long double, int)); ! extern long double logl __P((long double)); ! extern long double log10l __P((long double)); ! extern long double log1pl __P((long double)); ! extern long double log2l __P((long double)); ! extern long double logbl __P((long double)); ! extern long double modfl __P((long double, long double *)); ! extern long double scalbnl __P((long double, int)); ! extern long double scalblnl __P((long double, long int)); ! ! extern long double cbrtl __P((long double)); ! extern long double fabsl __P((long double)); ! extern long double hypotl __P((long double, long double)); ! extern long double powl __P((long double, long double)); ! extern long double sqrtl __P((long double)); ! ! extern long double erfl __P((long double)); ! extern long double erfcl __P((long double)); ! extern long double lgammal __P((long double)); ! extern long double tgammal __P((long double)); ! ! extern long double ceill __P((long double)); ! extern long double floorl __P((long double)); ! extern long double nearbyintl __P((long double)); ! extern long double rintl __P((long double)); ! extern long int lrintl __P((long double)); ! extern long double roundl __P((long double)); ! extern long int lroundl __P((long double)); ! extern long double truncl __P((long double)); ! ! extern long double fmodl __P((long double, long double)); ! extern long double remainderl __P((long double, long double)); ! extern long double remquol __P((long double, long double, int *)); ! ! extern long double copysignl __P((long double, long double)); ! extern long double nanl __P((const char *)); ! extern long double nextafterl __P((long double, long double)); ! extern long double nexttowardl __P((long double, long double)); ! ! extern long double fdiml __P((long double, long double)); ! extern long double fmaxl __P((long double, long double)); ! extern long double fminl __P((long double, long double)); ! extern long double fmal __P((long double, long double, long double)); #if !defined(_STRICT_STDC) && !defined(_NO_LONGLONG) || defined(_STDC_C99) || \ defined(__C99FEATURES__) ! extern long long int llrint __P((double)); ! extern long long int llround __P((double)); ! extern long long int llrintf __P((float)); ! extern long long int llroundf __P((float)); ! extern long long int llrintl __P((long double)); ! extern long long int llroundl __P((long double)); #endif #if !defined(__cplusplus) #pragma does_not_read_global_data(asinh, exp2, expm1) #pragma does_not_read_global_data(ilogb, log2) --- 208,399 ---- #undef MATH_ERREXCEPT #define MATH_ERREXCEPT 2 #undef math_errhandling #define math_errhandling MATH_ERREXCEPT ! extern double acosh(double); ! extern double asinh(double); ! extern double atanh(double); ! ! extern double exp2(double); ! extern double expm1(double); ! extern int ilogb(double); ! extern double log1p(double); ! extern double log2(double); ! extern double logb(double); ! extern double scalbn(double, int); ! extern double scalbln(double, long int); ! ! extern double cbrt(double); ! extern double hypot(double, double); ! ! extern double erf(double); ! extern double erfc(double); ! extern double lgamma(double); ! extern double tgamma(double); ! ! extern double nearbyint(double); ! extern double rint(double); ! extern long int lrint(double); ! extern double round(double); ! extern long int lround(double); ! extern double trunc(double); ! ! extern double remainder(double, double); ! extern double remquo(double, double, int *); ! ! extern double copysign(double, double); ! extern double nan(const char *); ! extern double nextafter(double, double); ! extern double nexttoward(double, long double); ! ! extern double fdim(double, double); ! extern double fmax(double, double); ! extern double fmin(double, double); ! ! extern double fma(double, 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 acoshf(float); ! extern float asinhf(float); ! extern float atanhf(float); ! extern float coshf(float); ! extern float sinhf(float); ! extern float tanhf(float); ! ! extern float expf(float); ! extern float exp2f(float); ! extern float expm1f(float); ! extern float frexpf(float, int *); ! extern int ilogbf(float); ! extern float ldexpf(float, int); ! extern float logf(float); ! extern float log10f(float); ! extern float log1pf(float); ! extern float log2f(float); ! extern float logbf(float); ! extern float modff(float, float *); ! extern float scalbnf(float, int); ! extern float scalblnf(float, long int); ! ! extern float cbrtf(float); ! extern float fabsf(float); ! extern float hypotf(float, float); ! extern float powf(float, float); ! extern float sqrtf(float); ! ! extern float erff(float); ! extern float erfcf(float); ! extern float lgammaf(float); ! extern float tgammaf(float); ! ! extern float ceilf(float); ! extern float floorf(float); ! extern float nearbyintf(float); ! extern float rintf(float); ! extern long int lrintf(float); ! extern float roundf(float); ! extern long int lroundf(float); ! extern float truncf(float); ! ! extern float fmodf(float, float); ! extern float remainderf(float, float); ! extern float remquof(float, float, int *); ! ! extern float copysignf(float, float); ! extern float nanf(const char *); ! extern float nextafterf(float, float); ! extern float nexttowardf(float, long double); ! ! extern float fdimf(float, float); ! extern float fmaxf(float, float); ! extern float fminf(float, float); ! ! extern float fmaf(float, float, float); ! ! extern long double acosl(long double); ! extern long double asinl(long double); ! extern long double atanl(long double); ! extern long double atan2l(long double, long double); ! extern long double cosl(long double); ! extern long double sinl(long double); ! extern long double tanl(long double); ! ! extern long double acoshl(long double); ! extern long double asinhl(long double); ! extern long double atanhl(long double); ! extern long double coshl(long double); ! extern long double sinhl(long double); ! extern long double tanhl(long double); ! ! extern long double expl(long double); ! extern long double exp2l(long double); ! extern long double expm1l(long double); ! extern long double frexpl(long double, int *); ! extern int ilogbl(long double); ! extern long double ldexpl(long double, int); ! extern long double logl(long double); ! extern long double log10l(long double); ! extern long double log1pl(long double); ! extern long double log2l(long double); ! extern long double logbl(long double); ! extern long double modfl(long double, long double *); ! extern long double scalbnl(long double, int); ! extern long double scalblnl(long double, long int); ! ! extern long double cbrtl(long double); ! extern long double fabsl(long double); ! extern long double hypotl(long double, long double); ! extern long double powl(long double, long double); ! extern long double sqrtl(long double); ! ! extern long double erfl(long double); ! extern long double erfcl(long double); ! extern long double lgammal(long double); ! extern long double tgammal(long double); ! ! extern long double ceill(long double); ! extern long double floorl(long double); ! extern long double nearbyintl(long double); ! extern long double rintl(long double); ! extern long int lrintl(long double); ! extern long double roundl(long double); ! extern long int lroundl(long double); ! extern long double truncl(long double); ! ! extern long double fmodl(long double, long double); ! extern long double remainderl(long double, long double); ! extern long double remquol(long double, long double, int *); ! ! extern long double copysignl(long double, long double); ! extern long double nanl(const char *); ! extern long double nextafterl(long double, long double); ! extern long double nexttowardl(long double, long double); ! ! extern long double fdiml(long double, long double); ! extern long double fmaxl(long double, long double); ! extern long double fminl(long double, long double); ! extern long double fmal(long double, long double, long double); #if !defined(_STRICT_STDC) && !defined(_NO_LONGLONG) || defined(_STDC_C99) || \ defined(__C99FEATURES__) ! extern long long int llrint(double); ! extern long long int llround(double); ! extern long long int llrintf(float); ! extern long long int llroundf(float); ! extern long long int llrintl(long double); ! extern long long int llroundl(long double); #endif #if !defined(__cplusplus) #pragma does_not_read_global_data(asinh, exp2, expm1) #pragma does_not_read_global_data(ilogb, log2)