GammaLib 2.1.0.dev
Loading...
Searching...
No Matches
GVector Class Reference

Vector class. More...

#include <GVector.hpp>

Inheritance diagram for GVector:
GBase

Public Member Functions

 GVector (void)
 Void vector constructor.
 
 GVector (const int &num)
 Vector constructor.
 
 GVector (const double &a)
 Single element vector constructor.
 
 GVector (const double &a, const double &b)
 Two elements vector constructor.
 
 GVector (const double &a, const double &b, const double &c)
 Three elements vector constructor.
 
 GVector (const GVector &vector)
 Copy constructor.
 
virtual ~GVector (void)
 Destructor.
 
double & operator[] (const int &index)
 Vector element access operator.
 
const double & operator[] (const int &index) const
 Vector element access operator (const variant)
 
bool operator== (const GVector &vector) const
 Equality operator.
 
bool operator!= (const GVector &vector) const
 Non-equality operator.
 
GVectoroperator= (const GVector &vector)
 Assignment operator.
 
GVectoroperator+= (const GVector &vector)
 Unary addition operator.
 
GVectoroperator-= (const GVector &vector)
 Unary subtraction operator.
 
GVectoroperator*= (const GVector &vector)
 Unary multiplication operator.
 
GVectoroperator/= (const GVector &vector)
 Unary division operator.
 
GVectoroperator= (const double &scalar)
 Scalar assignment operator.
 
GVectoroperator+= (const double &scalar)
 Scalar unary addition operator.
 
GVectoroperator-= (const double &scalar)
 Scalar unary subtraction operator.
 
GVectoroperator*= (const double &scalar)
 Scalar unary multiplication operator.
 
GVectoroperator/= (const double &scalar)
 Scalar unary division operator.
 
GVector operator- (void) const
 Unary minus operator.
 
void clear (void)
 Clear vector.
 
GVectorclone (void) const
 Clone vector.
 
std::string classname (void) const
 Return class name.
 
const int & size (void) const
 Return size of vector.
 
double & at (const int &index)
 Vector element access with range checking.
 
const double & at (const int &index) const
 Vector element access with range checking (const variant)
 
int non_zeros (void) const
 Returns number of non-zero elements in vector.
 
int first_nonzero (void) const
 Return the index of the first non-zero element in a vector.
 
int last_nonzero (void) const
 Return the index of the last non-zero element in a vector.
 
GVector slice (const int &start, const int &stop) const
 Vector slice operator.
 
std::string print (const GChatter &chatter=NORMAL) const
 Print vector information.
 
- Public Member Functions inherited from GBase
virtual ~GBase (void)
 Destructor.
 

Private Member Functions

void init_members (void)
 Initialise class members.
 
void alloc_members (void)
 Allocate vector.
 
void copy_members (const GVector &vector)
 Copy class members.
 
void free_members (void)
 Delete class members.
 

Private Attributes

int m_num
 Number of elements in vector.
 
double * m_data
 Vector array.
 

Friends

GVector cross (const GVector &a, const GVector &b)
 Vector cross product.
 
double operator* (const GVector &a, const GVector &b)
 Vector scalar product.
 
double norm (const GVector &vector)
 Computes vector norm.
 
double min (const GVector &vector)
 Computes minimum vector element.
 
double max (const GVector &vector)
 Computes maximum vector element.
 
double sum (const GVector &vector)
 Computes vector sum.
 
double angle (const GVector &a, const GVector &b)
 Computes angle between vectors.
 
GVector perm (const GVector &vector, const int *p)
 Computes vector permutation.
 
GVector iperm (const GVector &vector, const int *p)
 Computes vector inverse permutation.
 
GVector acos (const GVector &vector)
 Computes arccos of vector elements.
 
GVector acosh (const GVector &vector)
 Computes acosh of vector elements.
 
GVector asin (const GVector &vector)
 Computes arcsin of vector elements.
 
GVector asinh (const GVector &vector)
 Computes asinh of vector elements.
 
GVector atan (const GVector &vector)
 Computes arctan of vector elements.
 
GVector atanh (const GVector &vector)
 Computes atanh of vector elements.
 
GVector cos (const GVector &vector)
 Computes cosine of vector elements.
 
GVector cosh (const GVector &vector)
 Computes cosh of vector elements.
 
GVector exp (const GVector &vector)
 Computes exponential of vector elements.
 
GVector abs (const GVector &vector)
 Computes absolute of vector elements.
 
GVector log (const GVector &vector)
 Computes natural logarithm of vector elements.
 
GVector log10 (const GVector &vector)
 Computes base10 logarithm of vector elements.
 
GVector sin (const GVector &vector)
 Computes sine of vector elements.
 
GVector sinh (const GVector &vector)
 Computes sinh of vector elements.
 
GVector sqrt (const GVector &vector)
 Computes square root of vector elements.
 
GVector tan (const GVector &vector)
 Computes tangens of vector elements.
 
GVector tanh (const GVector &vector)
 Computes tanh of vector elements.
 
GVector pow (const GVector &vector, const double &power)
 Computes tanh of vector elements.
 

Detailed Description

Vector class.

This class implement a double precision floating point vector class that is intended to be used for numerical computation (it is not meant to replace the std::vector template class).

Definition at line 46 of file GVector.hpp.

Constructor & Destructor Documentation

◆ GVector() [1/6]

GVector::GVector ( void )

Void vector constructor.

Definition at line 56 of file GVector.cpp.

References init_members().

Referenced by clone().

◆ GVector() [2/6]

GVector::GVector ( const int & num)
explicit

Vector constructor.

Parameters
[in]numNumber of elements in vector [>=0].
Exceptions
GException::invalid_argumentNumber of elements is negative.

Initialises a vector with num elements. All vector elements will be set to 0.

Definition at line 77 of file GVector.cpp.

References alloc_members(), G_CONSTRUCTOR, init_members(), m_num, and gammalib::str().

◆ GVector() [3/6]

GVector::GVector ( const double & a)
explicit

Single element vector constructor.

Parameters
[in]aVector element.

Initialises a vector with a single element.

Definition at line 111 of file GVector.cpp.

References alloc_members(), init_members(), m_data, and m_num.

◆ GVector() [4/6]

GVector::GVector ( const double & a,
const double & b )
explicit

Two elements vector constructor.

Parameters
[in]aFirst vector element.
[in]bSecond vector element.

Initialises a vector with two elements.

Definition at line 138 of file GVector.cpp.

References alloc_members(), init_members(), m_data, and m_num.

◆ GVector() [5/6]

GVector::GVector ( const double & a,
const double & b,
const double & c )
explicit

Three elements vector constructor.

Parameters
[in]aFirst vector element.
[in]bSecond vector element.
[in]cThird vector element.

Initialises a vector with three elements.

Definition at line 167 of file GVector.cpp.

References alloc_members(), init_members(), m_data, and m_num.

◆ GVector() [6/6]

GVector::GVector ( const GVector & vector)

Copy constructor.

Parameters
[in]vectorVector.

Definition at line 192 of file GVector.cpp.

References copy_members(), and init_members().

◆ ~GVector()

GVector::~GVector ( void )
virtual

Destructor.

Definition at line 208 of file GVector.cpp.

References free_members().

Member Function Documentation

◆ alloc_members()

void GVector::alloc_members ( void )
private

Allocate vector.

Definition at line 778 of file GVector.cpp.

References m_data, and m_num.

Referenced by GVector(), GVector(), GVector(), and GVector().

◆ at() [1/2]

double & GVector::at ( const int & index)

Vector element access with range checking.

Parameters
[in]indexElement index [0,...,size()[.
Exceptions
GException::out_of_rangeElement index is out of range.

Definition at line 590 of file GVector.cpp.

References G_AT, m_data, and size().

◆ at() [2/2]

const double & GVector::at ( const int & index) const

Vector element access with range checking (const variant)

Parameters
[in]indexElement index [0,...,size()[.
Exceptions
GException::out_of_rangeElement index is out of range.

Definition at line 610 of file GVector.cpp.

References G_AT, m_data, and size().

◆ classname()

std::string GVector::classname ( void ) const
inlinevirtual

Return class name.

Returns
String containing the class name ("GVector").

Implements GBase.

Definition at line 138 of file GVector.hpp.

◆ clear()

void GVector::clear ( void )
virtual

Clear vector.

Implements GBase.

Definition at line 557 of file GVector.cpp.

References free_members(), and init_members().

Referenced by GCOMResponse::compute_faq(), GCOMBvc::init_members(), GCOMResponse::init_members(), and GIntegrals::init_members().

◆ clone()

GVector * GVector::clone ( void ) const
virtual

Clone vector.

Returns
Pointer to deep copy of vector.

Implements GBase.

Definition at line 575 of file GVector.cpp.

References GVector().

◆ copy_members()

void GVector::copy_members ( const GVector & vector)
private

Copy class members.

Parameters
[in]vectorVector from which members should be copied.

Definition at line 803 of file GVector.cpp.

References m_data, and m_num.

Referenced by GVector(), and operator=().

◆ first_nonzero()

int GVector::first_nonzero ( void ) const

Return the index of the first non-zero element in a vector.

Returns
Index of first non-zero element in vector.

Returns the index of the first non-zero element. If all elements are zero the method will return -1.

Definition at line 651 of file GVector.cpp.

References m_data, and m_num.

◆ free_members()

void GVector::free_members ( void )
private

Delete class members.

Definition at line 829 of file GVector.cpp.

References m_data.

Referenced by clear(), operator=(), and ~GVector().

◆ init_members()

void GVector::init_members ( void )
private

Initialise class members.

Definition at line 764 of file GVector.cpp.

References m_data, and m_num.

Referenced by clear(), GVector(), GVector(), GVector(), GVector(), GVector(), GVector(), and operator=().

◆ last_nonzero()

int GVector::last_nonzero ( void ) const

Return the index of the last non-zero element in a vector.

Returns
Index of last non-zero element in vector.

Returns the index of the last non-zero element. If all elements are zero the method will return -1.

Definition at line 677 of file GVector.cpp.

References m_data, and m_num.

◆ non_zeros()

int GVector::non_zeros ( void ) const

Returns number of non-zero elements in vector.

Returns
Number of non-zero elements in vector.

Definition at line 627 of file GVector.cpp.

References m_data, m_num, and non_zeros().

Referenced by GMatrixSparse::add_to_column(), GMatrixSparse::colfill_set_column(), GMatrixSparse::column(), GVectorSparse::GVectorSparse(), non_zeros(), and GResponseVectorCache::set().

◆ operator!=()

bool GVector::operator!= ( const GVector & vector) const

Non-equality operator.

Parameters
[in]vectorVector.
Returns
True if both vectors are different.

Definition at line 286 of file GVector.cpp.

References operator==().

◆ operator*=() [1/2]

GVector & GVector::operator*= ( const double & scalar)

Scalar unary multiplication operator.

Parameters
[in]scalarScalar.
Returns
Vector.

Multiply all vector elements by scalar.

Definition at line 494 of file GVector.cpp.

References m_data, and m_num.

◆ operator*=() [2/2]

GVector & GVector::operator*= ( const GVector & vector)

Unary multiplication operator.

Parameters
[in]vectorVector.
Returns
Vector.
Exceptions
GException::vector_mismatchVectors have not the same size.

Multiplies vector elements.

Definition at line 371 of file GVector.cpp.

References G_OP_MULT, m_data, m_num, and gammalib::str().

◆ operator+=() [1/2]

GVector & GVector::operator+= ( const double & scalar)

Scalar unary addition operator.

Parameters
[in]scalarScalar.
Returns
Vector.

Adds scalar to all vector elements.

Definition at line 454 of file GVector.cpp.

References m_data, and m_num.

◆ operator+=() [2/2]

GVector & GVector::operator+= ( const GVector & vector)

Unary addition operator.

Parameters
[in]vectorVector.
Returns
Vector.
Exceptions
GException::invalid_argumentVectors have not the same size.

Adds vector elements.

Definition at line 307 of file GVector.cpp.

References G_OP_ADD, m_data, m_num, and gammalib::str().

◆ operator-()

GVector GVector::operator- ( void ) const

Unary minus operator.

Returns
Vector.

Negate all vector elements.

Definition at line 533 of file GVector.cpp.

References m_data, and m_num.

◆ operator-=() [1/2]

GVector & GVector::operator-= ( const double & scalar)

Scalar unary subtraction operator.

Parameters
[in]scalarScalar.
Returns
Vector.

Subtract scalar to all vector elements.

Definition at line 474 of file GVector.cpp.

References m_data, and m_num.

◆ operator-=() [2/2]

GVector & GVector::operator-= ( const GVector & vector)

Unary subtraction operator.

Parameters
[in]vectorVector.
Returns
Vector.
Exceptions
GException::vector_mismatchVectors have not the same size.

Subtracts vector elements.

Definition at line 339 of file GVector.cpp.

References G_OP_SUB, m_data, m_num, and gammalib::str().

◆ operator/=() [1/2]

GVector & GVector::operator/= ( const double & scalar)

Scalar unary division operator.

Parameters
[in]scalarScalar.
Returns
Vector.

Divide all vector elements by scalar.

Definition at line 514 of file GVector.cpp.

References m_data, and m_num.

◆ operator/=() [2/2]

GVector & GVector::operator/= ( const GVector & vector)

Unary division operator.

Parameters
[in]vectorVector.
Returns
Vector.
Exceptions
GException::vector_mismatchVectors have not the same size.

Divide vector elements.

Todo
Handle division by zero errors

Definition at line 405 of file GVector.cpp.

References G_OP_DIV, m_data, m_num, and gammalib::str().

◆ operator=() [1/2]

GVector & GVector::operator= ( const double & scalar)

Scalar assignment operator.

Parameters
[in]scalarScalar.
Returns
Vector.

Subtracts vector.

Definition at line 434 of file GVector.cpp.

References m_data, and m_num.

◆ operator=() [2/2]

GVector & GVector::operator= ( const GVector & vector)

Assignment operator.

Parameters
[in]vectorVector.
Returns
Vector.

Definition at line 230 of file GVector.cpp.

References copy_members(), free_members(), and init_members().

◆ operator==()

bool GVector::operator== ( const GVector & vector) const

Equality operator.

Parameters
[in]vectorVector.
Returns
True if vectors are identical.

Returns true if vectors are identical. Vectors are considered identical if they have the same size and if all their elements are identical.

Definition at line 260 of file GVector.cpp.

References m_data, and m_num.

Referenced by operator!=().

◆ operator[]() [1/2]

double & GVector::operator[] ( const int & index)
inline

Vector element access operator.

Parameters
[in]indexElement index [0,...,size()-1]
Returns
Reference to vector element.

Definition at line 151 of file GVector.hpp.

References m_data.

◆ operator[]() [2/2]

const double & GVector::operator[] ( const int & index) const
inline

Vector element access operator (const variant)

Parameters
[in]indexElement index [0,...,size()-1]
Returns
Reference to vector element.

Definition at line 165 of file GVector.hpp.

References m_data.

◆ print()

std::string GVector::print ( const GChatter & chatter = NORMAL) const
virtual

Print vector information.

Parameters
[in]chatterChattiness.
Returns
String containing vector information.

Implements GBase.

Definition at line 729 of file GVector.cpp.

References m_num, SILENT, and gammalib::str().

Referenced by GIntegrals::print(), GIntegrals::romberg(), and GIntegrals::trapzd().

◆ size()

◆ slice()

GVector GVector::slice ( const int & start,
const int & stop ) const

Vector slice operator.

Parameters
[in]startStart index [0,...,size()-1]
[in]stopStop index [0,...,size()-1]
Returns
Vector made of elements [start,...,stop].

Definition at line 702 of file GVector.cpp.

References m_data.

Friends And Related Symbol Documentation

◆ abs

GVector abs ( const GVector & vector)
friend

Computes absolute of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the absolute of every element.

Definition at line 1321 of file GVector.cpp.

◆ acos

GVector acos ( const GVector & vector)
friend

Computes arccos of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the arccos of every element.

Definition at line 1132 of file GVector.cpp.

◆ acosh

GVector acosh ( const GVector & vector)
friend

Computes acosh of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the acosh of every element.

Definition at line 1153 of file GVector.cpp.

◆ angle

double angle ( const GVector & a,
const GVector & b )
friend

Computes angle between vectors.

Parameters
[in]aVector.
[in]bVector.
Returns
Angle between vector a and b in radians.
Exceptions
GException::invalid_argumentMismatch between vector size.

Returns the angle \(\alpha\) between vector a and b in radians. The computation is done using

\[ \alpha = \arccos{\frac{\vec{a} \cdot \vec{b}}{|\vec{a}||\vec{b}|}} \]

Definition at line 1042 of file GVector.cpp.

◆ asin

GVector asin ( const GVector & vector)
friend

Computes arcsin of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the arcsin of every element.

Definition at line 1174 of file GVector.cpp.

◆ asinh

GVector asinh ( const GVector & vector)
friend

Computes asinh of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the asinh of every element.

Definition at line 1195 of file GVector.cpp.

◆ atan

GVector atan ( const GVector & vector)
friend

Computes arctan of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the arctan of every element.

Definition at line 1216 of file GVector.cpp.

◆ atanh

GVector atanh ( const GVector & vector)
friend

Computes atanh of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the atanh of every element.

Definition at line 1237 of file GVector.cpp.

◆ cos

GVector cos ( const GVector & vector)
friend

Computes cosine of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the cosine of every element.

Definition at line 1258 of file GVector.cpp.

◆ cosh

GVector cosh ( const GVector & vector)
friend

Computes cosh of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the cosh of every element.

Definition at line 1279 of file GVector.cpp.

◆ cross

GVector cross ( const GVector & a,
const GVector & b )
friend

Vector cross product.

Parameters
[in]aVector.
[in]bVector.
Returns
Vector cross product.
Exceptions
GException::invalid_argumentMismatch between vector size or vector not of size 3.

Computes the cross product between two 3-element vectors (note that the cross product is only defined for 3-element vectors).

Definition at line 861 of file GVector.cpp.

◆ exp

GVector exp ( const GVector & vector)
friend

Computes exponential of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the exponential of every element.

Definition at line 1300 of file GVector.cpp.

◆ iperm

GVector iperm ( const GVector & vector,
const int * p )
friend

Computes vector inverse permutation.

Parameters
[in]vectorVector.
[in]pPermutation array.
Returns
Inversely permuted vector.

Definition at line 1106 of file GVector.cpp.

◆ log

GVector log ( const GVector & vector)
friend

Computes natural logarithm of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the natural logarithm of every element.

Definition at line 1342 of file GVector.cpp.

◆ log10

GVector log10 ( const GVector & vector)
friend

Computes base10 logarithm of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the base10 logarithm of every element.

Definition at line 1363 of file GVector.cpp.

◆ max

double max ( const GVector & vector)
friend

Computes maximum vector element.

Parameters
[in]vectorVector.
Returns
Maximum vector element.

Definition at line 983 of file GVector.cpp.

◆ min

double min ( const GVector & vector)
friend

Computes minimum vector element.

Parameters
[in]vectorVector.
Returns
Minimum vector element.

Definition at line 954 of file GVector.cpp.

◆ norm

double norm ( const GVector & vector)
friend

Computes vector norm.

Parameters
[in]vectorVector.
Returns
Vector norm.

Definition at line 932 of file GVector.cpp.

◆ operator*

double operator* ( const GVector & a,
const GVector & b )
friend

Vector scalar product.

Parameters
[in]aVector.
[in]bVector.
Returns
Product between vector a and b.
Exceptions
GException::invalid_argumentMismatch between vector size.

Returns the scalar product between vector a and b.

Definition at line 904 of file GVector.cpp.

◆ perm

GVector perm ( const GVector & vector,
const int * p )
friend

Computes vector permutation.

Parameters
[in]vectorVector.
[in]pPermutation array.
Returns
Permuted vector.

Definition at line 1079 of file GVector.cpp.

◆ pow

GVector pow ( const GVector & vector,
const double & power )
friend

Computes tanh of vector elements.

Parameters
[in]vectorVector.
[in]powerPower.
Returns
Vector containing the power of every element.

Definition at line 1490 of file GVector.cpp.

◆ sin

GVector sin ( const GVector & vector)
friend

Computes sine of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the sine of every element.

Definition at line 1384 of file GVector.cpp.

◆ sinh

GVector sinh ( const GVector & vector)
friend

Computes sinh of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the sinh of every element.

Definition at line 1405 of file GVector.cpp.

◆ sqrt

GVector sqrt ( const GVector & vector)
friend

Computes square root of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the square root of every element.

Definition at line 1426 of file GVector.cpp.

◆ sum

double sum ( const GVector & vector)
friend

Computes vector sum.

Parameters
[in]vectorVector.
Returns
Sum of vector elements.

Definition at line 1012 of file GVector.cpp.

◆ tan

GVector tan ( const GVector & vector)
friend

Computes tangens of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the tangens of every element.

Definition at line 1447 of file GVector.cpp.

◆ tanh

GVector tanh ( const GVector & vector)
friend

Computes tanh of vector elements.

Parameters
[in]vectorVector.
Returns
Vector containing the tanh of every element.

Definition at line 1468 of file GVector.cpp.

Member Data Documentation

◆ m_data

◆ m_num


The documentation for this class was generated from the following files: