36#define G_CONSTRUCTOR "GVector::GVector(int&)"
37#define G_OP_ADD "GVector::operator+=(GVector&)"
38#define G_OP_SUB "GVector::operator-=(GVector&)"
39#define G_OP_MULT "GVector::operator*=(GVector&)"
40#define G_OP_DIV "GVector::operator/=(GVector&)"
41#define G_AT "GVector::at(int&)"
42#define G_CROSS "cross(GVector&, GVector&)"
43#define G_SCALAR "operator*(GVector&, GVector&)"
44#define G_ANGLE "angle(GVector&, GVector&)"
81 #if defined(G_RANGE_CHECK)
83 std::string msg =
"Number of elements "+
gammalib::str(num)+
" is "
84 "negative. Please specify a non-negative number of "
233 if (
this != &vector) {
267 for (
int i = 0; i <
m_num; ++i) {
313 ". Please specify a vector of size "+
319 for (
int i = 0; i <
m_num; ++i) {
345 ". Please specify a vector of size "+
351 for (
int i = 0; i <
m_num; ++i) {
377 ". Please specify a vector of size "+
383 for (
int i = 0; i <
m_num; ++i) {
411 ". Please specify a vector of size "+
417 for (
int i = 0; i <
m_num; ++i) {
437 for (
int i = 0; i <
m_num; ++i) {
457 for (
int i = 0; i <
m_num; ++i) {
477 for (
int i = 0; i <
m_num; ++i) {
497 for (
int i = 0; i <
m_num; ++i) {
517 for (
int i = 0; i <
m_num; ++i) {
539 for (
int i = 0; i <
m_num; ++i) {
593 if (index < 0 || index >=
size()) {
613 if (index < 0 || index >=
size()) {
633 for (
int i = 0; i <
m_num; ++i) {
654 int first_non_zero = -1;
657 for (
int i = 0; i <
m_num; ++i) {
665 return first_non_zero;
680 int last_non_zero = -1;
683 for (
int i =
m_num-1; i >= 0; --i) {
691 return last_non_zero;
705 int num = stop - start;
714 for (
int i = start; i <= stop; ++i) {
732 std::string result =
"(";
738 for (
int i = 0; i <
m_num; ++i) {
787 for (
int i = 0; i <
m_num; ++i) {
815 for (
int i = 0; i <
m_num; ++i) {
867 "second vector. Please specify vectors of identical "
875 "The vector cross product is only defined for "
876 "vectors of size 3. Please specify vectors of "
910 "second vector. Please specify vectors of identical "
917 for (
int i = 0; i < a.
m_num; ++i) {
938 for (
int i = 0; i < vector.
m_num; ++i) {
941 result = (result > 0.0) ? std::sqrt(result) : 0.0;
960 if (vector.
m_num > 0) {
963 result = vector.
m_data[0];
964 for (
int i = 1; i < vector.
m_num; ++i) {
965 if (vector.
m_data[i] < result) {
966 result = vector.
m_data[i];
989 if (vector.
m_num > 0) {
992 result = vector.
m_data[0];
993 for (
int i = 1; i < vector.
m_num; ++i) {
994 if (vector.
m_data[i] > result) {
995 result = vector.
m_data[i];
1015 double result = 0.0;
1016 for (
int i = 0; i < vector.
m_num; ++i) {
1017 result += vector.
m_data[i];
1048 "second vector. Please specify vectors of identical "
1057 double arg = (a * b) / denom;
1064 angle = std::acos(arg);
1086 for (
int i = 0; i < vector.
m_num; ++i) {
1113 for (
int i = 0; i < vector.
m_num; ++i) {
1138 for (
int i = 0; i < vector.
m_num; ++i) {
1159 for (
int i = 0; i < vector.
m_num; ++i) {
1180 for (
int i = 0; i < vector.
m_num; ++i) {
1201 for (
int i = 0; i < vector.
m_num; ++i) {
1222 for (
int i = 0; i < vector.
m_num; ++i) {
1243 for (
int i = 0; i < vector.
m_num; ++i) {
1264 for (
int i = 0; i < vector.
m_num; ++i) {
1285 for (
int i = 0; i < vector.
m_num; ++i) {
1306 for (
int i = 0; i < vector.
m_num; ++i) {
1327 for (
int i = 0; i < vector.
m_num; ++i) {
1348 for (
int i = 0; i < vector.
m_num; ++i) {
1369 for (
int i = 0; i < vector.
m_num; ++i) {
1390 for (
int i = 0; i < vector.
m_num; ++i) {
1411 for (
int i = 0; i < vector.
m_num; ++i) {
1432 for (
int i = 0; i < vector.
m_num; ++i) {
1453 for (
int i = 0; i < vector.
m_num; ++i) {
1474 for (
int i = 0; i < vector.
m_num; ++i) {
1496 for (
int i = 0; i < vector.
m_num; ++i) {
GVector cos(const GVector &vector)
Computes cosine of vector elements.
GVector cosh(const GVector &vector)
Computes cosh of vector elements.
double norm(const GVector &vector)
Computes vector norm.
GVector log(const GVector &vector)
Computes natural logarithm of vector elements.
GVector abs(const GVector &vector)
Computes absolute of vector elements.
double angle(const GVector &a, const GVector &b)
Computes angle between vectors.
double min(const GVector &vector)
Computes minimum vector element.
GVector pow(const GVector &vector, const double &power)
Computes tanh of vector elements.
double operator*(const GVector &a, const GVector &b)
Vector scalar product.
GVector iperm(const GVector &vector, const int *p)
Computes vector inverse permutation.
GVector tan(const GVector &vector)
Computes tangens of vector elements.
GVector asinh(const GVector &vector)
Computes asinh of vector elements.
GVector acos(const GVector &vector)
Computes arccos of vector elements.
GVector perm(const GVector &vector, const int *p)
Computes vector permutation.
GVector exp(const GVector &vector)
Computes exponential of vector elements.
GVector atanh(const GVector &vector)
Computes atanh of vector elements.
GVector tanh(const GVector &vector)
Computes tanh of vector elements.
GVector sin(const GVector &vector)
Computes sine of vector elements.
GVector log10(const GVector &vector)
Computes base10 logarithm of vector elements.
double sum(const GVector &vector)
Computes vector sum.
GVector sqrt(const GVector &vector)
Computes square root of vector elements.
GVector atan(const GVector &vector)
Computes arctan of vector elements.
double max(const GVector &vector)
Computes maximum vector element.
GVector asin(const GVector &vector)
Computes arcsin of vector elements.
GVector sinh(const GVector &vector)
Computes sinh of vector elements.
GVector acosh(const GVector &vector)
Computes acosh of vector elements.
GVector cross(const GVector &a, const GVector &b)
Vector cross product.
Vector class interface definition.
bool operator==(const GVector &vector) const
Equality operator.
void alloc_members(void)
Allocate vector.
std::string print(const GChatter &chatter=NORMAL) const
Print vector information.
GVector & operator+=(const GVector &vector)
Unary addition operator.
void copy_members(const GVector &vector)
Copy class members.
GVector slice(const int &start, const int &stop) const
Vector slice operator.
int last_nonzero(void) const
Return the index of the last non-zero element in a vector.
GVector & operator/=(const GVector &vector)
Unary division operator.
GVector & operator-=(const GVector &vector)
Unary subtraction operator.
void clear(void)
Clear vector.
void init_members(void)
Initialise class members.
const int & size(void) const
Return size of vector.
GVector * clone(void) const
Clone vector.
GVector operator-(void) const
Unary minus operator.
double * m_data
Vector array.
int m_num
Number of elements in vector.
bool operator!=(const GVector &vector) const
Non-equality operator.
int first_nonzero(void) const
Return the index of the first non-zero element in a vector.
GVector & operator=(const GVector &vector)
Assignment operator.
virtual ~GVector(void)
Destructor.
int non_zeros(void) const
Returns number of non-zero elements in vector.
GVector & operator*=(const GVector &vector)
Unary multiplication operator.
void free_members(void)
Delete class members.
double & at(const int &index)
Vector element access with range checking.
GVector(void)
Void vector constructor.
std::string str(const unsigned short int &value)
Convert unsigned short integer value into string.