a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
gslpp::vector< double > Class Template Reference

A class for constructing and defining operations on real vectors. More...

#include <gslpp_vector_double.h>

Detailed Description

template<>
class gslpp::vector< double >

A class for constructing and defining operations on real vectors.

Author
HEPfit Collaboration

This class defines some common operations on real vectors using the GSL.

Definition at line 33 of file gslpp_vector_double.h.

Public Member Functions

gsl_vector & as_gsl_type ()
 
const gsl_vector & as_gsl_type () const
 
gsl_vector * as_gsl_type_ptr () const
 
double max () const
 
double min () const
 
double mod () const
 
bool operator!= (const vector< double > &a) const
 
double & operator() (const size_t &i)
 
const double & operator() (const size_t &i) const
 
vector< complexoperator* (const complex &z) const
 
vector< double > operator* (const double &a) const
 
complex operator* (const vector< complex > &v) const
 
double operator* (const vector< double > &v) const
 
vector< double > & operator*= (const double &a)
 
vector< complexoperator+ (const complex &z) const
 
vector< double > operator+ (const double &a) const
 
vector< complexoperator+ (const vector< complex > &v) const
 
vector< double > operator+ (const vector< double > &v) const
 
vector< double > & operator+= (const double &a)
 
vector< double > & operator+= (const vector< double > &v)
 
vector< double > operator- () const
 
vector< complexoperator- (const complex &z) const
 
vector< double > operator- (const double &a) const
 
vector< complexoperator- (const vector< complex > &v) const
 
vector< double > operator- (const vector< double > &v) const
 
vector< double > & operator-= (const double &a)
 
vector< double > & operator-= (const vector< double > &v)
 
vector< complexoperator/ (const complex &z) const
 
vector< double > operator/ (const double &a) const
 
vector< double > & operator/= (const double &a)
 
vector< double > & operator= (const vector< double > &v)
 
bool operator== (const vector< double > &a) const
 
void reset ()
 
size_t size () const
 
 vector (const gsl_vector &v)
 
 vector (const gsl_vector *v)
 
 vector (const size_t &size)
 
 vector (const size_t &size, const double &a)
 
 vector (const vector< double > &v)
 
 ~vector ()
 

Private Attributes

gsl_vector * _vector
 

Friends

std::ostream & operator<< (std::ostream &output, const vector< double > &v)
 
Operations on vector<double>
vector< double > operator+ (const double &a, vector< double > v)
 
vector< double > operator- (const double &a, vector< double > v)
 
vector< double > operator* (const double &a, vector< double > v)
 
vector< complexoperator+ (const complex &z, vector< double > v)
 
vector< complexoperator- (const complex &z, vector< double > v)
 
vector< complexoperator* (const complex &z, vector< double > v)
 

Constructor & Destructor Documentation

◆ vector() [1/5]

gslpp::vector< double >::vector ( const size_t &  size)

Constructor

Definition at line 29 of file gslpp_vector_double.cpp.

30  {
31  _vector = gsl_vector_alloc(size);
32  gsl_vector_set_all(_vector, 0.);
33  }

◆ vector() [2/5]

gslpp::vector< double >::vector ( const size_t &  size,
const double &  a 
)

Constructor

Definition at line 23 of file gslpp_vector_double.cpp.

24  {
25  _vector = gsl_vector_alloc(size);
26  gsl_vector_set_all(_vector, a);
27  }

◆ vector() [3/5]

gslpp::vector< double >::vector ( const vector< double > &  v)

Copy constructor

Definition at line 36 of file gslpp_vector_double.cpp.

37  {
38  _vector = gsl_vector_alloc(v.size());
39  gsl_vector_memcpy(_vector, v.as_gsl_type_ptr());
40  }

◆ vector() [4/5]

gslpp::vector< double >::vector ( const gsl_vector< double > &  v)

Definition at line 42 of file gslpp_vector_double.cpp.

43  {
44  _vector = gsl_vector_alloc(v.size);
45  gsl_vector_memcpy(_vector, &v);
46  }

◆ vector() [5/5]

gslpp::vector< double >::vector ( const gsl_vector< double > *  v)

Definition at line 48 of file gslpp_vector_double.cpp.

49  {
50  _vector = gsl_vector_alloc(v->size);
51  gsl_vector_memcpy(_vector, v);
52  }

◆ ~vector()

gslpp::vector< double >::~vector ( )

Destructor

Definition at line 55 of file gslpp_vector_double.cpp.

56  {
57  gsl_vector_free(_vector);
58  }

Member Function Documentation

◆ as_gsl_type() [1/2]

gsl_vector & gslpp::vector< double >::as_gsl_type ( )

Definition at line 117 of file gslpp_vector_double.cpp.

118  {
119  return const_cast<gsl_vector&>(*_vector);
120  }

◆ as_gsl_type() [2/2]

const gsl_vector & gslpp::vector< double >::as_gsl_type ( ) const

Definition at line 122 of file gslpp_vector_double.cpp.

123  {
124  return const_cast<gsl_vector&>(*_vector);
125  }

◆ as_gsl_type_ptr()

gsl_vector * gslpp::vector< double >::as_gsl_type_ptr ( ) const

Conversion

Definition at line 112 of file gslpp_vector_double.cpp.

113  {
114  return _vector;
115  }

◆ max()

double gslpp::vector< double >::max ( ) const

Get max element

Definition at line 100 of file gslpp_vector_double.cpp.

101  {
102  return gsl_vector_max(_vector);
103  }

◆ min()

double gslpp::vector< double >::min ( ) const

Get min element

Definition at line 106 of file gslpp_vector_double.cpp.

107  {
108  return gsl_vector_min(_vector);
109  }

◆ mod()

double gslpp::vector< double >::mod ( ) const

Get Euclidean norm

Definition at line 94 of file gslpp_vector_double.cpp.

95  {
96  return gsl_blas_dnrm2(_vector);
97  }

◆ operator!=()

bool gslpp::vector< double >::operator!= ( const vector< double > &  a) const
inline

Definition at line 110 of file gslpp_vector_double.h.

111  {
112  return(!(*this == a));
113  }

◆ operator()() [1/2]

double & gslpp::vector< double >::operator() ( const size_t &  i)

Set i-th element

Definition at line 68 of file gslpp_vector_double.cpp.

69  {
70  double *x = gsl_vector_ptr(_vector, i);
71  return *x;
72  }

◆ operator()() [2/2]

const double & gslpp::vector< double >::operator() ( const size_t &  i) const

Get i-th element

Definition at line 61 of file gslpp_vector_double.cpp.

62  {
63  const double *x = gsl_vector_const_ptr(_vector, i);
64  return *x;
65  }

◆ operator*() [1/4]

vector< complex > gslpp::vector< double >::operator* ( const complex z) const

Multiplication operator (complex)

Definition at line 290 of file gslpp_vector_double.cpp.

291  {
292  vector<complex> v1(*this);
293  return v1*z;
294  }

◆ operator*() [2/4]

vector< double > gslpp::vector< double >::operator* ( const double &  a) const

Multiplication operator (double)

Definition at line 232 of file gslpp_vector_double.cpp.

233  {
234  vector<double> v1(_vector);
235  if (gsl_vector_scale(v1.as_gsl_type_ptr(), a))
236  {
237  std::cout << "\n Error in vector<double> * (double)" << std::endl;
238  exit(EXIT_FAILURE);
239  }
240  return v1;
241  }

◆ operator*() [3/4]

complex gslpp::vector< double >::operator* ( const vector< complex > &  v) const

Definition at line 183 of file gslpp_vector_double.cpp.

184  {
185  vector<complex> v1(_vector);
186  return v*(*this);
187  }

◆ operator*() [4/4]

double gslpp::vector< double >::operator* ( const vector< double > &  v) const

Scalar product operator (vector)

Definition at line 172 of file gslpp_vector_double.cpp.

173  {
174  double a=0.;
175  vector<double> v1(_vector);
176  if(gsl_blas_ddot(v1.as_gsl_type_ptr(), v.as_gsl_type_ptr(), &a))
177  {
178  std::cout << "\n Error in vector<double> *" << std::endl;
179  exit(EXIT_FAILURE);
180  }
181  return a;
182  }

◆ operator*=()

vector< double > & gslpp::vector< double >::operator*= ( const double &  a)

Multiplication assignment (double)

Definition at line 266 of file gslpp_vector_double.cpp.

267  {
268  *this = (*this) * a;
269  return *this;
270  }

◆ operator+() [1/4]

vector< complex > gslpp::vector< double >::operator+ ( const complex z) const

Addition operator (complex)

Definition at line 278 of file gslpp_vector_double.cpp.

279  {
280  vector<complex> v1(*this);
281  return v1+z;
282  }

◆ operator+() [2/4]

vector< double > gslpp::vector< double >::operator+ ( const double &  a) const

Addition operator (double)

Definition at line 210 of file gslpp_vector_double.cpp.

211  {
212  vector<double> v1(_vector);
213  if (gsl_vector_add_constant(v1.as_gsl_type_ptr(), a))
214  {
215  std::cout << "\n Error in vector<double> + (double)" << std::endl;
216  exit(EXIT_FAILURE);
217  }
218  return v1;
219  }

◆ operator+() [3/4]

vector< complex > gslpp::vector< double >::operator+ ( const vector< complex > &  v) const

Definition at line 150 of file gslpp_vector_double.cpp.

151  {
152  vector<complex> v1(_vector);
153  return v1 + v;
154  }

◆ operator+() [4/4]

vector< double > gslpp::vector< double >::operator+ ( const vector< double > &  v) const

Addition operator (vector)

Definition at line 140 of file gslpp_vector_double.cpp.

141  {
142  vector<double> v1(_vector);
143  if (gsl_vector_add(v1.as_gsl_type_ptr(), v.as_gsl_type_ptr()))
144  {
145  std::cout << "\n Error in vector<double> +" << std::endl;
146  exit(EXIT_FAILURE);
147  }
148  return v1;
149  }

◆ operator+=() [1/2]

vector< double > & gslpp::vector< double >::operator+= ( const double &  a)

Addition assignment (double)

Definition at line 254 of file gslpp_vector_double.cpp.

255  {
256  *this = *this + a;
257  return *this;
258  }

◆ operator+=() [2/2]

vector< double > & gslpp::vector< double >::operator+= ( const vector< double > &  v)

Vector product operator Addition assignment (vector)

Vector product operator (vector) Addition assignment (vector)

Definition at line 197 of file gslpp_vector_double.cpp.

198  {
199  *this = *this + v;
200  return *this;
201  }

◆ operator-() [1/5]

vector< double > gslpp::vector< double >::operator- ( ) const

Unary minus (vector)

Unary minus

Definition at line 128 of file gslpp_vector_double.cpp.

129  {
130  vector<double> v1(_vector);
131  if (gsl_vector_scale(v1.as_gsl_type_ptr(), -1.))
132  {
133  std::cout << "\n Error in vector<double> unary -" << std::endl;
134  exit(EXIT_FAILURE);
135  }
136  return v1;
137  }

◆ operator-() [2/5]

vector< complex > gslpp::vector< double >::operator- ( const complex z) const

Subtraction assignment (complex)

Subtraction operator (complex)

Definition at line 284 of file gslpp_vector_double.cpp.

285  {
286  vector<complex> v1(*this);
287  return v1-z;
288  }

◆ operator-() [3/5]

vector< double > gslpp::vector< double >::operator- ( const double &  a) const

Subtraction assignment (double)

Subtraction operator (double)

Definition at line 221 of file gslpp_vector_double.cpp.

222  {
223  vector<double> v1(_vector);
224  if (gsl_vector_add_constant(v1.as_gsl_type_ptr(), -a))
225  {
226  std::cout << "\n Error in vector<double> - (double)" << std::endl;
227  exit(EXIT_FAILURE);
228  }
229  return v1;
230  }

◆ operator-() [4/5]

vector< complex > gslpp::vector< double >::operator- ( const vector< complex > &  v) const

Definition at line 166 of file gslpp_vector_double.cpp.

167  {
168  vector<complex> v1(_vector);
169  return v1-v;
170  }

◆ operator-() [5/5]

vector< double > gslpp::vector< double >::operator- ( const vector< double > &  v) const

Subtraction operator (vector)

Definition at line 156 of file gslpp_vector_double.cpp.

157  {
158  vector<double> v1(_vector);
159  if (gsl_vector_sub(v1.as_gsl_type_ptr(), v.as_gsl_type_ptr()))
160  {
161  std::cout << "\n Error in vector<double> -" << std::endl;
162  exit(EXIT_FAILURE);
163  }
164  return v1;
165  }

◆ operator-=() [1/2]

vector< double > & gslpp::vector< double >::operator-= ( const double &  a)

Subtraction assignment (double)

Definition at line 260 of file gslpp_vector_double.cpp.

261  {
262  *this = *this - a;
263  return *this;
264  }

◆ operator-=() [2/2]

vector< double > & gslpp::vector< double >::operator-= ( const vector< double > &  v)

Subtraction assignment (vector)

Definition at line 203 of file gslpp_vector_double.cpp.

204  {
205  *this = *this - v;
206  return *this;
207  }

◆ operator/() [1/2]

vector< complex > gslpp::vector< double >::operator/ ( const complex z) const

Division operator (complex)

Definition at line 296 of file gslpp_vector_double.cpp.

297  {
298  vector<complex> v1(*this);
299  return v1/z;
300  }

◆ operator/() [2/2]

vector< double > gslpp::vector< double >::operator/ ( const double &  a) const

Division operator (double)

Definition at line 243 of file gslpp_vector_double.cpp.

244  {
245  vector<double> v1(_vector);
246  if (gsl_vector_scale(v1.as_gsl_type_ptr(), 1./a))
247  {
248  std::cout << "\n Error in vector<double> / (double)" << std::endl;
249  exit(EXIT_FAILURE);
250  }
251  return v1;
252  }

◆ operator/=()

vector< double > & gslpp::vector< double >::operator/= ( const double &  a)

Division assignment (double)

Definition at line 272 of file gslpp_vector_double.cpp.

273  {
274  *this = *this / a;
275  return *this;
276  }

◆ operator=()

vector< double > & gslpp::vector< double >::operator= ( const vector< double > &  v)

Definition at line 81 of file gslpp_vector_double.cpp.

82  {
83  gsl_vector_memcpy(_vector, v.as_gsl_type_ptr());
84  return *this;
85  }

◆ operator==()

bool gslpp::vector< double >::operator== ( const vector< double > &  a) const

Comparison == (vector)

Definition at line 302 of file gslpp_vector_double.cpp.

303  {
304  if(a.size() != size())
305  {
306  std::cout << "\n Error in vector<double>::operator== (vector): cannot compare vectors of different size" << std::endl;
307  exit(EXIT_FAILURE);
308  }
309  for(size_t i = 0; i < size(); i++)
310  if(a(i) != (*this)(i)) return(false);
311  return(true);
312  }

◆ reset()

void gslpp::vector< double >::reset ( )

Assign

Definition at line 75 of file gslpp_vector_double.cpp.

76  {
77  gsl_vector_set_zero(_vector);
78  }

◆ size()

size_t gslpp::vector< double >::size ( ) const

Get vector size

Definition at line 88 of file gslpp_vector_double.cpp.

89  {
90  return _vector->size;
91  }

Friends And Related Function Documentation

◆ operator* [1/2]

vector<complex> operator* ( const complex z,
vector< double >  v 
)
friend

Multiply a complex number by a real vector

Parameters
zComplex number
vReal vector
Returns
\( z*v \)

Definition at line 350 of file gslpp_vector_double.cpp.

351  {
352  return v*z;
353  }

◆ operator* [2/2]

vector<double> operator* ( const double &  a,
vector< double >  v 
)
friend

Multiply a real number by real vector

Parameters
aReal number
vReal vector
Returns
\( a*v \)

Definition at line 335 of file gslpp_vector_double.cpp.

336  {
337  return v*a;
338  }

◆ operator+ [1/2]

vector<complex> operator+ ( const complex z,
vector< double >  v 
)
friend

Add a complex number to a real vector

Parameters
zComplex number
vReal vector
Returns
\( z + v \)

Definition at line 340 of file gslpp_vector_double.cpp.

341  {
342  return v+z;
343  }

◆ operator+ [2/2]

vector<double> operator+ ( const double &  a,
vector< double >  v 
)
friend

Add a real number to a real vector

Parameters
aReal number
vReal vector
Returns
\( a + v \)

Definition at line 325 of file gslpp_vector_double.cpp.

326  {
327  return v+a;
328  }

◆ operator- [1/2]

vector<complex> operator- ( const complex z,
vector< double >  v 
)
friend

Subtract a complex number from a real vector

Parameters
zComplex number
vReal vector
Returns
\( z - v \)

Definition at line 345 of file gslpp_vector_double.cpp.

346  {
347  return -v+z;
348  }

◆ operator- [2/2]

vector<double> operator- ( const double &  a,
vector< double >  v 
)
friend

Subtract a real number from a real vector

Parameters
aReal number
vReal vector
Returns
\( a - v \)

Definition at line 330 of file gslpp_vector_double.cpp.

331  {
332  return -v+a;
333  }

◆ operator<<

std::ostream& operator<< ( std::ostream &  output,
const vector< double > &  v 
)
friend

friend functions

Definition at line 315 of file gslpp_vector_double.cpp.

316  {
317  size_t i;
318  output << "(";
319  for (i=0; i<v.size()-1; i++)
320  output << v(i) << ",";
321  output << v(i) << ")";
322  return output;
323  }

Member Data Documentation

◆ _vector

gsl_vector* gslpp::vector< double >::_vector
private

Definition at line 35 of file gslpp_vector_double.h.


The documentation for this class was generated from the following files:
gslpp::vector< double >::size
size_t size() const
Definition: gslpp_vector_double.cpp:88
gslpp::vector< double >::_vector
gsl_vector * _vector
Definition: gslpp_vector_double.h:35