125c28e83SPiotr Jasiukajtis /* 225c28e83SPiotr Jasiukajtis * CDDL HEADER START 325c28e83SPiotr Jasiukajtis * 425c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the 525c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License"). 625c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License. 725c28e83SPiotr Jasiukajtis * 825c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 925c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing. 1025c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions 1125c28e83SPiotr Jasiukajtis * and limitations under the License. 1225c28e83SPiotr Jasiukajtis * 1325c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each 1425c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1525c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the 1625c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying 1725c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner] 1825c28e83SPiotr Jasiukajtis * 1925c28e83SPiotr Jasiukajtis * CDDL HEADER END 2025c28e83SPiotr Jasiukajtis */ 2125c28e83SPiotr Jasiukajtis /* 2225c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 2325c28e83SPiotr Jasiukajtis */ 2425c28e83SPiotr Jasiukajtis /* 2525c28e83SPiotr Jasiukajtis * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 2625c28e83SPiotr Jasiukajtis * Use is subject to license terms. 2725c28e83SPiotr Jasiukajtis */ 2825c28e83SPiotr Jasiukajtis 2925c28e83SPiotr Jasiukajtis #ifndef _ISO_MATH_C99_H 3025c28e83SPiotr Jasiukajtis #define _ISO_MATH_C99_H 3125c28e83SPiotr Jasiukajtis 3225c28e83SPiotr Jasiukajtis #include <sys/isa_defs.h> 3325c28e83SPiotr Jasiukajtis #include <sys/feature_tests.h> 3425c28e83SPiotr Jasiukajtis 3525c28e83SPiotr Jasiukajtis #ifdef __cplusplus 3625c28e83SPiotr Jasiukajtis extern "C" { 3725c28e83SPiotr Jasiukajtis #endif 3825c28e83SPiotr Jasiukajtis 39f26364c9SRichard Lowe #undef FP_ZERO 40f26364c9SRichard Lowe #define FP_ZERO 0 41f26364c9SRichard Lowe #undef FP_SUBNORMAL 42f26364c9SRichard Lowe #define FP_SUBNORMAL 1 43f26364c9SRichard Lowe #undef FP_NORMAL 44f26364c9SRichard Lowe #define FP_NORMAL 2 45f26364c9SRichard Lowe #undef FP_INFINITE 46f26364c9SRichard Lowe #define FP_INFINITE 3 47f26364c9SRichard Lowe #undef FP_NAN 48f26364c9SRichard Lowe #define FP_NAN 4 49f26364c9SRichard Lowe 5025c28e83SPiotr Jasiukajtis #if defined(_STDC_C99) || _XOPEN_SOURCE - 0 >= 600 || defined(__C99FEATURES__) 5125c28e83SPiotr Jasiukajtis #if defined(__GNUC__) 5225c28e83SPiotr Jasiukajtis #undef HUGE_VAL 5325c28e83SPiotr Jasiukajtis #define HUGE_VAL (__builtin_huge_val()) 5425c28e83SPiotr Jasiukajtis #undef HUGE_VALF 5525c28e83SPiotr Jasiukajtis #define HUGE_VALF (__builtin_huge_valf()) 5625c28e83SPiotr Jasiukajtis #undef HUGE_VALL 5725c28e83SPiotr Jasiukajtis #define HUGE_VALL (__builtin_huge_vall()) 5825c28e83SPiotr Jasiukajtis #undef INFINITY 5925c28e83SPiotr Jasiukajtis #define INFINITY (__builtin_inff()) 6025c28e83SPiotr Jasiukajtis #undef NAN 6125c28e83SPiotr Jasiukajtis #define NAN (__builtin_nanf("")) 6225c28e83SPiotr Jasiukajtis 6325c28e83SPiotr Jasiukajtis /* 6425c28e83SPiotr Jasiukajtis * C99 7.12.3 classification macros 6525c28e83SPiotr Jasiukajtis */ 6625c28e83SPiotr Jasiukajtis #undef isnan 6725c28e83SPiotr Jasiukajtis #undef isinf 6825c28e83SPiotr Jasiukajtis #if __GNUC__ >= 4 69f26364c9SRichard Lowe #define fpclassify(x) __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, \ 70f26364c9SRichard Lowe FP_SUBNORMAL, FP_ZERO, x) 71*685c1a21SRichard Lowe #define isnan(x) __builtin_isnan(x) 72*685c1a21SRichard Lowe #define isinf(x) __builtin_isinf(x) 73*685c1a21SRichard Lowe #define isfinite(x) (__builtin_isfinite(x) != 0) 74*685c1a21SRichard Lowe #define isnormal(x) (__builtin_isnormal(x) != 0) 75*685c1a21SRichard Lowe #define signbit(x) (__builtin_signbit(x) != 0) 76f26364c9SRichard Lowe #else /* __GNUC__ >= 4 */ 7725c28e83SPiotr Jasiukajtis #define isnan(x) __extension__( \ 7825c28e83SPiotr Jasiukajtis { __typeof(x) __x_n = (x); \ 7925c28e83SPiotr Jasiukajtis __builtin_isunordered(__x_n, __x_n); }) 8025c28e83SPiotr Jasiukajtis #define isinf(x) __extension__( \ 8125c28e83SPiotr Jasiukajtis { __typeof(x) __x_i = (x); \ 8225c28e83SPiotr Jasiukajtis __x_i == (__typeof(__x_i)) INFINITY || \ 8325c28e83SPiotr Jasiukajtis __x_i == (__typeof(__x_i)) (-INFINITY); }) 8425c28e83SPiotr Jasiukajtis #undef isfinite 8525c28e83SPiotr Jasiukajtis #define isfinite(x) __extension__( \ 8625c28e83SPiotr Jasiukajtis { __typeof(x) __x_f = (x); \ 8725c28e83SPiotr Jasiukajtis !isnan(__x_f) && !isinf(__x_f); }) 8825c28e83SPiotr Jasiukajtis #undef isnormal 8925c28e83SPiotr Jasiukajtis #define isnormal(x) __extension__( \ 9025c28e83SPiotr Jasiukajtis { __typeof(x) __x_r = (x); isfinite(__x_r) && \ 9125c28e83SPiotr Jasiukajtis (sizeof (__x_r) == sizeof (float) ? \ 9225c28e83SPiotr Jasiukajtis __builtin_fabsf(__x_r) >= __FLT_MIN__ : \ 9325c28e83SPiotr Jasiukajtis sizeof (__x_r) == sizeof (double) ? \ 9425c28e83SPiotr Jasiukajtis __builtin_fabs(__x_r) >= __DBL_MIN__ : \ 9525c28e83SPiotr Jasiukajtis __builtin_fabsl(__x_r) >= __LDBL_MIN__); }) 9625c28e83SPiotr Jasiukajtis #undef fpclassify 9725c28e83SPiotr Jasiukajtis #define fpclassify(x) __extension__( \ 9825c28e83SPiotr Jasiukajtis { __typeof(x) __x_c = (x); \ 9925c28e83SPiotr Jasiukajtis isnan(__x_c) ? FP_NAN : \ 10025c28e83SPiotr Jasiukajtis isinf(__x_c) ? FP_INFINITE : \ 10125c28e83SPiotr Jasiukajtis isnormal(__x_c) ? FP_NORMAL : \ 10225c28e83SPiotr Jasiukajtis __x_c == (__typeof(__x_c)) 0 ? FP_ZERO : \ 10325c28e83SPiotr Jasiukajtis FP_SUBNORMAL; }) 10425c28e83SPiotr Jasiukajtis #undef signbit 10525c28e83SPiotr Jasiukajtis #if defined(_BIG_ENDIAN) 10625c28e83SPiotr Jasiukajtis #define signbit(x) __extension__( \ 10725c28e83SPiotr Jasiukajtis { __typeof(x) __x_s = (x); \ 1089938df9eSRichard Lowe (int)(*(unsigned *)&__x_s >> 31); }) 10925c28e83SPiotr Jasiukajtis #elif defined(_LITTLE_ENDIAN) 11025c28e83SPiotr Jasiukajtis #define signbit(x) __extension__( \ 11125c28e83SPiotr Jasiukajtis { __typeof(x) __x_s = (x); \ 11225c28e83SPiotr Jasiukajtis (sizeof (__x_s) == sizeof (float) ? \ 1139938df9eSRichard Lowe (int)(*(unsigned *)&__x_s >> 31) : \ 11425c28e83SPiotr Jasiukajtis sizeof (__x_s) == sizeof (double) ? \ 1159938df9eSRichard Lowe (int)(((unsigned *)&__x_s)[1] >> 31) : \ 1169938df9eSRichard Lowe (int)(((unsigned short *)&__x_s)[4] >> 15)); }) 117f26364c9SRichard Lowe #endif /* defined(_BIG_ENDIAN) */ 118f26364c9SRichard Lowe #endif /* __GNUC__ >= 4 */ 11925c28e83SPiotr Jasiukajtis 12025c28e83SPiotr Jasiukajtis /* 12125c28e83SPiotr Jasiukajtis * C99 7.12.14 comparison macros 12225c28e83SPiotr Jasiukajtis */ 12325c28e83SPiotr Jasiukajtis #undef isgreater 12425c28e83SPiotr Jasiukajtis #define isgreater(x, y) __builtin_isgreater(x, y) 12525c28e83SPiotr Jasiukajtis #undef isgreaterequal 12625c28e83SPiotr Jasiukajtis #define isgreaterequal(x, y) __builtin_isgreaterequal(x, y) 12725c28e83SPiotr Jasiukajtis #undef isless 12825c28e83SPiotr Jasiukajtis #define isless(x, y) __builtin_isless(x, y) 12925c28e83SPiotr Jasiukajtis #undef islessequal 13025c28e83SPiotr Jasiukajtis #define islessequal(x, y) __builtin_islessequal(x, y) 13125c28e83SPiotr Jasiukajtis #undef islessgreater 13225c28e83SPiotr Jasiukajtis #define islessgreater(x, y) __builtin_islessgreater(x, y) 13325c28e83SPiotr Jasiukajtis #undef isunordered 13425c28e83SPiotr Jasiukajtis #define isunordered(x, y) __builtin_isunordered(x, y) 13525c28e83SPiotr Jasiukajtis #else /* defined(__GNUC__) */ 13625c28e83SPiotr Jasiukajtis #undef HUGE_VAL 13725c28e83SPiotr Jasiukajtis #define HUGE_VAL __builtin_huge_val 13825c28e83SPiotr Jasiukajtis #undef HUGE_VALF 13925c28e83SPiotr Jasiukajtis #define HUGE_VALF __builtin_huge_valf 14025c28e83SPiotr Jasiukajtis #undef HUGE_VALL 14125c28e83SPiotr Jasiukajtis #define HUGE_VALL __builtin_huge_vall 14225c28e83SPiotr Jasiukajtis #undef INFINITY 14325c28e83SPiotr Jasiukajtis #define INFINITY __builtin_infinity 14425c28e83SPiotr Jasiukajtis #undef NAN 14525c28e83SPiotr Jasiukajtis #define NAN __builtin_nan 14625c28e83SPiotr Jasiukajtis 14725c28e83SPiotr Jasiukajtis /* 14825c28e83SPiotr Jasiukajtis * C99 7.12.3 classification macros 14925c28e83SPiotr Jasiukajtis */ 15025c28e83SPiotr Jasiukajtis #undef fpclassify 15125c28e83SPiotr Jasiukajtis #define fpclassify(x) __builtin_fpclassify(x) 15225c28e83SPiotr Jasiukajtis #undef isfinite 15325c28e83SPiotr Jasiukajtis #define isfinite(x) __builtin_isfinite(x) 15425c28e83SPiotr Jasiukajtis #undef isinf 15525c28e83SPiotr Jasiukajtis #define isinf(x) __builtin_isinf(x) 15625c28e83SPiotr Jasiukajtis #undef isnan 15725c28e83SPiotr Jasiukajtis #define isnan(x) __builtin_isnan(x) 15825c28e83SPiotr Jasiukajtis #undef isnormal 15925c28e83SPiotr Jasiukajtis #define isnormal(x) __builtin_isnormal(x) 16025c28e83SPiotr Jasiukajtis #undef signbit 16125c28e83SPiotr Jasiukajtis #define signbit(x) __builtin_signbit(x) 16225c28e83SPiotr Jasiukajtis 16325c28e83SPiotr Jasiukajtis /* 16425c28e83SPiotr Jasiukajtis * C99 7.12.14 comparison macros 16525c28e83SPiotr Jasiukajtis */ 16625c28e83SPiotr Jasiukajtis #undef isgreater 16725c28e83SPiotr Jasiukajtis #define isgreater(x, y) ((x) __builtin_isgreater(y)) 16825c28e83SPiotr Jasiukajtis #undef isgreaterequal 16925c28e83SPiotr Jasiukajtis #define isgreaterequal(x, y) ((x) __builtin_isgreaterequal(y)) 17025c28e83SPiotr Jasiukajtis #undef isless 17125c28e83SPiotr Jasiukajtis #define isless(x, y) ((x) __builtin_isless(y)) 17225c28e83SPiotr Jasiukajtis #undef islessequal 17325c28e83SPiotr Jasiukajtis #define islessequal(x, y) ((x) __builtin_islessequal(y)) 17425c28e83SPiotr Jasiukajtis #undef islessgreater 17525c28e83SPiotr Jasiukajtis #define islessgreater(x, y) ((x) __builtin_islessgreater(y)) 17625c28e83SPiotr Jasiukajtis #undef isunordered 17725c28e83SPiotr Jasiukajtis #define isunordered(x, y) ((x) __builtin_isunordered(y)) 17825c28e83SPiotr Jasiukajtis #endif /* defined(__GNUC__) */ 17925c28e83SPiotr Jasiukajtis #endif /* defined(_STDC_C99) || _XOPEN_SOURCE - 0 >= 600 || ... */ 18025c28e83SPiotr Jasiukajtis 18125c28e83SPiotr Jasiukajtis #if defined(__EXTENSIONS__) || defined(_STDC_C99) || \ 18225c28e83SPiotr Jasiukajtis (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \ 18325c28e83SPiotr Jasiukajtis defined(__C99FEATURES__) 18425c28e83SPiotr Jasiukajtis #if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ - 0 == 0 18525c28e83SPiotr Jasiukajtis typedef float float_t; 18625c28e83SPiotr Jasiukajtis typedef double double_t; 18725c28e83SPiotr Jasiukajtis #elif __FLT_EVAL_METHOD__ - 0 == 1 18825c28e83SPiotr Jasiukajtis typedef double float_t; 18925c28e83SPiotr Jasiukajtis typedef double double_t; 19025c28e83SPiotr Jasiukajtis #elif __FLT_EVAL_METHOD__ - 0 == 2 19125c28e83SPiotr Jasiukajtis typedef long double float_t; 19225c28e83SPiotr Jasiukajtis typedef long double double_t; 19325c28e83SPiotr Jasiukajtis #elif defined(__sparc) || defined(__amd64) 19425c28e83SPiotr Jasiukajtis typedef float float_t; 19525c28e83SPiotr Jasiukajtis typedef double double_t; 19625c28e83SPiotr Jasiukajtis #elif defined(__i386) 19725c28e83SPiotr Jasiukajtis typedef long double float_t; 19825c28e83SPiotr Jasiukajtis typedef long double double_t; 19925c28e83SPiotr Jasiukajtis #endif 20025c28e83SPiotr Jasiukajtis 20125c28e83SPiotr Jasiukajtis #undef FP_ILOGB0 20225c28e83SPiotr Jasiukajtis #define FP_ILOGB0 (-2147483647) 20325c28e83SPiotr Jasiukajtis #undef FP_ILOGBNAN 20425c28e83SPiotr Jasiukajtis #define FP_ILOGBNAN 2147483647 20525c28e83SPiotr Jasiukajtis 20625c28e83SPiotr Jasiukajtis #undef MATH_ERRNO 20725c28e83SPiotr Jasiukajtis #define MATH_ERRNO 1 20825c28e83SPiotr Jasiukajtis #undef MATH_ERREXCEPT 20925c28e83SPiotr Jasiukajtis #define MATH_ERREXCEPT 2 21025c28e83SPiotr Jasiukajtis #undef math_errhandling 21125c28e83SPiotr Jasiukajtis #define math_errhandling MATH_ERREXCEPT 21225c28e83SPiotr Jasiukajtis 2139938df9eSRichard Lowe extern double acosh(double); 2149938df9eSRichard Lowe extern double asinh(double); 2159938df9eSRichard Lowe extern double atanh(double); 2169938df9eSRichard Lowe 2179938df9eSRichard Lowe extern double exp2(double); 2189938df9eSRichard Lowe extern double expm1(double); 2199938df9eSRichard Lowe extern int ilogb(double); 2209938df9eSRichard Lowe extern double log1p(double); 2219938df9eSRichard Lowe extern double log2(double); 2229938df9eSRichard Lowe extern double logb(double); 2239938df9eSRichard Lowe extern double scalbn(double, int); 2249938df9eSRichard Lowe extern double scalbln(double, long int); 2259938df9eSRichard Lowe 2269938df9eSRichard Lowe extern double cbrt(double); 2279938df9eSRichard Lowe extern double hypot(double, double); 2289938df9eSRichard Lowe 2299938df9eSRichard Lowe extern double erf(double); 2309938df9eSRichard Lowe extern double erfc(double); 2319938df9eSRichard Lowe extern double lgamma(double); 2329938df9eSRichard Lowe extern double tgamma(double); 2339938df9eSRichard Lowe 2349938df9eSRichard Lowe extern double nearbyint(double); 2359938df9eSRichard Lowe extern double rint(double); 2369938df9eSRichard Lowe extern long int lrint(double); 2379938df9eSRichard Lowe extern double round(double); 2389938df9eSRichard Lowe extern long int lround(double); 2399938df9eSRichard Lowe extern double trunc(double); 2409938df9eSRichard Lowe 2419938df9eSRichard Lowe extern double remainder(double, double); 2429938df9eSRichard Lowe extern double remquo(double, double, int *); 2439938df9eSRichard Lowe 2449938df9eSRichard Lowe extern double copysign(double, double); 2459938df9eSRichard Lowe extern double nan(const char *); 2469938df9eSRichard Lowe extern double nextafter(double, double); 2479938df9eSRichard Lowe extern double nexttoward(double, long double); 2489938df9eSRichard Lowe 2499938df9eSRichard Lowe extern double fdim(double, double); 2509938df9eSRichard Lowe extern double fmax(double, double); 2519938df9eSRichard Lowe extern double fmin(double, double); 2529938df9eSRichard Lowe 2539938df9eSRichard Lowe extern double fma(double, double, double); 2549938df9eSRichard Lowe 2559938df9eSRichard Lowe extern float acosf(float); 2569938df9eSRichard Lowe extern float asinf(float); 2579938df9eSRichard Lowe extern float atanf(float); 2589938df9eSRichard Lowe extern float atan2f(float, float); 2599938df9eSRichard Lowe extern float cosf(float); 2609938df9eSRichard Lowe extern float sinf(float); 2619938df9eSRichard Lowe extern float tanf(float); 2629938df9eSRichard Lowe 2639938df9eSRichard Lowe extern float acoshf(float); 2649938df9eSRichard Lowe extern float asinhf(float); 2659938df9eSRichard Lowe extern float atanhf(float); 2669938df9eSRichard Lowe extern float coshf(float); 2679938df9eSRichard Lowe extern float sinhf(float); 2689938df9eSRichard Lowe extern float tanhf(float); 2699938df9eSRichard Lowe 2709938df9eSRichard Lowe extern float expf(float); 2719938df9eSRichard Lowe extern float exp2f(float); 2729938df9eSRichard Lowe extern float expm1f(float); 2739938df9eSRichard Lowe extern float frexpf(float, int *); 2749938df9eSRichard Lowe extern int ilogbf(float); 2759938df9eSRichard Lowe extern float ldexpf(float, int); 2769938df9eSRichard Lowe extern float logf(float); 2779938df9eSRichard Lowe extern float log10f(float); 2789938df9eSRichard Lowe extern float log1pf(float); 2799938df9eSRichard Lowe extern float log2f(float); 2809938df9eSRichard Lowe extern float logbf(float); 2819938df9eSRichard Lowe extern float modff(float, float *); 2829938df9eSRichard Lowe extern float scalbnf(float, int); 2839938df9eSRichard Lowe extern float scalblnf(float, long int); 2849938df9eSRichard Lowe 2859938df9eSRichard Lowe extern float cbrtf(float); 2869938df9eSRichard Lowe extern float fabsf(float); 2879938df9eSRichard Lowe extern float hypotf(float, float); 2889938df9eSRichard Lowe extern float powf(float, float); 2899938df9eSRichard Lowe extern float sqrtf(float); 2909938df9eSRichard Lowe 2919938df9eSRichard Lowe extern float erff(float); 2929938df9eSRichard Lowe extern float erfcf(float); 2939938df9eSRichard Lowe extern float lgammaf(float); 2949938df9eSRichard Lowe extern float tgammaf(float); 2959938df9eSRichard Lowe 2969938df9eSRichard Lowe extern float ceilf(float); 2979938df9eSRichard Lowe extern float floorf(float); 2989938df9eSRichard Lowe extern float nearbyintf(float); 2999938df9eSRichard Lowe extern float rintf(float); 3009938df9eSRichard Lowe extern long int lrintf(float); 3019938df9eSRichard Lowe extern float roundf(float); 3029938df9eSRichard Lowe extern long int lroundf(float); 3039938df9eSRichard Lowe extern float truncf(float); 3049938df9eSRichard Lowe 3059938df9eSRichard Lowe extern float fmodf(float, float); 3069938df9eSRichard Lowe extern float remainderf(float, float); 3079938df9eSRichard Lowe extern float remquof(float, float, int *); 3089938df9eSRichard Lowe 3099938df9eSRichard Lowe extern float copysignf(float, float); 3109938df9eSRichard Lowe extern float nanf(const char *); 3119938df9eSRichard Lowe extern float nextafterf(float, float); 3129938df9eSRichard Lowe extern float nexttowardf(float, long double); 3139938df9eSRichard Lowe 3149938df9eSRichard Lowe extern float fdimf(float, float); 3159938df9eSRichard Lowe extern float fmaxf(float, float); 3169938df9eSRichard Lowe extern float fminf(float, float); 3179938df9eSRichard Lowe 3189938df9eSRichard Lowe extern float fmaf(float, float, float); 3199938df9eSRichard Lowe 3209938df9eSRichard Lowe extern long double acosl(long double); 3219938df9eSRichard Lowe extern long double asinl(long double); 3229938df9eSRichard Lowe extern long double atanl(long double); 3239938df9eSRichard Lowe extern long double atan2l(long double, long double); 3249938df9eSRichard Lowe extern long double cosl(long double); 3259938df9eSRichard Lowe extern long double sinl(long double); 3269938df9eSRichard Lowe extern long double tanl(long double); 3279938df9eSRichard Lowe 3289938df9eSRichard Lowe extern long double acoshl(long double); 3299938df9eSRichard Lowe extern long double asinhl(long double); 3309938df9eSRichard Lowe extern long double atanhl(long double); 3319938df9eSRichard Lowe extern long double coshl(long double); 3329938df9eSRichard Lowe extern long double sinhl(long double); 3339938df9eSRichard Lowe extern long double tanhl(long double); 3349938df9eSRichard Lowe 3359938df9eSRichard Lowe extern long double expl(long double); 3369938df9eSRichard Lowe extern long double exp2l(long double); 3379938df9eSRichard Lowe extern long double expm1l(long double); 3389938df9eSRichard Lowe extern long double frexpl(long double, int *); 3399938df9eSRichard Lowe extern int ilogbl(long double); 3409938df9eSRichard Lowe extern long double ldexpl(long double, int); 3419938df9eSRichard Lowe extern long double logl(long double); 3429938df9eSRichard Lowe extern long double log10l(long double); 3439938df9eSRichard Lowe extern long double log1pl(long double); 3449938df9eSRichard Lowe extern long double log2l(long double); 3459938df9eSRichard Lowe extern long double logbl(long double); 3469938df9eSRichard Lowe extern long double modfl(long double, long double *); 3479938df9eSRichard Lowe extern long double scalbnl(long double, int); 3489938df9eSRichard Lowe extern long double scalblnl(long double, long int); 3499938df9eSRichard Lowe 3509938df9eSRichard Lowe extern long double cbrtl(long double); 3519938df9eSRichard Lowe extern long double fabsl(long double); 3529938df9eSRichard Lowe extern long double hypotl(long double, long double); 3539938df9eSRichard Lowe extern long double powl(long double, long double); 3549938df9eSRichard Lowe extern long double sqrtl(long double); 3559938df9eSRichard Lowe 3569938df9eSRichard Lowe extern long double erfl(long double); 3579938df9eSRichard Lowe extern long double erfcl(long double); 3589938df9eSRichard Lowe extern long double lgammal(long double); 3599938df9eSRichard Lowe extern long double tgammal(long double); 3609938df9eSRichard Lowe 3619938df9eSRichard Lowe extern long double ceill(long double); 3629938df9eSRichard Lowe extern long double floorl(long double); 3639938df9eSRichard Lowe extern long double nearbyintl(long double); 3649938df9eSRichard Lowe extern long double rintl(long double); 3659938df9eSRichard Lowe extern long int lrintl(long double); 3669938df9eSRichard Lowe extern long double roundl(long double); 3679938df9eSRichard Lowe extern long int lroundl(long double); 3689938df9eSRichard Lowe extern long double truncl(long double); 3699938df9eSRichard Lowe 3709938df9eSRichard Lowe extern long double fmodl(long double, long double); 3719938df9eSRichard Lowe extern long double remainderl(long double, long double); 3729938df9eSRichard Lowe extern long double remquol(long double, long double, int *); 3739938df9eSRichard Lowe 3749938df9eSRichard Lowe extern long double copysignl(long double, long double); 3759938df9eSRichard Lowe extern long double nanl(const char *); 3769938df9eSRichard Lowe extern long double nextafterl(long double, long double); 3779938df9eSRichard Lowe extern long double nexttowardl(long double, long double); 3789938df9eSRichard Lowe 3799938df9eSRichard Lowe extern long double fdiml(long double, long double); 3809938df9eSRichard Lowe extern long double fmaxl(long double, long double); 3819938df9eSRichard Lowe extern long double fminl(long double, long double); 3829938df9eSRichard Lowe 3839938df9eSRichard Lowe extern long double fmal(long double, long double, long double); 38425c28e83SPiotr Jasiukajtis 38525c28e83SPiotr Jasiukajtis #if !defined(_STRICT_STDC) && !defined(_NO_LONGLONG) || defined(_STDC_C99) || \ 38625c28e83SPiotr Jasiukajtis defined(__C99FEATURES__) 3879938df9eSRichard Lowe extern long long int llrint(double); 3889938df9eSRichard Lowe extern long long int llround(double); 38925c28e83SPiotr Jasiukajtis 3909938df9eSRichard Lowe extern long long int llrintf(float); 3919938df9eSRichard Lowe extern long long int llroundf(float); 39225c28e83SPiotr Jasiukajtis 3939938df9eSRichard Lowe extern long long int llrintl(long double); 3949938df9eSRichard Lowe extern long long int llroundl(long double); 39525c28e83SPiotr Jasiukajtis #endif 39625c28e83SPiotr Jasiukajtis 39725c28e83SPiotr Jasiukajtis #if !defined(__cplusplus) 39825c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(asinh, exp2, expm1) 39925c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(ilogb, log2) 40025c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(scalbn, scalbln, cbrt) 40125c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(erf, erfc, tgamma) 40225c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(nearbyint, rint, lrint, round, lround, trunc) 40325c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(remquo) 40425c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(copysign, nan, nexttoward) 40525c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(fdim, fmax, fmin, fma) 40625c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(asinh, exp2, expm1) 40725c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(ilogb, log2) 40825c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(scalbn, scalbln, cbrt) 40925c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(erf, erfc, tgamma) 41025c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(nearbyint, rint, lrint, round, lround, trunc) 41125c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(copysign, nan, nexttoward) 41225c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(fdim, fmax, fmin, fma) 41325c28e83SPiotr Jasiukajtis 41425c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(acosf, asinf, atanf, atan2f) 41525c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(cosf, sinf, tanf) 41625c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(acoshf, asinhf, atanhf, coshf, sinhf, tanhf) 41725c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(expf, exp2f, expm1f, frexpf, ilogbf, ldexpf) 41825c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(logf, log10f, log1pf, log2f, logbf) 41925c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(modff, scalbnf, scalblnf) 42025c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(cbrtf, fabsf, hypotf, powf, sqrtf) 42125c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(erff, erfcf, lgammaf, tgammaf) 42225c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(ceilf, floorf, nearbyintf) 42325c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(rintf, lrintf, roundf, lroundf, truncf) 42425c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(fmodf, remainderf, remquof) 42525c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(copysignf, nanf, nextafterf, nexttowardf) 42625c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(fdimf, fmaxf, fminf, fmaf) 42725c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(acosf, asinf, atanf, atan2f) 42825c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(cosf, sinf, tanf) 42925c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(acoshf, asinhf, atanhf, coshf, sinhf, tanhf) 43025c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(expf, exp2f, expm1f, ilogbf, ldexpf) 43125c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(logf, log10f, log1pf, log2f, logbf) 43225c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(cbrtf, fabsf, hypotf, powf, sqrtf) 43325c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(erff, erfcf, tgammaf) 43425c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(ceilf, floorf, nearbyintf) 43525c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(rintf, lrintf, roundf, lroundf, truncf) 43625c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(fmodf, remainderf) 43725c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(copysignf, nanf, nextafterf, nexttowardf) 43825c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(fdimf, fmaxf, fminf, fmaf) 43925c28e83SPiotr Jasiukajtis 44025c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(acosl, asinl, atanl, atan2l) 44125c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(cosl, sinl, tanl) 44225c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(acoshl, asinhl, atanhl, coshl, sinhl, tanhl) 44325c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(expl, exp2l, expm1l, frexpl, ilogbl, ldexpl) 44425c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(logl, log10l, log1pl, log2l, logbl) 44525c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(modfl, scalbnl, scalblnl) 44625c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(cbrtl, fabsl, hypotl, powl, sqrtl) 44725c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(erfl, erfcl, lgammal, tgammal) 44825c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(ceill, floorl, nearbyintl) 44925c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(rintl, lrintl, roundl, lroundl, truncl) 45025c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(fmodl, remainderl, remquol) 45125c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(copysignl, nanl, nextafterl, nexttowardl) 45225c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(fdiml, fmaxl, fminl, fmal) 45325c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(acosl, asinl, atanl, atan2l) 45425c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(cosl, sinl, tanl) 45525c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(acoshl, asinhl, atanhl, coshl, sinhl, tanhl) 45625c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(expl, exp2l, expm1l, ilogbl, ldexpl) 45725c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(logl, log10l, log1pl, log2l, logbl) 45825c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(cbrtl, fabsl, hypotl, powl, sqrtl) 45925c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(erfl, erfcl, tgammal) 46025c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(ceill, floorl, nearbyintl) 46125c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(rintl, lrintl, roundl, lroundl, truncl) 46225c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(fmodl, remainderl) 46325c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(copysignl, nanl, nextafterl, nexttowardl) 46425c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(fdiml, fmaxl, fminl, fmal) 46525c28e83SPiotr Jasiukajtis 46625c28e83SPiotr Jasiukajtis #if !defined(_STRICT_STDC) && !defined(_NO_LONGLONG) || defined(_STDC_C99) || \ 46725c28e83SPiotr Jasiukajtis defined(__C99FEATURES__) 46825c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(llrint, llround) 46925c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(llrintf, llroundf, llrintl, llroundl) 47025c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(llrint, llround) 47125c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(llrintf, llroundf, llrintl, llroundl) 47225c28e83SPiotr Jasiukajtis #endif 47325c28e83SPiotr Jasiukajtis #endif /* !defined(__cplusplus) */ 47425c28e83SPiotr Jasiukajtis 47525c28e83SPiotr Jasiukajtis #if defined(__MATHERR_ERRNO_DONTCARE) 47625c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(acosh, atanh, hypot, lgamma, log1p, logb) 47725c28e83SPiotr Jasiukajtis #pragma does_not_read_global_data(nextafter, remainder) 47825c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(acosh, atanh, hypot, log1p, logb) 47925c28e83SPiotr Jasiukajtis #pragma does_not_write_global_data(nextafter, remainder) 48025c28e83SPiotr Jasiukajtis 48125c28e83SPiotr Jasiukajtis #pragma no_side_effect(acosh, asinh, atanh, exp2, expm1) 48225c28e83SPiotr Jasiukajtis #pragma no_side_effect(ilogb, log1p, log2, logb) 48325c28e83SPiotr Jasiukajtis #pragma no_side_effect(scalbn, scalbln, cbrt, hypot) 48425c28e83SPiotr Jasiukajtis #pragma no_side_effect(erf, erfc, tgamma) 48525c28e83SPiotr Jasiukajtis #pragma no_side_effect(nearbyint, rint, lrint, round, lround, trunc) 48625c28e83SPiotr Jasiukajtis #pragma no_side_effect(remainder) 48725c28e83SPiotr Jasiukajtis #pragma no_side_effect(copysign, nan, nextafter, nexttoward) 48825c28e83SPiotr Jasiukajtis #pragma no_side_effect(fdim, fmax, fmin, fma) 48925c28e83SPiotr Jasiukajtis 49025c28e83SPiotr Jasiukajtis #pragma no_side_effect(acosf, asinf, atanf, atan2f) 49125c28e83SPiotr Jasiukajtis #pragma no_side_effect(cosf, sinf, tanf, coshf, sinhf, tanhf) 49225c28e83SPiotr Jasiukajtis #pragma no_side_effect(acoshf, asinhf, atanhf, coshf, sinhf, tanhf) 49325c28e83SPiotr Jasiukajtis #pragma no_side_effect(expf, exp2f, expm1f, ilogbf, ldexpf) 49425c28e83SPiotr Jasiukajtis #pragma no_side_effect(logf, log10f, log1pf, log2f, logbf) 49525c28e83SPiotr Jasiukajtis #pragma no_side_effect(cbrtf, fabsf, hypotf, powf, sqrtf) 49625c28e83SPiotr Jasiukajtis #pragma no_side_effect(erff, erfcf, tgammaf) 49725c28e83SPiotr Jasiukajtis #pragma no_side_effect(ceilf, floorf, nearbyintf) 49825c28e83SPiotr Jasiukajtis #pragma no_side_effect(rintf, lrintf, roundf, lroundf, truncf) 49925c28e83SPiotr Jasiukajtis #pragma no_side_effect(fmodf, remainderf) 50025c28e83SPiotr Jasiukajtis #pragma no_side_effect(copysignf, nanf, nextafterf, nexttowardf) 50125c28e83SPiotr Jasiukajtis #pragma no_side_effect(fdimf, fmaxf, fminf, fmaf) 50225c28e83SPiotr Jasiukajtis 50325c28e83SPiotr Jasiukajtis #pragma no_side_effect(acosl, asinl, atanl, atan2l) 50425c28e83SPiotr Jasiukajtis #pragma no_side_effect(cosl, sinl, tanl, coshl, sinhl, tanhl) 50525c28e83SPiotr Jasiukajtis #pragma no_side_effect(acoshl, asinhl, atanhl, coshl, sinhl, tanhl) 50625c28e83SPiotr Jasiukajtis #pragma no_side_effect(expl, exp2l, expm1l, ilogbl, ldexpl) 50725c28e83SPiotr Jasiukajtis #pragma no_side_effect(logl, log10l, log1pl, log2l, logbl) 50825c28e83SPiotr Jasiukajtis #pragma no_side_effect(cbrtl, fabsl, hypotl, powl, sqrtl) 50925c28e83SPiotr Jasiukajtis #pragma no_side_effect(erfl, erfcl, tgammal) 51025c28e83SPiotr Jasiukajtis #pragma no_side_effect(ceill, floorl, nearbyintl) 51125c28e83SPiotr Jasiukajtis #pragma no_side_effect(rintl, lrintl, roundl, lroundl, truncl) 51225c28e83SPiotr Jasiukajtis #pragma no_side_effect(fmodl, remainderl) 51325c28e83SPiotr Jasiukajtis #pragma no_side_effect(copysignl, nanl, nextafterl, nexttowardl) 51425c28e83SPiotr Jasiukajtis #pragma no_side_effect(fdiml, fmaxl, fminl, fmal) 51525c28e83SPiotr Jasiukajtis 51625c28e83SPiotr Jasiukajtis #if !defined(_STRICT_STDC) && !defined(_NO_LONGLONG) || defined(_STDC_C99) || \ 51725c28e83SPiotr Jasiukajtis defined(__C99FEATURES__) 51825c28e83SPiotr Jasiukajtis #pragma no_side_effect(llrint, llround, llrintf, llroundf, llrintl, llroundl) 51925c28e83SPiotr Jasiukajtis #endif 52025c28e83SPiotr Jasiukajtis #endif /* defined(__MATHERR_ERRNO_DONTCARE) */ 52125c28e83SPiotr Jasiukajtis #endif /* defined(__EXTENSIONS__) || defined(_STDC_C99) || ... */ 52225c28e83SPiotr Jasiukajtis 52325c28e83SPiotr Jasiukajtis #ifdef __cplusplus 52425c28e83SPiotr Jasiukajtis } 52525c28e83SPiotr Jasiukajtis #endif 52625c28e83SPiotr Jasiukajtis 52725c28e83SPiotr Jasiukajtis #endif /* _ISO_MATH_C99_H */ 528