OLD | NEW |
| (Empty) |
1 // TR1 complex -*- C++ -*- | |
2 | |
3 // Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. | |
4 // | |
5 // This file is part of the GNU ISO C++ Library. This library is free | |
6 // software; you can redistribute it and/or modify it under the | |
7 // terms of the GNU General Public License as published by the | |
8 // Free Software Foundation; either version 3, or (at your option) | |
9 // any later version. | |
10 | |
11 // This library is distributed in the hope that it will be useful, | |
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 // GNU General Public License for more details. | |
15 | |
16 // Under Section 7 of GPL version 3, you are granted additional | |
17 // permissions described in the GCC Runtime Library Exception, version | |
18 // 3.1, as published by the Free Software Foundation. | |
19 | |
20 // You should have received a copy of the GNU General Public License and | |
21 // a copy of the GCC Runtime Library Exception along with this program; | |
22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
23 // <http://www.gnu.org/licenses/>. | |
24 | |
25 /** @file tr1/complex | |
26 * This is a TR1 C++ Library header. | |
27 */ | |
28 | |
29 #ifndef _GLIBCXX_TR1_COMPLEX | |
30 #define _GLIBCXX_TR1_COMPLEX 1 | |
31 | |
32 #pragma GCC system_header | |
33 | |
34 #if defined(_GLIBCXX_INCLUDE_AS_CXX0X) | |
35 # error TR1 header cannot be included from C++0x header | |
36 #endif | |
37 | |
38 #include <complex> | |
39 | |
40 #if defined(_GLIBCXX_INCLUDE_AS_TR1) | |
41 # include <tr1_impl/complex> | |
42 #else | |
43 # define _GLIBCXX_INCLUDE_AS_TR1 | |
44 # define _GLIBCXX_BEGIN_NAMESPACE_TR1 namespace tr1 { | |
45 # define _GLIBCXX_END_NAMESPACE_TR1 } | |
46 # define _GLIBCXX_TR1 tr1:: | |
47 # include <tr1_impl/complex> | |
48 # undef _GLIBCXX_TR1 | |
49 # undef _GLIBCXX_END_NAMESPACE_TR1 | |
50 # undef _GLIBCXX_BEGIN_NAMESPACE_TR1 | |
51 # undef _GLIBCXX_INCLUDE_AS_TR1 | |
52 #endif | |
53 | |
54 namespace std | |
55 { | |
56 namespace tr1 | |
57 { | |
58 using std::arg; | |
59 using std::conj; | |
60 using std::imag; | |
61 using std::norm; | |
62 using std::polar; | |
63 | |
64 template<typename _Tp, typename _Up> | |
65 inline std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type> | |
66 polar(const _Tp& __rho, const _Up& __theta) | |
67 { | |
68 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; | |
69 return std::polar(__type(__rho), __type(__theta)); | |
70 } | |
71 | |
72 using std::real; | |
73 | |
74 template<typename _Tp> | |
75 inline std::complex<_Tp> | |
76 pow(const std::complex<_Tp>& __x, const _Tp& __y) | |
77 { return std::pow(__x, __y); } | |
78 | |
79 template<typename _Tp> | |
80 inline std::complex<_Tp> | |
81 pow(const _Tp& __x, const std::complex<_Tp>& __y) | |
82 { return std::pow(__x, __y); } | |
83 | |
84 template<typename _Tp> | |
85 inline std::complex<_Tp> | |
86 pow(const std::complex<_Tp>& __x, const std::complex<_Tp>& __y) | |
87 { return std::pow(__x, __y); } | |
88 } | |
89 } | |
90 | |
91 #endif // _GLIBCXX_TR1_COMPLEX | |
OLD | NEW |