32 _GLIBCXX_BEGIN_NAMESPACE_TR1
47 #ifdef _GLIBCXX_INCLUDE_AS_CXX0X
54 template<
typename _Tp>
59 const _Tp __pi_2 = 1.5707963267948966192313216916397514L;
63 #if _GLIBCXX_USE_C99_COMPLEX_TR1
64 inline __complex__
float
65 __complex_acos(__complex__
float __z)
66 {
return __builtin_cacosf(__z); }
68 inline __complex__
double
69 __complex_acos(__complex__
double __z)
70 {
return __builtin_cacos(__z); }
72 inline __complex__
long double
73 __complex_acos(
const __complex__
long double& __z)
74 {
return __builtin_cacosl(__z); }
76 template<
typename _Tp>
79 {
return __complex_acos(__z.__rep()); }
84 template<
typename _Tp>
87 {
return __complex_acos(__z); }
90 template<
typename _Tp>
95 __t = std::_GLIBCXX_TR1
asinh(__t);
99 #if _GLIBCXX_USE_C99_COMPLEX_TR1
100 inline __complex__
float
101 __complex_asin(__complex__
float __z)
102 {
return __builtin_casinf(__z); }
104 inline __complex__
double
105 __complex_asin(__complex__
double __z)
106 {
return __builtin_casin(__z); }
108 inline __complex__
long double
109 __complex_asin(
const __complex__
long double& __z)
110 {
return __builtin_casinl(__z); }
112 template<
typename _Tp>
115 {
return __complex_asin(__z.__rep()); }
120 template<
typename _Tp>
123 {
return __complex_asin(__z); }
126 template<
typename _Tp>
130 const _Tp __r2 = __z.real() * __z.real();
131 const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag();
133 _Tp __num = __z.imag() + _Tp(1.0);
134 _Tp __den = __z.imag() - _Tp(1.0);
136 __num = __r2 + __num * __num;
137 __den = __r2 + __den * __den;
140 _Tp(0.25) *
log(__num / __den));
143 #if _GLIBCXX_USE_C99_COMPLEX_TR1
144 inline __complex__
float
145 __complex_atan(__complex__
float __z)
146 {
return __builtin_catanf(__z); }
148 inline __complex__
double
149 __complex_atan(__complex__
double __z)
150 {
return __builtin_catan(__z); }
152 inline __complex__
long double
153 __complex_atan(
const __complex__
long double& __z)
154 {
return __builtin_catanl(__z); }
156 template<
typename _Tp>
159 {
return __complex_atan(__z.__rep()); }
164 template<
typename _Tp>
167 {
return __complex_atan(__z); }
170 template<
typename _Tp>
175 * (__z.real() + __z.imag()) - _Tp(1.0),
176 _Tp(2.0) * __z.real() * __z.imag());
182 #if _GLIBCXX_USE_C99_COMPLEX_TR1
183 inline __complex__
float
184 __complex_acosh(__complex__
float __z)
185 {
return __builtin_cacoshf(__z); }
187 inline __complex__
double
188 __complex_acosh(__complex__
double __z)
189 {
return __builtin_cacosh(__z); }
191 inline __complex__
long double
192 __complex_acosh(
const __complex__
long double& __z)
193 {
return __builtin_cacoshl(__z); }
195 template<
typename _Tp>
198 {
return __complex_acosh(__z.__rep()); }
203 template<
typename _Tp>
206 {
return __complex_acosh(__z); }
209 template<
typename _Tp>
214 * (__z.real() + __z.imag()) + _Tp(1.0),
215 _Tp(2.0) * __z.real() * __z.imag());
221 #if _GLIBCXX_USE_C99_COMPLEX_TR1
222 inline __complex__
float
223 __complex_asinh(__complex__
float __z)
224 {
return __builtin_casinhf(__z); }
226 inline __complex__
double
227 __complex_asinh(__complex__
double __z)
228 {
return __builtin_casinh(__z); }
230 inline __complex__
long double
231 __complex_asinh(
const __complex__
long double& __z)
232 {
return __builtin_casinhl(__z); }
234 template<
typename _Tp>
237 {
return __complex_asinh(__z.__rep()); }
242 template<
typename _Tp>
245 {
return __complex_asinh(__z); }
248 template<
typename _Tp>
252 const _Tp __i2 = __z.imag() * __z.imag();
253 const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real();
255 _Tp __num = _Tp(1.0) + __z.real();
256 _Tp __den = _Tp(1.0) - __z.real();
258 __num = __i2 + __num * __num;
259 __den = __i2 + __den * __den;
262 _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x));
265 #if _GLIBCXX_USE_C99_COMPLEX_TR1
266 inline __complex__
float
267 __complex_atanh(__complex__
float __z)
268 {
return __builtin_catanhf(__z); }
270 inline __complex__
double
271 __complex_atanh(__complex__
double __z)
272 {
return __builtin_catanh(__z); }
274 inline __complex__
long double
275 __complex_atanh(
const __complex__
long double& __z)
276 {
return __builtin_catanhl(__z); }
278 template<
typename _Tp>
281 {
return __complex_atanh(__z.__rep()); }
286 template<
typename _Tp>
289 {
return __complex_atanh(__z); }
292 template<
typename _Tp>
293 #ifdef _GLIBCXX_INCLUDE_AS_CXX0X
305 #if (defined(_GLIBCXX_INCLUDE_AS_CXX0X) \
306 || (defined(_GLIBCXX_INCLUDE_AS_TR1) \
307 && !defined(__GXX_EXPERIMENTAL_CXX0X__)))
309 template<
typename _Tp>
310 inline typename __gnu_cxx::__promote<_Tp>::__type
313 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
317 template<
typename _Tp>
322 template<
typename _Tp>
323 inline typename __gnu_cxx::__promote<_Tp>::__type
327 template<
typename _Tp>
328 inline typename __gnu_cxx::__promote<_Tp>::__type
331 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
332 return __type(__x) * __type(__x);
335 template<
typename _Tp>
336 inline typename __gnu_cxx::__promote<_Tp>::__type
342 template<
typename _Tp,
typename _Up>
346 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
350 template<
typename _Tp,
typename _Up>
354 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
358 template<
typename _Tp,
typename _Up>
362 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
369 _GLIBCXX_END_NAMESPACE_TR1
complex< _Tp > log(const complex< _Tp > &)
Return complex natural logarithm of z.
complex< _Tp > sqrt(const complex< _Tp > &)
Return complex square root of z.
_Tp arg(const complex< _Tp > &)
Return phase angle of z.
complex< _Tp > pow(const complex< _Tp > &, const _Tp &)
Return x to the y'th power.
std::complex< _Tp > asinh(const std::complex< _Tp > &)
asinh(__z) [8.1.6].
std::complex< _Tp > atanh(const std::complex< _Tp > &)
atanh(__z) [8.1.7].
complex< _Tp > conj(const complex< _Tp > &)
Return complex conjugate of z.
_Tp norm(const complex< _Tp > &)
Return z magnitude squared.
_Tp abs(const complex< _Tp > &)
Return magnitude of z.
std::complex< _Tp > acosh(const std::complex< _Tp > &)
acosh(__z) [8.1.5].