libstdc++
tr1/complex
Go to the documentation of this file.
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
include
tr1
complex
Generated on Thu May 9 2013 11:47:31 for libstdc++ by
1.8.1.2