4 * Created on: 22 févr. 2013
10 #include "DoubleTab.hxx"
15 DoubleTab::~DoubleTab()
20 DoubleTab::DoubleTab()
26 DoubleTab::DoubleTab(int size)
28 _numberOfElements=size;
29 _values = new double [size];
32 DoubleTab::DoubleTab(const int size, double initialValue)
34 _values = new double [size];
35 _numberOfElements=size;
36 for (int i=0;i<size;i++)
37 _values[i] = initialValue ;
40 DoubleTab::DoubleTab(const int size, const double* value)
42 _values = new double [size];
43 _numberOfElements=size;
44 memcpy(_values,value,_numberOfElements*sizeof(double)) ;
48 DoubleTab::resize(const int size)
50 double* oldvalues=new double [_numberOfElements] ;
51 int oldsize=_numberOfElements;
52 copy(_values,_values+oldsize,oldvalues);
55 _numberOfElements+=size;
56 _values = new double [_numberOfElements] ;
57 for (int i=0;i<oldsize;i++)
58 _values[i] = oldvalues[i] ;
59 for (int i=oldsize;i<_numberOfElements;i++)
64 DoubleTab::DoubleTab(const DoubleTab& dt)
66 _numberOfElements=dt.size();
67 _values = new double [_numberOfElements];
68 memcpy(_values,dt.getValues(),_numberOfElements*sizeof(double)) ;
72 DoubleTab::operator=(const DoubleTab & dt)
74 _numberOfElements=dt.size();
77 _values = new double [_numberOfElements];
78 memcpy(_values,dt.getValues(),_numberOfElements*sizeof(double)) ;
83 DoubleTab::operator=(double value)
85 for (int i=0;i<_numberOfElements;i++)
91 DoubleTab::operator[](int i)
97 DoubleTab::operator[](int i) const
103 DoubleTab::operator()(int i)
109 DoubleTab::operator()(int i) const
115 DoubleTab::size() const
117 return _numberOfElements;
121 DoubleTab::getValues(void) const
127 DoubleTab::max() const
129 double res=_values[0];
130 for (int i=0;i<_numberOfElements;i++)
137 DoubleTab::min() const
139 double res=_values[0];
140 for (int i=0;i<_numberOfElements;i++)
147 DoubleTab::getPointer(void)
153 DoubleTab::operator+=(const DoubleTab& dt)
155 if(size() != dt.size())
157 cout<<"Warning : adding DoubleTab of different sizes"<<endl;
158 cout<<"First DoubleTab size "<<size()<<", second DoubleTab size "<<dt.size()<<endl;
160 for (int i=0;i<size();i++)
161 _values[i] += dt[i] ;
166 DoubleTab::operator+=(double value)
168 for (int i=0;i<_numberOfElements;i++)
169 _values[i] += value ;
174 DoubleTab::operator*=(double value)
176 for (int i=0;i<_numberOfElements;i++)
177 _values[i] *= value ;
182 DoubleTab::operator/=(double value)
184 for (int i=0;i<_numberOfElements;i++)
185 _values[i] /= value ;
190 DoubleTab::operator-=(const DoubleTab& dt)
192 if(size() != dt.size())
194 cout<<"Warning : subtracting DoubleTab of different sizes"<<endl;
195 cout<<"First DoubleTab size "<<size()<<", second DoubleTab size "<<dt.size()<<endl;
197 for (int i=0;i<size();i++)
198 _values[i] -= dt[i] ;
203 DoubleTab::operator-=(double value)
205 for (int i=0;i<_numberOfElements;i++)
206 _values[i] -= value ;
211 operator+(const DoubleTab& U,const DoubleTab& V)
215 for (int i=0; i<size; i++)
216 res[i] = U[i] + V[i];
221 operator-(const DoubleTab& U,const DoubleTab& V)
225 for (int i=0; i<size; i++)
226 res[i] = U[i] - V[i];
231 operator*(const DoubleTab& U,const DoubleTab& V)
236 for(int i=0; i<size; i++)
242 operator*(double value, const DoubleTab& U)
247 for(int i=0; i<size; i++)
248 res[i] = U[i] * value;
253 operator*(const DoubleTab& U, double value)
258 for(int i=0; i<size; i++)
259 res[i] = U[i] * value;
264 operator/(const DoubleTab& U, double value)
269 for(int i=0; i<size; i++)
270 res[i] = U[i] / value;
275 operator<<(ostream& out, const DoubleTab& U)
277 for (int i=0; i<U.size();i++)