10 #ifndef __GSL_BLAS_H__
11 #include <gsl/gsl_blas.h>
13 #ifndef GSLPP_VECTOR_COMPLEX_H
16 #ifndef GSLPP_VECTOR_DOUBLE_H
25 _vector = gsl_vector_complex_alloc(size);
26 gsl_vector_complex_set_all(_vector, z.
as_gsl_type());
32 _vector = gsl_vector_complex_alloc(size);
33 gsl_vector_complex_set_all(_vector, z.
as_gsl_type());
39 _vector = gsl_vector_complex_alloc(v.
size());
47 _vector = gsl_vector_complex_alloc(n);
48 for (i = 0; i < n; i++)
49 gsl_vector_complex_set(_vector, i, v(i) + 0. *
complex::i());
54 _vector = gsl_vector_complex_alloc(v.size);
55 gsl_vector_complex_memcpy(_vector, &v);
60 _vector = gsl_vector_complex_alloc(v->size);
61 gsl_vector_complex_memcpy(_vector, v);
67 gsl_vector_complex_free(_vector);
73 const gsl_complex *x = gsl_vector_complex_const_ptr(_vector, i);
94 gsl_vector_complex_set_all(_vector, z.
as_gsl_type());
101 gsl_complex *x = gsl_vector_complex_ptr(_vector, i);
107 gsl_complex *x = gsl_vector_complex_ptr(_vector, i);
114 return _vector->size;
120 return gsl_blas_dznrm2(_vector);
127 for (
unsigned int i = 0; i < v1.
size(); i++)
128 v1.
assign(i, v1(i).conjugate());
136 gsl_vector_view r = gsl_vector_complex_real(_vector);
144 gsl_vector_view r = gsl_vector_complex_imag(_vector);
157 return const_cast<gsl_vector_complex&
> (*_vector);
162 return const_cast<gsl_vector_complex&
> (*_vector);
178 GSL_SET_COMPLEX(&z1, 1., 0.);
180 std::cout <<
"\n Error in vector<complex> +" << std::endl;
191 GSL_SET_COMPLEX(&z1, -1., 0.);
193 std::cout <<
"\n Error in vector<complex> -" << std::endl;
205 std::cout <<
"\n Error in vector<complex> *" << std::endl;
244 gsl_vector_complex *v2;
245 GSL_SET_COMPLEX(&z1, 1., 0.);
246 v2 = gsl_vector_complex_alloc(v1.
size());
247 gsl_vector_complex_set_all(v2, z1);
249 std::cout <<
"\n Error in vector<complex> + (double)" << std::endl;
252 gsl_vector_complex_free(v2);
261 gsl_vector_complex *v2;
262 GSL_SET_COMPLEX(&z1, -1., 0.);
263 v2 = gsl_vector_complex_alloc(v1.
size());
264 gsl_vector_complex_set_all(v2, z1);
266 std::cout <<
"\n Error in vector<complex> - (double)" << std::endl;
269 gsl_vector_complex_free(v2);
374 std::ostream& operator<<(std::ostream& output, const vector<complex>& v)
378 for (i = 0; i < v.size() - 1; i++)
379 output << v(i) <<
",";
380 output << v(i) <<
")";
complex operator*(const double &x1, const complex &z2)
vector< complex > operator*(const double &a, vector< complex > v)
gsl_complex & as_gsl_type()
static const complex & i()
A class for constructing and defining operations on complex vectors.
void assign(const size_t &i, const complex &z)
complex operator/(const double &x1, const complex &z2)
gsl_vector_complex * as_gsl_type_ptr() const
gsl_complex * as_gsl_type_ptr() const
A class for constructing and defining operations on real vectors.
vector< complex > operator+(const double &a, vector< complex > v)
A base class for defining operations on vectors, both real and complex.
complex operator+(const double &x1, const complex &z2)
A class for defining operations on and functions of complex numbers.
complex operator-(const double &x1, const complex &z2)
Complex number, vector and matrix manipulation using GSL.
vector< complex > operator-(const double &a, vector< complex > v)