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

Split Close
Expand all
Collapse all
          --- old/usr/src/head/iso/math_c99.h
          +++ new/usr/src/head/iso/math_c99.h
↓ open down ↓ 28 lines elided ↑ open up ↑
  29   29  #ifndef _ISO_MATH_C99_H
  30   30  #define _ISO_MATH_C99_H
  31   31  
  32   32  #include <sys/isa_defs.h>
  33   33  #include <sys/feature_tests.h>
  34   34  
  35   35  #ifdef __cplusplus
  36   36  extern "C" {
  37   37  #endif
  38   38  
  39      -#ifndef __P
  40      -#ifdef __STDC__
  41      -#define __P(p)  p
  42      -#else
  43      -#define __P(p)  ()
  44      -#endif
  45      -#endif  /* !defined(__P) */
       39 +#undef  FP_ZERO
       40 +#define FP_ZERO         0
       41 +#undef  FP_SUBNORMAL
       42 +#define FP_SUBNORMAL    1
       43 +#undef  FP_NORMAL
       44 +#define FP_NORMAL       2
       45 +#undef  FP_INFINITE
       46 +#define FP_INFINITE     3
       47 +#undef  FP_NAN
       48 +#define FP_NAN          4
  46   49  
  47   50  #if defined(_STDC_C99) || _XOPEN_SOURCE - 0 >= 600 || defined(__C99FEATURES__)
  48   51  #if defined(__GNUC__)
  49   52  #undef  HUGE_VAL
  50   53  #define HUGE_VAL        (__builtin_huge_val())
  51   54  #undef  HUGE_VALF
  52   55  #define HUGE_VALF       (__builtin_huge_valf())
  53   56  #undef  HUGE_VALL
  54   57  #define HUGE_VALL       (__builtin_huge_vall())
  55   58  #undef  INFINITY
↓ open down ↓ 2 lines elided ↑ open up ↑
  58   61  #define NAN             (__builtin_nanf(""))
  59   62  
  60   63  /*
  61   64   * C99 7.12.3 classification macros
  62   65   */
  63   66  #undef  isnan
  64   67  #undef  isinf
  65   68  #if __GNUC__ >= 4
  66   69  #define isnan(x)        __builtin_isnan(x)
  67   70  #define isinf(x)        __builtin_isinf(x)
  68      -#else
       71 +#define fpclassify(x)   __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, \
       72 +    FP_SUBNORMAL, FP_ZERO, x)
       73 +#define isfinite(x)     __builtin_isfinite(x)
       74 +#define isnormal(x)     __builtin_isnormal(x)
       75 +#define signbit(x)      __builtin_signbit(x)
       76 +#else  /* __GNUC__ >= 4 */
  69   77  #define isnan(x)        __extension__( \
  70   78                          { __typeof(x) __x_n = (x); \
  71   79                          __builtin_isunordered(__x_n, __x_n); })
  72   80  #define isinf(x)        __extension__( \
  73   81                          { __typeof(x) __x_i = (x); \
  74   82                          __x_i == (__typeof(__x_i)) INFINITY || \
  75   83                          __x_i == (__typeof(__x_i)) (-INFINITY); })
  76      -#endif
  77   84  #undef  isfinite
  78   85  #define isfinite(x)     __extension__( \
  79   86                          { __typeof(x) __x_f = (x); \
  80   87                          !isnan(__x_f) && !isinf(__x_f); })
  81   88  #undef  isnormal
  82   89  #define isnormal(x)     __extension__( \
  83   90                          { __typeof(x) __x_r = (x); isfinite(__x_r) && \
  84   91                          (sizeof (__x_r) == sizeof (float) ? \
  85   92                          __builtin_fabsf(__x_r) >= __FLT_MIN__ : \
  86   93                          sizeof (__x_r) == sizeof (double) ? \
↓ open down ↓ 4 lines elided ↑ open up ↑
  91   98                          { __typeof(x) __x_c = (x); \
  92   99                          isnan(__x_c) ? FP_NAN : \
  93  100                          isinf(__x_c) ? FP_INFINITE : \
  94  101                          isnormal(__x_c) ? FP_NORMAL : \
  95  102                          __x_c == (__typeof(__x_c)) 0 ? FP_ZERO : \
  96  103                          FP_SUBNORMAL; })
  97  104  #undef  signbit
  98  105  #if defined(_BIG_ENDIAN)
  99  106  #define signbit(x)      __extension__( \
 100  107                          { __typeof(x) __x_s = (x); \
 101      -                        (int) (*(unsigned *) &__x_s >> 31); })
      108 +                        (int)(*(unsigned *)&__x_s >> 31); })
 102  109  #elif defined(_LITTLE_ENDIAN)
 103  110  #define signbit(x)      __extension__( \
 104  111                          { __typeof(x) __x_s = (x); \
 105  112                          (sizeof (__x_s) == sizeof (float) ? \
 106      -                        (int) (*(unsigned *) &__x_s >> 31) : \
      113 +                        (int)(*(unsigned *)&__x_s >> 31) : \
 107  114                          sizeof (__x_s) == sizeof (double) ? \
 108      -                        (int) (((unsigned *) &__x_s)[1] >> 31) : \
 109      -                        (int) (((unsigned short *) &__x_s)[4] >> 15)); })
 110      -#endif
      115 +                        (int)(((unsigned *)&__x_s)[1] >> 31) : \
      116 +                        (int)(((unsigned short *)&__x_s)[4] >> 15)); })
      117 +#endif  /* defined(_BIG_ENDIAN) */
      118 +#endif  /* __GNUC__ >= 4 */
 111  119  
 112  120  /*
 113  121   * C99 7.12.14 comparison macros
 114  122   */
 115  123  #undef  isgreater
 116  124  #define isgreater(x, y)         __builtin_isgreater(x, y)
 117  125  #undef  isgreaterequal
 118  126  #define isgreaterequal(x, y)    __builtin_isgreaterequal(x, y)
 119  127  #undef  isless
 120  128  #define isless(x, y)            __builtin_isless(x, y)
↓ open down ↓ 62 lines elided ↑ open up ↑
 183  191  typedef long double float_t;
 184  192  typedef long double double_t;
 185  193  #elif defined(__sparc) || defined(__amd64)
 186  194  typedef float float_t;
 187  195  typedef double double_t;
 188  196  #elif defined(__i386)
 189  197  typedef long double float_t;
 190  198  typedef long double double_t;
 191  199  #endif
 192  200  
 193      -#undef  FP_ZERO
 194      -#define FP_ZERO         0
 195      -#undef  FP_SUBNORMAL
 196      -#define FP_SUBNORMAL    1
 197      -#undef  FP_NORMAL
 198      -#define FP_NORMAL       2
 199      -#undef  FP_INFINITE
 200      -#define FP_INFINITE     3
 201      -#undef  FP_NAN
 202      -#define FP_NAN          4
 203      -
 204  201  #undef  FP_ILOGB0
 205  202  #define FP_ILOGB0       (-2147483647)
 206  203  #undef  FP_ILOGBNAN
 207  204  #define FP_ILOGBNAN     2147483647
 208  205  
 209  206  #undef  MATH_ERRNO
 210  207  #define MATH_ERRNO      1
 211  208  #undef  MATH_ERREXCEPT
 212  209  #define MATH_ERREXCEPT  2
 213  210  #undef  math_errhandling
 214  211  #define math_errhandling        MATH_ERREXCEPT
 215  212  
 216      -extern double acosh __P((double));
 217      -extern double asinh __P((double));
 218      -extern double atanh __P((double));
 219      -
 220      -extern double exp2 __P((double));
 221      -extern double expm1 __P((double));
 222      -extern int ilogb __P((double));
 223      -extern double log1p __P((double));
 224      -extern double log2 __P((double));
 225      -extern double logb __P((double));
 226      -extern double scalbn __P((double, int));
 227      -extern double scalbln __P((double, long int));
 228      -
 229      -extern double cbrt __P((double));
 230      -extern double hypot __P((double, double));
 231      -
 232      -extern double erf __P((double));
 233      -extern double erfc __P((double));
 234      -extern double lgamma __P((double));
 235      -extern double tgamma __P((double));
 236      -
 237      -extern double nearbyint __P((double));
 238      -extern double rint __P((double));
 239      -extern long int lrint __P((double));
 240      -extern double round __P((double));
 241      -extern long int lround __P((double));
 242      -extern double trunc __P((double));
 243      -
 244      -extern double remainder __P((double, double));
 245      -extern double remquo __P((double, double, int *));
 246      -
 247      -extern double copysign __P((double, double));
 248      -extern double nan __P((const char *));
 249      -extern double nextafter __P((double, double));
 250      -extern double nexttoward __P((double, long double));
 251      -
 252      -extern double fdim __P((double, double));
 253      -extern double fmax __P((double, double));
 254      -extern double fmin __P((double, double));
 255      -
 256      -extern double fma __P((double, double, double));
 257      -
 258      -extern float acosf __P((float));
 259      -extern float asinf __P((float));
 260      -extern float atanf __P((float));
 261      -extern float atan2f __P((float, float));
 262      -extern float cosf __P((float));
 263      -extern float sinf __P((float));
 264      -extern float tanf __P((float));
 265      -
 266      -extern float acoshf __P((float));
 267      -extern float asinhf __P((float));
 268      -extern float atanhf __P((float));
 269      -extern float coshf __P((float));
 270      -extern float sinhf __P((float));
 271      -extern float tanhf __P((float));
 272      -
 273      -extern float expf __P((float));
 274      -extern float exp2f __P((float));
 275      -extern float expm1f __P((float));
 276      -extern float frexpf __P((float, int *));
 277      -extern int ilogbf __P((float));
 278      -extern float ldexpf __P((float, int));
 279      -extern float logf __P((float));
 280      -extern float log10f __P((float));
 281      -extern float log1pf __P((float));
 282      -extern float log2f __P((float));
 283      -extern float logbf __P((float));
 284      -extern float modff __P((float, float *));
 285      -extern float scalbnf __P((float, int));
 286      -extern float scalblnf __P((float, long int));
 287      -
 288      -extern float cbrtf __P((float));
 289      -extern float fabsf __P((float));
 290      -extern float hypotf __P((float, float));
 291      -extern float powf __P((float, float));
 292      -extern float sqrtf __P((float));
 293      -
 294      -extern float erff __P((float));
 295      -extern float erfcf __P((float));
 296      -extern float lgammaf __P((float));
 297      -extern float tgammaf __P((float));
 298      -
 299      -extern float ceilf __P((float));
 300      -extern float floorf __P((float));
 301      -extern float nearbyintf __P((float));
 302      -extern float rintf __P((float));
 303      -extern long int lrintf __P((float));
 304      -extern float roundf __P((float));
 305      -extern long int lroundf __P((float));
 306      -extern float truncf __P((float));
 307      -
 308      -extern float fmodf __P((float, float));
 309      -extern float remainderf __P((float, float));
 310      -extern float remquof __P((float, float, int *));
 311      -
 312      -extern float copysignf __P((float, float));
 313      -extern float nanf __P((const char *));
 314      -extern float nextafterf __P((float, float));
 315      -extern float nexttowardf __P((float, long double));
 316      -
 317      -extern float fdimf __P((float, float));
 318      -extern float fmaxf __P((float, float));
 319      -extern float fminf __P((float, float));
 320      -
 321      -extern float fmaf __P((float, float, float));
 322      -
 323      -extern long double acosl __P((long double));
 324      -extern long double asinl __P((long double));
 325      -extern long double atanl __P((long double));
 326      -extern long double atan2l __P((long double, long double));
 327      -extern long double cosl __P((long double));
 328      -extern long double sinl __P((long double));
 329      -extern long double tanl __P((long double));
 330      -
 331      -extern long double acoshl __P((long double));
 332      -extern long double asinhl __P((long double));
 333      -extern long double atanhl __P((long double));
 334      -extern long double coshl __P((long double));
 335      -extern long double sinhl __P((long double));
 336      -extern long double tanhl __P((long double));
 337      -
 338      -extern long double expl __P((long double));
 339      -extern long double exp2l __P((long double));
 340      -extern long double expm1l __P((long double));
 341      -extern long double frexpl __P((long double, int *));
 342      -extern int ilogbl __P((long double));
 343      -extern long double ldexpl __P((long double, int));
 344      -extern long double logl __P((long double));
 345      -extern long double log10l __P((long double));
 346      -extern long double log1pl __P((long double));
 347      -extern long double log2l __P((long double));
 348      -extern long double logbl __P((long double));
 349      -extern long double modfl __P((long double, long double *));
 350      -extern long double scalbnl __P((long double, int));
 351      -extern long double scalblnl __P((long double, long int));
 352      -
 353      -extern long double cbrtl __P((long double));
 354      -extern long double fabsl __P((long double));
 355      -extern long double hypotl __P((long double, long double));
 356      -extern long double powl __P((long double, long double));
 357      -extern long double sqrtl __P((long double));
 358      -
 359      -extern long double erfl __P((long double));
 360      -extern long double erfcl __P((long double));
 361      -extern long double lgammal __P((long double));
 362      -extern long double tgammal __P((long double));
 363      -
 364      -extern long double ceill __P((long double));
 365      -extern long double floorl __P((long double));
 366      -extern long double nearbyintl __P((long double));
 367      -extern long double rintl __P((long double));
 368      -extern long int lrintl __P((long double));
 369      -extern long double roundl __P((long double));
 370      -extern long int lroundl __P((long double));
 371      -extern long double truncl __P((long double));
 372      -
 373      -extern long double fmodl __P((long double, long double));
 374      -extern long double remainderl __P((long double, long double));
 375      -extern long double remquol __P((long double, long double, int *));
 376      -
 377      -extern long double copysignl __P((long double, long double));
 378      -extern long double nanl __P((const char *));
 379      -extern long double nextafterl __P((long double, long double));
 380      -extern long double nexttowardl __P((long double, long double));
 381      -
 382      -extern long double fdiml __P((long double, long double));
 383      -extern long double fmaxl __P((long double, long double));
 384      -extern long double fminl __P((long double, long double));
      213 +extern double acosh(double);
      214 +extern double asinh(double);
      215 +extern double atanh(double);
      216 +
      217 +extern double exp2(double);
      218 +extern double expm1(double);
      219 +extern int ilogb(double);
      220 +extern double log1p(double);
      221 +extern double log2(double);
      222 +extern double logb(double);
      223 +extern double scalbn(double, int);
      224 +extern double scalbln(double, long int);
      225 +
      226 +extern double cbrt(double);
      227 +extern double hypot(double, double);
      228 +
      229 +extern double erf(double);
      230 +extern double erfc(double);
      231 +extern double lgamma(double);
      232 +extern double tgamma(double);
      233 +
      234 +extern double nearbyint(double);
      235 +extern double rint(double);
      236 +extern long int lrint(double);
      237 +extern double round(double);
      238 +extern long int lround(double);
      239 +extern double trunc(double);
      240 +
      241 +extern double remainder(double, double);
      242 +extern double remquo(double, double, int *);
      243 +
      244 +extern double copysign(double, double);
      245 +extern double nan(const char *);
      246 +extern double nextafter(double, double);
      247 +extern double nexttoward(double, long double);
      248 +
      249 +extern double fdim(double, double);
      250 +extern double fmax(double, double);
      251 +extern double fmin(double, double);
      252 +
      253 +extern double fma(double, double, double);
      254 +
      255 +extern float acosf(float);
      256 +extern float asinf(float);
      257 +extern float atanf(float);
      258 +extern float atan2f(float, float);
      259 +extern float cosf(float);
      260 +extern float sinf(float);
      261 +extern float tanf(float);
      262 +
      263 +extern float acoshf(float);
      264 +extern float asinhf(float);
      265 +extern float atanhf(float);
      266 +extern float coshf(float);
      267 +extern float sinhf(float);
      268 +extern float tanhf(float);
      269 +
      270 +extern float expf(float);
      271 +extern float exp2f(float);
      272 +extern float expm1f(float);
      273 +extern float frexpf(float, int *);
      274 +extern int ilogbf(float);
      275 +extern float ldexpf(float, int);
      276 +extern float logf(float);
      277 +extern float log10f(float);
      278 +extern float log1pf(float);
      279 +extern float log2f(float);
      280 +extern float logbf(float);
      281 +extern float modff(float, float *);
      282 +extern float scalbnf(float, int);
      283 +extern float scalblnf(float, long int);
      284 +
      285 +extern float cbrtf(float);
      286 +extern float fabsf(float);
      287 +extern float hypotf(float, float);
      288 +extern float powf(float, float);
      289 +extern float sqrtf(float);
      290 +
      291 +extern float erff(float);
      292 +extern float erfcf(float);
      293 +extern float lgammaf(float);
      294 +extern float tgammaf(float);
      295 +
      296 +extern float ceilf(float);
      297 +extern float floorf(float);
      298 +extern float nearbyintf(float);
      299 +extern float rintf(float);
      300 +extern long int lrintf(float);
      301 +extern float roundf(float);
      302 +extern long int lroundf(float);
      303 +extern float truncf(float);
      304 +
      305 +extern float fmodf(float, float);
      306 +extern float remainderf(float, float);
      307 +extern float remquof(float, float, int *);
      308 +
      309 +extern float copysignf(float, float);
      310 +extern float nanf(const char *);
      311 +extern float nextafterf(float, float);
      312 +extern float nexttowardf(float, long double);
      313 +
      314 +extern float fdimf(float, float);
      315 +extern float fmaxf(float, float);
      316 +extern float fminf(float, float);
      317 +
      318 +extern float fmaf(float, float, float);
      319 +
      320 +extern long double acosl(long double);
      321 +extern long double asinl(long double);
      322 +extern long double atanl(long double);
      323 +extern long double atan2l(long double, long double);
      324 +extern long double cosl(long double);
      325 +extern long double sinl(long double);
      326 +extern long double tanl(long double);
      327 +
      328 +extern long double acoshl(long double);
      329 +extern long double asinhl(long double);
      330 +extern long double atanhl(long double);
      331 +extern long double coshl(long double);
      332 +extern long double sinhl(long double);
      333 +extern long double tanhl(long double);
      334 +
      335 +extern long double expl(long double);
      336 +extern long double exp2l(long double);
      337 +extern long double expm1l(long double);
      338 +extern long double frexpl(long double, int *);
      339 +extern int ilogbl(long double);
      340 +extern long double ldexpl(long double, int);
      341 +extern long double logl(long double);
      342 +extern long double log10l(long double);
      343 +extern long double log1pl(long double);
      344 +extern long double log2l(long double);
      345 +extern long double logbl(long double);
      346 +extern long double modfl(long double, long double *);
      347 +extern long double scalbnl(long double, int);
      348 +extern long double scalblnl(long double, long int);
      349 +
      350 +extern long double cbrtl(long double);
      351 +extern long double fabsl(long double);
      352 +extern long double hypotl(long double, long double);
      353 +extern long double powl(long double, long double);
      354 +extern long double sqrtl(long double);
      355 +
      356 +extern long double erfl(long double);
      357 +extern long double erfcl(long double);
      358 +extern long double lgammal(long double);
      359 +extern long double tgammal(long double);
      360 +
      361 +extern long double ceill(long double);
      362 +extern long double floorl(long double);
      363 +extern long double nearbyintl(long double);
      364 +extern long double rintl(long double);
      365 +extern long int lrintl(long double);
      366 +extern long double roundl(long double);
      367 +extern long int lroundl(long double);
      368 +extern long double truncl(long double);
      369 +
      370 +extern long double fmodl(long double, long double);
      371 +extern long double remainderl(long double, long double);
      372 +extern long double remquol(long double, long double, int *);
      373 +
      374 +extern long double copysignl(long double, long double);
      375 +extern long double nanl(const char *);
      376 +extern long double nextafterl(long double, long double);
      377 +extern long double nexttowardl(long double, long double);
      378 +
      379 +extern long double fdiml(long double, long double);
      380 +extern long double fmaxl(long double, long double);
      381 +extern long double fminl(long double, long double);
 385  382  
 386      -extern long double fmal __P((long double, long double, long double));
      383 +extern long double fmal(long double, long double, long double);
 387  384  
 388  385  #if !defined(_STRICT_STDC) && !defined(_NO_LONGLONG) || defined(_STDC_C99) || \
 389  386          defined(__C99FEATURES__)
 390      -extern long long int llrint __P((double));
 391      -extern long long int llround __P((double));
      387 +extern long long int llrint(double);
      388 +extern long long int llround(double);
 392  389  
 393      -extern long long int llrintf __P((float));
 394      -extern long long int llroundf __P((float));
      390 +extern long long int llrintf(float);
      391 +extern long long int llroundf(float);
 395  392  
 396      -extern long long int llrintl __P((long double));
 397      -extern long long int llroundl __P((long double));
      393 +extern long long int llrintl(long double);
      394 +extern long long int llroundl(long double);
 398  395  #endif
 399  396  
 400  397  #if !defined(__cplusplus)
 401  398  #pragma does_not_read_global_data(asinh, exp2, expm1)
 402  399  #pragma does_not_read_global_data(ilogb, log2)
 403  400  #pragma does_not_read_global_data(scalbn, scalbln, cbrt)
 404  401  #pragma does_not_read_global_data(erf, erfc, tgamma)
 405  402  #pragma does_not_read_global_data(nearbyint, rint, lrint, round, lround, trunc)
 406  403  #pragma does_not_read_global_data(remquo)
 407  404  #pragma does_not_read_global_data(copysign, nan, nexttoward)
↓ open down ↓ 123 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX