78 #ifndef SLIP_COMPLEX_CAST_HPP
79 #define SLIP_COMPLEX_CAST_HPP
83 #if __cplusplus <= 199711L //if < C++11
87 inline int conj (
const int arg) {
return arg;}
88 inline unsigned conj (
const unsigned arg) {
return arg;}
89 inline long conj (
const long arg) {
return arg;}
90 inline short conj (
const short arg) {
return arg;}
91 inline char conj (
const char arg) {
return arg;}
92 inline float conj (
const float arg) {
return arg;}
93 inline double conj (
const double arg) {
return arg;}
94 inline long double conj (
const long double arg) {
return arg;}
96 inline int real (
const int d) {
return d; }
97 inline unsigned real (
const unsigned d) {
return d; }
98 inline float real (
const float d) {
return d; }
99 inline double real (
const double d) {
return d; }
100 inline long double real (
const long double d) {
return d; }
102 inline int imag (
const int d) {
return 0; }
103 inline unsigned imag (
const unsigned d) {
return 0; }
104 inline float imag (
const float d) {
return 0.0f; }
105 inline double imag (
const double d) {
return 0.0; }
106 inline long double imag (
const long double d) {
return 0.0; }
108 inline int norm (
const int arg) {
return arg;}
109 inline unsigned norm (
const unsigned arg) {
return arg;}
110 inline long norm (
const long arg) {
return arg;}
111 inline short norm (
const short arg) {
return arg;}
112 inline char norm (
const char arg) {
return arg;}
113 inline float norm (
const float arg) {
return arg;}
114 inline double norm (
const double arg) {
return arg;}
115 inline long double norm (
const long double arg) {
return arg;}
117 #endif //__cplusplus <= 199711L (<c++11)
119 #if __cplusplus <= 199711L //if < C++11
122 inline int conj (
const int arg) {
return arg;}
123 inline unsigned conj (
const unsigned arg) {
return arg;}
124 inline long conj (
const long arg) {
return arg;}
125 inline short conj (
const short arg) {
return arg;}
126 inline char conj (
const char arg) {
return arg;}
127 inline float conj (
const float arg) {
return arg;}
128 inline double conj (
const double arg) {
return arg;}
129 inline long double conj (
const long double arg) {
return arg;}
130 template <
typename T>
131 inline std::complex<T>
conj(
const std::complex<T>& arg) {
return std::conj(arg);}
137 inline int conj (
const int arg) {
return std::real(
std::conj(arg));}
138 inline unsigned conj (
const unsigned arg) {
return std::real(
std::conj(arg));}
139 inline long conj (
const long arg) {
return std::real(
std::conj(arg));}
140 inline short conj (
const short arg) {
return std::real(
std::conj(arg));}
141 inline char conj (
const char arg) {
return std::real(
std::conj(arg));}
142 inline float conj (
const float arg) {
return std::real(
std::conj(arg));}
143 inline double conj (
const double arg) {
return std::real(
std::conj(arg));}
144 inline long double conj (
const long double arg) {
return std::real(
std::conj(arg));}
145 template <
typename T>
146 inline std::complex<T>
conj(
const std::complex<T>& arg) {
return std::conj(arg);}
148 #endif //__cplusplus <= 199711L (<c++11)
159 struct less<std::complex<_Tp> >
162 operator()(
const std::complex<_Tp>& __x,
const std::complex<_Tp>& __y)
const
163 {
return std::norm(__x) < std::norm(__y); }
168 struct greater<std::complex<_Tp> >
171 operator()(
const std::complex<_Tp>& __x,
const std::complex<_Tp>& __y)
const
172 {
return std::norm(__x) > std::norm(__y); }
bool operator()(const std::complex< _Tp > &__x, const std::complex< _Tp > &__y) const
std::complex< T > conj(const std::complex< T > &arg)
bool operator()(const std::complex< _Tp > &__x, const std::complex< _Tp > &__y) const