C++ main module for mmsd Package  1.0
MMSD_DoubleVector.h
Go to the documentation of this file.
1 #ifndef MMSD_DoubleVector_H
2 #define MMSD_DoubleVector_H
3 
4 #include "LAP_DoubleVector.h"
5 
7 
15 
16 class MMSD_DoubleVector : public virtual LAP_DoubleVector {
17  SP_OBJECT(MMSD_DoubleVector);
18  // ATTRIBUTES
19 
20 private:
21 
22 
23  // ASSOCIATIONS
24 
25 
26 public:
27  // METHODS
28 
29  // CONSTRUCTORS
30 
32  MMSD_DoubleVector(void);
34  MMSD_DoubleVector(const int& n) ;
37 
38 
39  // DESTRUCTORS
40 
41 
44  virtual ~MMSD_DoubleVector(void);
45 
46 
47 
48 public:
49  //----------------
50  // NEW constructors
51  // ---------------
52  inline static SP::MMSD_DoubleVector New() {
53  SP::MMSD_DoubleVector p(new MMSD_DoubleVector(),
55  p->setThis(p);
56  return p;
57  };
58  inline static SP::MMSD_DoubleVector New(const int& nElements) {
59  SP::MMSD_DoubleVector p(new MMSD_DoubleVector(nElements),
61  p->setThis(p);
62  return p;
63  };
68  return (*this);
69  };
73  copy(s);
74  return (*this);
75  };
79  copy(s);
80  return (*this);
81  };
82 
83 
86  static inline double triProduct(const tArrayIndex& n,
87  const double* a,
88  const double* b,
89  const double* c) {
90 
91 
92 
93  const double *va=a;
94  const double *vb=b;
95  const double *vc=c;
96 
97  double s=0;
98  for (tArrayIndex i=0;i<n;i++) {
99  s+=(*va)*(*vb)*(*vc);
100  va++;
101  vb++;
102  vc++;
103  }
104  return s;
105 
106 
107 
108  }
111  static inline double quadProduct(const tArrayIndex& n,
112  const double* a,
113  const double* b,
114  const double* c,
115  const double* d) {
116 
117 
118  const double *va=a,*vb=b,*vc=c,*vd=d;
119  double s=0;
120  for (tArrayIndex i=0;i<n;i++) {
121  s+=(*va)*(*vb)*(*vc)*(*vd);
122  va++;
123  vb++;
124  vc++;
125  vd++;
126  }
127  return s;
128 
129 
130 
131  }
132 
135  inline double triProduct(const double * b,
136  const double * c) const {
137  return triProduct(getSize(),getValues(),b,c);
138 
139  }
142  inline double quadProduct(const double* a,
143  const double* b,
144  const double* c) const {
145 
146  return quadProduct(getSize(),getValues(),a,b,c);
147 
148  }
149 
150 
151 
152 };
153 
154 #endif
static double triProduct(const tArrayIndex &n, const double *a, const double *b, const double *c)
tri scalar product
Definition: MMSD_DoubleVector.h:86
#define tArrayIndex
Definition: types.h:39
MMSD_DoubleVector & operator=(const MMSD_DoubleVector &s)
copy operator the view is taken into account
Definition: MMSD_DoubleVector.h:72
Definition: LAP_DoubleVector.h:20
double triProduct(const double *b, const double *c) const
tri scalar product
Definition: MMSD_DoubleVector.h:135
DEFINE_SPTR(MMSD_DoubleVector)
DEFINE_SVPTR(MMSD_DoubleVector)
static double quadProduct(const tArrayIndex &n, const double *a, const double *b, const double *c, const double *d)
tri scalar product
Definition: MMSD_DoubleVector.h:111
#define lapack_real
Definition: lapack_functions.h:9
static SP::MMSD_DoubleVector New(const int &nElements)
Definition: MMSD_DoubleVector.h:58
Definition: MMSD_ConstDoubleVector.h:14
tLVectorIndex getSize() const
get the size of the vector
Definition: LAP_Vector.h:519
Definition: MMSD_DoubleVector.h:16
virtual const lapack_real * getValues() const
get the values for reading
Definition: LAP_Vector.h:497
MMSD_DoubleVector & operator=(const lapack_real &s)
copy operator the view is taken into account
Definition: MMSD_DoubleVector.h:66
virtual ~MMSD_DoubleVector(void)
destroy an object.
Definition: MMSD_DoubleVector.cpp:16
MMSD_DoubleVector(void)
create an object
Definition: MMSD_DoubleVector.cpp:4
MMSD_DoubleVector & operator=(const MMSD_ConstDoubleVector &s)
copy operator the view is taken into account
Definition: MMSD_DoubleVector.h:78
void init(const lapack_real &v)
init the value to v from the view
Definition: LAP_Vector.h:423
void copy(const LAP_Vector< lapack_real > &v)
copy the vector v into this. the view is set to [0,v.getSize()[ the viewed values of v is copied into...
Definition: LAP_DoubleVector.h:222
static SP::MMSD_DoubleVector New()
Definition: MMSD_DoubleVector.h:52
double quadProduct(const double *a, const double *b, const double *c) const
quad scalar product
Definition: MMSD_DoubleVector.h:142
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:106