summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/include/bits/std_complex.h
diff options
context:
space:
mode:
authorgdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-31 20:49:01 +0000
committergdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-31 20:49:01 +0000
commitbea087facd726f1bc5156d41bbec9bac56eb957e (patch)
tree0e7cb90e92b3c86d56a1db06106d5ddad0a56cac /libstdc++-v3/include/bits/std_complex.h
parent0bcef9f8db69d7a20614f48b5984367ee2dfbd47 (diff)
downloadppe42-gcc-bea087facd726f1bc5156d41bbec9bac56eb957e.tar.gz
ppe42-gcc-bea087facd726f1bc5156d41bbec9bac56eb957e.zip
* include/bits/std_complex.h (norm): Forward declare.
(complex<>): Comment out friend declaration of conj<>. (conj<>): Comment out specialization. (exp, log, log10): Define primary templates. * src/complex.cc (exp<>, log<>, log10<>): Comment out specializations. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37165 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/bits/std_complex.h')
-rw-r--r--libstdc++-v3/include/bits/std_complex.h63
1 files changed, 35 insertions, 28 deletions
diff --git a/libstdc++-v3/include/bits/std_complex.h b/libstdc++-v3/include/bits/std_complex.h
index 576ae86163b..f82deb7b219 100644
--- a/libstdc++-v3/include/bits/std_complex.h
+++ b/libstdc++-v3/include/bits/std_complex.h
@@ -51,6 +51,7 @@ namespace std
template<typename _Tp> _Tp abs(const complex<_Tp>&);
template<typename _Tp> _Tp arg(const complex<_Tp>&);
+ template<typename _Tp> _Tp norm(const complex<_Tp>&);
template<typename _Tp> complex<_Tp> conj(const complex<_Tp>&);
template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp&);
@@ -177,7 +178,8 @@ namespace std
friend class complex<long double>;
// friend float abs<>(const complex<float>&);
- friend complex<float> conj<>(const complex<float>&);
+ //friend complex<float> conj<>(const complex<float>&);
+
friend complex<float> cos<>(const complex<float>&);
friend complex<float> cosh<>(const complex<float>&);
friend complex<float> exp<>(const complex<float>&);
@@ -251,7 +253,7 @@ namespace std
friend class complex<long double>;
// friend double abs<>(const complex<double>&);
- friend complex<double> conj<>(const complex<double>&);
+ // friend complex<double> conj<>(const complex<double>&);
friend complex<double> cos<>(const complex<double>&);
friend complex<double> cosh<>(const complex<double>&);
friend complex<double> exp<>(const complex<double>&);
@@ -326,7 +328,7 @@ namespace std
friend class complex<double>;
// friend long double abs<>(const complex<long double>&);
- friend complex<long double> conj<>(const complex<long double>&);
+ //friend complex<long double> conj<>(const complex<long double>&);
friend complex<long double> cos<>(const complex<long double>&);
friend complex<long double> cosh<>(const complex<long double>&);
friend complex<long double> exp<>(const complex<long double>&);
@@ -939,35 +941,40 @@ namespace std
polar(const _Tp& __rho, const _Tp& __theta)
{ return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); }
- // 26.2.7/6
+// // We use here a few more specializations.
+// template<>
+// inline complex<float>
+// conj(const complex<float> &__x)
+// #ifdef _GLIBCPP_BUGGY_FLOAT_COMPLEX
+// {
+// complex<float> __tmpf(~__x._M_value);
+// return __tmpf;
+// }
+// #else
+// { return complex<float>(~__x._M_value); }
+// #endif
+
+// template<>
+// inline complex<double>
+// conj(const complex<double> &__x)
+// { return complex<double> (~__x._M_value); }
+
+ // Transcendentals:
template<typename _Tp>
inline complex<_Tp>
- conj(const complex<_Tp>& __z)
- { return complex<_Tp>(__z.real(), -__z.imag()); }
-
- // We use here a few more specializations.
- template<>
- inline complex<float>
- conj(const complex<float> &__x)
-#ifdef _GLIBCPP_BUGGY_FLOAT_COMPLEX
- {
- complex<float> __tmpf(~__x._M_value);
- return __tmpf;
- }
-#else
- { return complex<float>(~__x._M_value); }
-#endif
-
- template<>
- inline complex<double>
- conj(const complex<double> &__x)
- { return complex<double> (~__x._M_value); }
+ exp(const complex<_Tp>& __z)
+ { return polar(exp(__z.real()), __z.imag()); }
- template<>
- inline complex<long double>
- conj(const complex<long double> &__x)
- { return complex<long double> (~__x._M_value); }
+ template<typename _Tp>
+ inline complex<_Tp>
+ log(const complex<_Tp>& __z)
+ { return complex<_Tp>(log(abs(__z)), arg(__z)); }
+ template<typename _Tp>
+ inline complex<_Tp>
+ log10(const complex<_Tp>& __z)
+ { return log(__z) / log(_Tp(10.0)); }
+
} // namespace std
#endif /* _CPP_COMPLEX */
OpenPOWER on IntegriCloud