diff options
| author | gdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-31 20:49:01 +0000 |
|---|---|---|
| committer | gdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-31 20:49:01 +0000 |
| commit | bea087facd726f1bc5156d41bbec9bac56eb957e (patch) | |
| tree | 0e7cb90e92b3c86d56a1db06106d5ddad0a56cac /libstdc++-v3/include | |
| parent | 0bcef9f8db69d7a20614f48b5984367ee2dfbd47 (diff) | |
| download | ppe42-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')
| -rw-r--r-- | libstdc++-v3/include/bits/std_complex.h | 63 |
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 */ |

