139,7 → 139,6 |
|
/* Functions that are not documented, and are not in <math.h>. */ |
|
extern double logb __P((double)); |
#ifdef _SCALB_INT |
extern double scalb __P((double, int)); |
#else |
186,7 → 185,6 |
extern int __kernel_rem_pio2 __P((double*,double*,int,int,int,const __int32_t*)); |
|
/* Undocumented float functions. */ |
extern float logbf __P((float)); |
#ifdef _SCALB_INT |
extern float scalbf __P((float, int)); |
#else |
363,3 → 361,44 |
sf_u.word = (i); \ |
(d) = sf_u.value; \ |
} while (0) |
|
/* Macros to avoid undefined behaviour that can arise if the amount |
of a shift is exactly equal to the size of the shifted operand. */ |
|
#define SAFE_LEFT_SHIFT(op,amt) \ |
(((amt) < 8 * sizeof(op)) ? ((op) << (amt)) : 0) |
|
#define SAFE_RIGHT_SHIFT(op,amt) \ |
(((amt) < 8 * sizeof(op)) ? ((op) >> (amt)) : 0) |
|
#ifdef _COMPLEX_H |
|
/* |
* Quoting from ISO/IEC 9899:TC2: |
* |
* 6.2.5.13 Types |
* Each complex type has the same representation and alignment requirements as |
* an array type containing exactly two elements of the corresponding real type; |
* the first element is equal to the real part, and the second element to the |
* imaginary part, of the complex number. |
*/ |
typedef union { |
float complex z; |
float parts[2]; |
} float_complex; |
|
typedef union { |
double complex z; |
double parts[2]; |
} double_complex; |
|
typedef union { |
long double complex z; |
long double parts[2]; |
} long_double_complex; |
|
#define REAL_PART(z) ((z).parts[0]) |
#define IMAG_PART(z) ((z).parts[1]) |
|
#endif /* _COMPLEX_H */ |
|