diff options
Diffstat (limited to 'libstdc++-v3/include/std/complex')
-rw-r--r-- | libstdc++-v3/include/std/complex | 348 |
1 files changed, 301 insertions, 47 deletions
diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index 3f883504290..d2aa172fc95 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -41,10 +41,13 @@ #include <bits/c++config.h> #include <bits/cpp_type_traits.h> #include <ext/type_traits.h> -#define _GLIBCXX_NO_SPECFUN +#define _GLIBCXX_NO_SPECFUN 1 # include <cmath> #undef _GLIBCXX_NO_SPECFUN #include <sstream> +#if _GLIBCXX_HAVE_FLOAT128_MATH +#include <bits/float128_io.h> +#endif // Get rid of a macro possibly defined in <complex.h> #undef complex @@ -568,6 +571,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __z.imag(); } #endif +#if _GLIBCXX_HAVE_FLOAT128_MATH + typedef _Complex float __attribute__((mode(TC))) __complex128; +#ifdef __cplusplus +extern "C" { +#endif + __float128 strtoflt128 (const char*, char**) _GLIBCXX_NOEXCEPT; + + __float128 cabsq (__complex128) _GLIBCXX_NOEXCEPT; + __float128 cargq (__complex128) _GLIBCXX_NOEXCEPT; + __float128 cimagq (__complex128) _GLIBCXX_NOEXCEPT; + __float128 crealq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 cacosq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 cacoshq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 casinq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 casinhq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 catanq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 catanhq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 ccosq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 ccoshq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 cexpq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 cexpiq (__float128) _GLIBCXX_NOEXCEPT; + __complex128 clogq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 clog10q (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 conjq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 cpowq (__complex128, __complex128) _GLIBCXX_NOEXCEPT; + __complex128 cprojq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 csinq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 csinhq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 csqrtq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 ctanq (__complex128) _GLIBCXX_NOEXCEPT; + __complex128 ctanhq (__complex128) _GLIBCXX_NOEXCEPT; +#ifdef __cplusplus +} +#endif +#endif // _GLIBCXX_HAVE_FLOAT128_MATH + // 26.2.7/3 abs(__z): Returns the magnitude of __z. template<typename _Tp> inline _Tp @@ -594,11 +633,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_abs(const __complex__ long double& __z) { return __builtin_cabsl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __float128 __complex_abs(const __complex128& __z) { return cabsq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline _Tp @@ -627,11 +666,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_arg(const __complex__ long double& __z) { return __builtin_cargl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __float128 __complex_arg(const __complex128& __z) { return cargq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline _Tp @@ -714,11 +753,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_cos(const __complex__ long double& __z) { return __builtin_ccosl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_cos(const __complex128& __z) { return ccosq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -750,11 +789,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_cosh(const __complex__ long double& __z) { return __builtin_ccoshl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_cosh(const __complex128& __z) { return ccoshq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -782,11 +821,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_exp(const __complex__ long double& __z) { return __builtin_cexpl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_exp(const __complex128& __z) { return cexpq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -815,11 +854,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_log(const __complex__ long double& __z) { return __builtin_clogl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_log(const __complex128& __z) { return clogq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -856,11 +895,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_sin(const __complex__ long double& __z) { return __builtin_csinl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_sin(const __complex128& __z) { return csinq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -892,11 +931,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_sinh(const __complex__ long double& __z) { return __builtin_csinhl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_sinh(const __complex128& __z) { return csinhq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -942,11 +981,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_sqrt(const __complex__ long double& __z) { return __builtin_csqrtl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_sqrt(const __complex128& __z) { return csqrtq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -975,11 +1014,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_tan(const __complex__ long double& __z) { return __builtin_ctanl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_tan(const __complex128& __z) { return ctanq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -1009,11 +1048,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_tanh(const __complex__ long double& __z) { return __builtin_ctanhl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_tanh(const __complex128& __z) { return ctanhq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -1093,11 +1132,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const __complex__ long double& __y) { return __builtin_cpowl(__x, __y); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_pow(const __complex128& __x, const __complex128& __y) { return cpowq(__x, __y); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline complex<_Tp> @@ -1141,9 +1180,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION explicit _GLIBCXX_CONSTEXPR complex(const complex<double>&); explicit _GLIBCXX_CONSTEXPR complex(const complex<long double>&); -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH explicit _GLIBCXX_CONSTEXPR complex(const complex<__float128>&); -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS @@ -1295,9 +1334,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : _M_value(__z.__rep()) { } explicit _GLIBCXX_CONSTEXPR complex(const complex<long double>&); -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH explicit _GLIBCXX_CONSTEXPR complex(const complex<__float128>&); -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS @@ -1451,9 +1490,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_CONSTEXPR complex(const complex<double>& __z) : _M_value(__z.__rep()) { } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH explicit _GLIBCXX_CONSTEXPR complex(const complex<__float128>&); -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS @@ -1580,6 +1619,189 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ComplexT _M_value; }; +#if _GLIBCXX_HAVE_FLOAT128_MATH + + /// complex<__float128> specialization + template<> + struct complex<__float128> + { + typedef __float128 value_type; + + // From quadmath.h + //typedef _Complex float __attribute__((mode(TC))) __complex128; + typedef __complex128 _ComplexT; + + _GLIBCXX_CONSTEXPR + complex(_ComplexT __z) + : _M_value(__z) + { } + + _GLIBCXX_CONSTEXPR + complex(__float128 __r = 0.0Q, + __float128 __i = 0.0Q) +#if __cplusplus >= 201103L + : _M_value{ __r, __i } + { } +#else + { + __real__ _M_value = __r; + __imag__ _M_value = __i; + } +#endif + + _GLIBCXX_CONSTEXPR + complex(const complex<float>& __z) + : _M_value(__z.__rep()) + { } + + _GLIBCXX_CONSTEXPR + complex(const complex<double>& __z) + : _M_value(__z.__rep()) + { } + + _GLIBCXX_CONSTEXPR + complex(const complex<long double>& __z) + : _M_value(__z.__rep()) + { } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) + constexpr __float128 + real() const + { return __real__ _M_value; } + + __attribute ((__abi_tag__ ("cxx11"))) + constexpr __float128 + imag() const + { return __imag__ _M_value; } +#else + __float128& + real() + { return __real__ _M_value; } + + const __float128& + real() const + { return __real__ _M_value; } + + __float128& + imag() + { return __imag__ _M_value; } + + const __float128& + imag() + const { return __imag__ _M_value; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(__float128 __val) + { __real__ _M_value = __val; } + + void + imag(__float128 __val) + { __imag__ _M_value = __val; } + + complex& + operator=(__float128 __r) + { + _M_value = __r; + return *this; + } + + complex& + operator+=(__float128 __r) + { + _M_value += __r; + return *this; + } + + complex& + operator-=(__float128 __r) + { + _M_value -= __r; + return *this; + } + + complex& + operator*=(__float128 __r) + { + _M_value *= __r; + return *this; + } + + complex& + operator/=(__float128 __r) + { + _M_value /= __r; + return *this; + } + + // The compiler knows how to do this efficiently + // complex& operator=(const complex&); + + template<typename _Tp> + complex& + operator=(const complex<_Tp>& __z) + { + __real__ _M_value = __z.real(); + __imag__ _M_value = __z.imag(); + return *this; + } + + template<typename _Tp> + complex& + operator+=(const complex<_Tp>& __z) + { + __real__ _M_value += __z.real(); + __imag__ _M_value += __z.imag(); + return *this; + } + + template<typename _Tp> + complex& + operator-=(const complex<_Tp>& __z) + { + __real__ _M_value -= __z.real(); + __imag__ _M_value -= __z.imag(); + return *this; + } + + template<typename _Tp> + complex& + operator*=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value *= __t; + return *this; + } + + template<typename _Tp> + complex& + operator/=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value /= __t; + return *this; + } + + _GLIBCXX_CONSTEXPR _ComplexT + __rep() const + { return _M_value; } + + private: + + _ComplexT _M_value; + }; + +#endif // _GLIBCXX_HAVE_FLOAT128_MATH + // These bits have to be at the end of this file, so that the // specializations have all been defined. inline _GLIBCXX_CONSTEXPR @@ -1594,6 +1816,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION complex<double>::complex(const complex<long double>& __z) : _M_value(__z.__rep()) { } +#if _GLIBCXX_HAVE_FLOAT128_MATH + inline _GLIBCXX_CONSTEXPR + complex<float>::complex(const complex<__float128>& __z) + : _M_value(__z.__rep()) { } + + inline _GLIBCXX_CONSTEXPR + complex<double>::complex(const complex<__float128>& __z) + : _M_value(__z.__rep()) { } + + inline _GLIBCXX_CONSTEXPR + complex<long double>::complex(const complex<__float128>& __z) + : _M_value(__z.__rep()) { } +#endif // _GLIBCXX_HAVE_FLOAT128_MATH + // Inhibit implicit instantiations for required instantiations, // which are defined via explicit instantiations elsewhere. // NB: This syntax is a GNU extension. @@ -1604,6 +1840,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION extern template ostream& operator<<(ostream&, const complex<double>&); extern template istream& operator>>(istream&, complex<long double>&); extern template ostream& operator<<(ostream&, const complex<long double>&); +#if _GLIBCXX_HAVE_FLOAT128_MATH + template istream& operator>>(istream&, complex<__float128>&); + template ostream& operator<<(ostream&, const complex<__float128>&); +#endif // _GLIBCXX_HAVE_FLOAT128_MATH #ifdef _GLIBCXX_USE_WCHAR_T extern template wistream& operator>>(wistream&, complex<float>&); @@ -1612,8 +1852,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION extern template wostream& operator<<(wostream&, const complex<double>&); extern template wistream& operator>>(wistream&, complex<long double>&); extern template wostream& operator<<(wostream&, const complex<long double>&); -#endif -#endif +#endif // _GLIBCXX_USE_WCHAR_T +#endif // _GLIBCXX_EXTERN_TEMPLATE // @} group complex_numbers @@ -1688,11 +1928,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_acos(const __complex__ long double& __z) { return __builtin_cacosl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_acos(const __complex128& __z) { return cacosq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline std::complex<_Tp> @@ -1730,11 +1970,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_asin(const __complex__ long double& __z) { return __builtin_casinl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_asin(const __complex128& __z) { return casinq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline std::complex<_Tp> @@ -1780,11 +2020,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_atan(const __complex__ long double& __z) { return __builtin_catanl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_atan(const __complex128& __z) { return catanq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline std::complex<_Tp> @@ -1822,11 +2062,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_acosh(const __complex__ long double& __z) { return __builtin_cacoshl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_acosh(const __complex128& __z) { return cacoshq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline std::complex<_Tp> @@ -1867,11 +2107,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_asinh(const __complex__ long double& __z) { return __builtin_casinhl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_asinh(const __complex128& __z) { return casinhq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline std::complex<_Tp> @@ -1917,11 +2157,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_atanh(const __complex__ long double& __z) { return __builtin_catanhl(__z); } -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +#if _GLIBCXX_HAVE_FLOAT128_MATH inline __complex128 __complex_atanh(const __complex128& __z) { return catanhq(__z); } -#endif // __STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128 +#endif // _GLIBCXX_HAVE_FLOAT128_MATH template<typename _Tp> inline std::complex<_Tp> @@ -2030,6 +2270,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __complex_proj(const __complex__ long double& __z) { return __builtin_cprojl(__z); } +#if _GLIBCXX_HAVE_FLOAT128_MATH + inline __complex128 + __complex_proj(const __complex128& __z) + { return cprojq(__z); } +#endif // _GLIBCXX_HAVE_FLOAT128_MATH + template<typename _Tp> inline std::complex<_Tp> proj(const std::complex<_Tp>& __z) @@ -2091,6 +2337,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION operator""il(unsigned long long __num) { return std::complex<long double>{0.0L, static_cast<long double>(__num)}; } +#if _GLIBCXX_HAVE_FLOAT128_MATH + inline std::complex<__float128> + operator""iq(const char* __str) + { return complex<__float128>(0.0Q, strtoflt128(__str, 0)); } + + constexpr std::complex<__float128> + operator""iq(unsigned long long __num) + { return std::complex<__float128>{0.0L, static_cast<__float128>(__num)}; } +#endif // _GLIBCXX_HAVE_FLOAT128_MATH + _GLIBCXX_END_NAMESPACE_VERSION } // inline namespace complex_literals } // inline namespace literals @@ -2101,6 +2357,4 @@ _GLIBCXX_END_NAMESPACE_VERSION #endif // C++11 -#include <bits/complex128.h> - #endif /* _GLIBCXX_COMPLEX */ |