a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
gslpp_vector_complex.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 HEPfit Collaboration
3  *
4  *
5  * For the licensing terms see doc/COPYING.
6  */
7 
8 #ifndef GSLPP_VECTOR_COMPLEX_H
9 #define GSLPP_VECTOR_COMPLEX_H
10 #include <iostream>
11 #ifndef __GSL_VECTOR_COMPLEX_DOUBLE_H__
12 #include <gsl/gsl_vector_complex_double.h>
13 #endif
14 #ifndef GSLPP_COMPLEX_H
15 #include "gslpp_complex.h"
16 #endif
17 #ifndef GSLPP_VECTOR_BASE_H
18 #include "gslpp_vector_base.h"
19 #endif
20 
21 namespace gslpp
22 {
32  template <>
33  class vector<complex>
34  {
35  gsl_vector_complex *_vector;
36 
37  public:
39  vector(const size_t& size, const complex& z);
40  vector(const size_t& size, const double& a);
42  vector(const vector<complex>& v);
43  vector(const vector<double>& v);
44  vector(const gsl_vector_complex& v);
45  vector(const gsl_vector_complex* v);
47  ~vector();
49  const complex operator()(const size_t& i) const;
51 // complex& operator()(const size_t& i);
53  vector<complex>& operator=(const vector<complex>& v);
54  vector<complex>& operator=(double a);
56  void reset();
57  void assign(const size_t& i, const complex& z);
58  void assign(const size_t& i, const double& a);
60  size_t size() const;
62  double mod() const;
64  vector<complex> conjugate() const;
66  vector<double> real() const;
68  vector<double> imag() const;
70  gsl_vector_complex* as_gsl_type_ptr() const;
71  gsl_vector_complex& as_gsl_type();
72  const gsl_vector_complex& as_gsl_type() const;
74  vector<complex> operator-() const;
80  complex operator*(const vector<complex>& v) const;
82 // vector<complex> operator^(const vector<complex>& v);
84  vector<complex>& operator+=(const vector<complex>& v);
86  vector<complex>& operator-=(const vector<complex>& v);
92  vector<complex> operator*(const complex& z) const;
94  vector<complex> operator/(const complex& z) const;
96  vector<complex>& operator+=(const complex& z);
98  vector<complex>& operator-=(const complex& z);
100  vector<complex>& operator*=(const complex& z);
102  vector<complex>& operator/=(const complex& z);
104  vector<complex> operator+(const double& a);
106  vector<complex> operator-(const double& a);
108  vector<complex> operator*(const double& a) const;
110  vector<complex> operator/(const double& a) const;
112  vector<complex>& operator+=(const double& a);
114  vector<complex>& operator-=(const double& a);
116  vector<complex>& operator*=(const double& a);
118  vector<complex>& operator/=(const double& a);
120  bool operator==(const vector<complex>& a) const;
121  bool operator!=(const vector<complex>& a) const
122  {
123  return(!(*this == a));
124  }
125 
127  friend std::ostream& operator<<(std::ostream& output, const vector<complex>& v);
128 
138  friend vector<complex> operator+(const complex& z, vector<complex> v);
139 
146  friend vector<complex> operator-(const complex& z, vector<complex> v);
147 
154  friend vector<complex> operator*(const complex& z, vector<complex> v);
155 
162  friend vector<complex> operator+(const double& a, vector<complex> v);
163 
170  friend vector<complex> operator-(const double& a, vector<complex> v);
171 
178  friend vector<complex> operator*(const double& a, vector<complex> v);
181  };
182 }
183 #endif
gslpp::vector< complex >
A class for constructing and defining operations on complex vectors.
Definition: gslpp_vector_complex.h:33
gslpp::vector< complex >::operator!=
bool operator!=(const vector< complex > &a) const
Definition: gslpp_vector_complex.h:121
gslpp::vector< complex >::_vector
gsl_vector_complex * _vector
Definition: gslpp_vector_complex.h:35
gslpp::complex
A class for defining operations on and functions of complex numbers.
Definition: gslpp_complex.h:35
gslpp::operator+
complex operator+(const double &x1, const complex &z2)
Definition: gslpp_complex.cpp:302
gslpp::vector< double >
A class for constructing and defining operations on real vectors.
Definition: gslpp_vector_double.h:33
gslpp::operator/
complex operator/(const double &x1, const complex &z2)
Definition: gslpp_complex.cpp:320
gslpp::operator<<
std::ostream & operator<<(std::ostream &output, const complex &z)
Definition: gslpp_complex.cpp:143
gslpp_complex.h
gslpp::operator*
complex operator*(const double &x1, const complex &z2)
Definition: gslpp_complex.cpp:314
gslpp_vector_base.h
gslpp
Complex number, vector and matrix manipulation using GSL.
Definition: gslpp_complex.cpp:16
gslpp::vector
A base class for defining operations on vectors, both real and complex.
Definition: gslpp_vector_base.h:21
gslpp::operator-
complex operator-(const double &x1, const complex &z2)
Definition: gslpp_complex.cpp:308