@@ -38,30 +38,13 @@ extern "C" {
3838#define FP_NAN 0x3
3939#define FP_NORMAL 0x4
4040
41- #if 0
42- /* disabled until builtin is optimized */
43- #define signbit (x ) __builtin_signbit(x)
44-
45- #else
46- bool _signbitf (float x );
47- bool _signbitl (long double x );
48- #define signbit (x ) ( \
49- sizeof((x)) == sizeof(float) ? _signbitf((x)) : \
50- sizeof((x)) == sizeof(long double) ? _signbitl((x)) : \
51- (x) < 0)
52-
53- #endif
54-
5541#define isgreater (x , y ) __builtin_isgreater(x, y)
5642#define isgreaterequal (x , y ) __builtin_isgreaterequal(x, y)
5743#define isless (x , y ) __builtin_isless(x, y)
5844#define islessequal (x , y ) __builtin_islessequal(x, y)
5945#define islessgreater (x , y ) __builtin_islessgreater(x, y)
6046#define isunordered (x , y ) __builtin_isunordered(x, y)
6147
62- typedef float float_t ;
63- typedef double double_t ;
64-
6548int _isinff (float n );
6649int _isnanf (float n );
6750int _isnormalf (float n );
@@ -78,6 +61,21 @@ int _iszerol(long double n);
7861int _issubnormall (long double n );
7962int _fpclassifyl (long double n );
8063
64+ #if 0
65+ /* disabled until builtin is optimized */
66+ #define _signbitf (x ) __builtin_signbit(x)
67+ #define _signbitl (x ) __builtin_signbit(x)
68+ #else
69+ bool _signbitf (float x );
70+ bool _signbitl (long double x );
71+ #endif
72+
73+ #ifndef __cplusplus
74+
75+ #define signbit (x ) ( \
76+ sizeof((x)) == sizeof(float) ? _signbitf((x)) : \
77+ sizeof((x)) == sizeof(long double) ? _signbitl((x)) : \
78+ (x) < 0)
8179#define isinf (x ) ( \
8280 sizeof((x)) == sizeof(float) ? _isinff((x)) : \
8381 sizeof((x)) == sizeof(long double) ? _isinfl((x)) : \
@@ -107,6 +105,49 @@ int _fpclassifyl(long double n);
107105 sizeof((x)) == sizeof(long double) ? _fpclassifyl((x)) : \
108106 0)
109107
108+ #else
109+
110+ extern "C++" {
111+
112+ inline bool signbit (float __x ) { return _signbitf (__x ); }
113+ inline bool signbit (double __x ) { return _signbitf (__x ); }
114+ inline bool signbit (long double __x ) { return _signbitl (__x ); }
115+
116+ inline bool isinf (float __x ) { return _isinff (__x ); }
117+ inline bool isinf (double __x ) { return _isinff (__x ); }
118+ inline bool isinf (long double __x ) { return _isinfl (__x ); }
119+
120+ inline bool isnan (float __x ) { return _isnanf (__x ); }
121+ inline bool isnan (double __x ) { return _isnanf (__x ); }
122+ inline bool isnan (long double __x ) { return _isnanl (__x ); }
123+
124+ inline bool isnormal (float __x ) { return _isnormalf (__x ); }
125+ inline bool isnormal (double __x ) { return _isnormalf (__x ); }
126+ inline bool isnormal (long double __x ) { return _isnormall (__x ); }
127+
128+ inline bool isfinite (float __x ) { return _isfinitef (__x ); }
129+ inline bool isfinite (double __x ) { return _isfinitef (__x ); }
130+ inline bool isfinite (long double __x ) { return _isfinitel (__x ); }
131+
132+ inline bool iszero (float __x ) { return _iszerof (__x ); }
133+ inline bool iszero (double __x ) { return _iszerof (__x ); }
134+ inline bool iszero (long double __x ) { return _iszerol (__x ); }
135+
136+ inline bool issubnormal (float __x ) { return _issubnormalf (__x ); }
137+ inline bool issubnormal (double __x ) { return _issubnormalf (__x ); }
138+ inline bool issubnormal (long double __x ) { return _issubnormall (__x ); }
139+
140+ inline bool fpclassify (float __x ) { return _fpclassifyf (__x ); }
141+ inline bool fpclassify (double __x ) { return _fpclassifyf (__x ); }
142+ inline bool fpclassify (long double __x ) { return _fpclassifyl (__x ); }
143+
144+ } /* extern "C++" */
145+
146+ #endif
147+
148+ typedef float float_t ;
149+ typedef double double_t ;
150+
110151double acos (double );
111152float acosf (float );
112153long double acosl (long double );
@@ -352,26 +393,28 @@ long double truncl(long double);
352393
353394/* aliases */
354395
355- long double _debug_fabsl (long double x );
396+ long double _debug_fabsl (long double );
356397#define fabsl _debug_fabsl
357- long double _debug_copysignl (long double x , long double y );
398+ long double _debug_copysignl (long double , long double );
358399#define copysignl _debug_copysignl
359- long double _debug_fmaxl (long double x , long double y );
400+ long double _debug_fmaxl (long double , long double );
360401#define fmaxl _debug_fmaxl
361- long double _debug_fminl (long double x , long double y );
402+ long double _debug_fminl (long double , long double );
362403#define fminl _debug_fminl
363- long double _debug_truncl (long double x );
404+ long double _debug_truncl (long double );
364405#define truncl _debug_truncl
365- long double _debug_floorl (long double x );
406+ long double _debug_floorl (long double );
366407#define floorl _debug_floorl
367- long double _debug_ceill (long double x );
408+ long double _debug_ceill (long double );
368409#define ceill _debug_ceill
369- long double _debug_roundl (long double x );
410+ long double _debug_roundl (long double );
370411#define roundl _debug_roundl
371- long double _debug_nearbyintl (long double x );
412+ long double _debug_nearbyintl (long double );
372413#define nearbyintl _debug_nearbyintl
373- long double _debug_rintl (long double x );
414+ long double _debug_rintl (long double );
374415#define rintl _debug_rintl
416+ long double _debug_fmal (long double , long double , long double );
417+ #define fmal _debug_fmal
375418
376419#ifdef __cplusplus
377420}
0 commit comments