30 #ifndef _GLIBCXX_BITS_STD_ABS_H 31 #define _GLIBCXX_BITS_STD_ABS_H 33 #pragma GCC system_header 37 #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS 38 #include_next <stdlib.h> 39 #ifdef __CORRECT_ISO_CPP_MATH_H_PROTO 40 # include_next <math.h> 42 #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS 48 namespace std _GLIBCXX_VISIBILITY(default)
50 _GLIBCXX_BEGIN_NAMESPACE_VERSION
54 #ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO 56 abs(
long __i) {
return __builtin_labs(__i); }
59 #ifdef _GLIBCXX_USE_LONG_LONG 61 abs(
long long __x) {
return __builtin_llabs (__x); }
69 #ifndef __CORRECT_ISO_CPP_MATH_H_PROTO 70 inline _GLIBCXX_CONSTEXPR
double 72 {
return __builtin_fabs(__x); }
74 inline _GLIBCXX_CONSTEXPR
float 76 {
return __builtin_fabsf(__x); }
78 inline _GLIBCXX_CONSTEXPR
long double 80 {
return __builtin_fabsl(__x); }
83 #if defined(__GLIBCXX_TYPE_INT_N_0) 84 __extension__
inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_0
85 abs(__GLIBCXX_TYPE_INT_N_0 __x) {
return __x >= 0 ? __x : -__x; }
87 #if defined(__GLIBCXX_TYPE_INT_N_1) 88 __extension__
inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_1
89 abs(__GLIBCXX_TYPE_INT_N_1 __x) {
return __x >= 0 ? __x : -__x; }
91 #if defined(__GLIBCXX_TYPE_INT_N_2) 92 __extension__
inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_2
93 abs(__GLIBCXX_TYPE_INT_N_2 __x) {
return __x >= 0 ? __x : -__x; }
95 #if defined(__GLIBCXX_TYPE_INT_N_3) 96 __extension__
inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_3
97 abs(__GLIBCXX_TYPE_INT_N_3 __x) {
return __x >= 0 ? __x : -__x; }
100 #if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32) 103 {
return _Float16(__builtin_fabsf(__x)); }
106 #if defined(__STDCPP_FLOAT32_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32) 109 {
return __builtin_fabsf(__x); }
112 #if defined(__STDCPP_FLOAT64_T__) && defined(_GLIBCXX_DOUBLE_IS_IEEE_BINARY64) 115 {
return __builtin_fabs(__x); }
118 #if defined(__STDCPP_FLOAT128_T__) && defined(_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128) 121 {
return __builtin_fabsl(__x); }
122 #elif defined(__STDCPP_FLOAT128_T__) && defined(_GLIBCXX_HAVE_FLOAT128_MATH) 125 {
return __builtin_fabsf128(__x); }
128 #if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32) 129 constexpr __gnu_cxx::__bfloat16_t
130 abs(__gnu_cxx::__bfloat16_t __x)
131 {
return __gnu_cxx::__bfloat16_t(__builtin_fabsf(__x)); }
134 #if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) 135 __extension__
inline _GLIBCXX_CONSTEXPR
139 #if defined(_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128) 140 return __builtin_fabsl(__x);
141 #elif defined(_GLIBCXX_HAVE_FLOAT128_MATH) 142 return __builtin_fabsf128(__x);
145 return __builtin_signbit(__x) ? -__x : __x;
150 _GLIBCXX_END_NAMESPACE_VERSION
154 #endif // _GLIBCXX_BITS_STD_ABS_H ISO C++ entities toplevel namespace is std.
_Tp abs(const complex< _Tp > &)
Return magnitude of z.