18 #ifndef INCLUDED_COMPLEXH
19 #define INCLUDED_COMPLEXH
21 #define COMPLEX complex<double>
27 template<
class T>
struct Scl;
57 static inline void assign(
double &
a,
const complex<double> & b)
66 static inline void assign(complex<int> &
a,
const complex<int> & b)
68 static inline int absolute(
const complex<int> &
a);
73 template <
class T>
struct RealOf<complex<T> > {
75 static inline void assign(complex<T> &
a,
const complex<T> & b)
77 static inline double absolute(
const complex<T> &
a);
81 #if 0//def _SCL_MPF_H_
83 typedef __mpf_struct MP_FLOAT;
84 template<
class T>
struct Scl;
112 template <
class T>
inline void __div_1(T&
a, T& b,
const T&
c,
const T& d)
123 inline complex<Scl<MP_FLOAT> >& complex<Scl<MP_FLOAT> >::operator /=(
const complex<Scl<MP_FLOAT> > &
y) {
128 template<>
inline complex<Scl<MP_FLOAT> >
pow(
const complex<
Scl<MP_FLOAT> >& z,
int k) {
129 double mod =
sqrt(norm(complex<double>(ToDouble(z.real()),ToDouble(z.imag()))));
134 return complex<Scl<MP_FLOAT> >(z.real(),
Scl<MP_FLOAT>(-1.0*ToDouble(z.imag())/mod));
136 double argument = k * arg(complex<double>(ToDouble(z.real()),ToDouble(z.imag())));
138 return complex<Scl<MP_FLOAT> > (mod*cos(argument), mod*sin(argument));
142 inline complex<Scl<MP_FLOAT> >
145 return complex<Scl<MP_FLOAT> >(
x.real()/d,
x.imag()/d); }
147 inline complex<Scl<MP_FLOAT> >
149 complex<Scl<MP_FLOAT> > res(
x);
151 return complex<Scl<MP_FLOAT> >(res.real(),res.imag()); }
153 ostream & operator<<(ostream & os, const complex<Scl<MP_FLOAT> > & z){
154 os<<
"("<< z.real()<<
","<<z.imag()<<
")";
161 c = complex<T>(cos(8.0*atan(1.0)/n), sin(8.0*atan(1.0)/n));
164 template<
class T>
inline complex<T>
pow(
const complex<T>& z,
int k) {
165 T mod =
sqrt(norm(z));
166 if (k == 0)
return complex<T> (1, T(0));
169 return complex<T>(z.real(), -(z.imag())/mod);
171 double argument = k * arg(z);
173 return complex<T> (mod*cos(argument), mod*sin(argument));
184 #endif // // !INCLUDED_COMPLEXH
static double absolute(const double &a)
Definition: RealOf.hpp:59
static void assign(complex< T > &a, const complex< T > &b)
Definition: RealOf.hpp:75
Scl< T > & operator/(const Scl< T > &b1, const Scl< T > &b2)
Definition: BC.hpp:890
MSKcallbackcodee MSKsoltypee MSKprostae MSKsolstae MSKstakeye MSKstakeye MSKstakeye MSKrealt MSKrealt MSKrealt * y
Definition: mosek.h:2689
static void assign(complex< int > &a, const complex< int > &b)
Definition: RealOf.hpp:66
MSKaccmodee MSKint32t MSKsoltypee MSKstakeye MSKrealt * x
Definition: mosek.h:3209
double TYPE
Definition: RealOf.hpp:56
Definition: Complex.hpp:24
MSKint32t k
Definition: mosek.h:2713
Definition: Complex.hpp:26
Warning_Value_Type_Not_Defined TYPE
Definition: RealOf.hpp:51
void Root_Unity(complex< T > &c, int n)
Definition: RealOf.hpp:160
Scl< T > & sqrt(const Scl< T > &b)
Definition: BC.hpp:1103
MSKrealt * c
Definition: mosek.h:2678
int TYPE
Definition: RealOf.hpp:65
#define abs(x)
Definition: f2c.H:161
MSKrescodee r
Definition: mosek.h:2321
T TYPE
Definition: RealOf.hpp:74
MSKstreamtypee MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t a
Definition: mosek.h:3833
Definition: RealOf.hpp:50
complex< T > pow(const complex< T > &z, int k)
Definition: RealOf.hpp:164
static void assign(double &a, const complex< double > &b)
Definition: RealOf.hpp:57
void __div_1(T &a, T &b, const T &c, const T &d)
Definition: Complex.hpp:66