Dynare++: further simplification in Vector class

time-shift
Sébastien Villemot 2019-02-06 18:10:11 +01:00
parent af722f438f
commit 099a1de607
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
2 changed files with 3 additions and 37 deletions

View File

@ -6,16 +6,12 @@
#include <dynblas.h>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <limits>
#include <iostream>
#include <iomanip>
ZeroPad zero_pad;
Vector::Vector(const Vector &v)
: len(v.len), data{new double[len], [](double *arr) { delete[] arr; }}
{
@ -156,19 +152,10 @@ void
Vector::zeros()
{
if (s == 1)
{
double *p = base();
for (int i = 0; i < len/ZeroPad::length;
i++, p += ZeroPad::length)
memcpy(p, zero_pad.getBase(), sizeof(double)*ZeroPad::length);
for (; p < base()+len; p++)
*p = 0.0;
}
std::fill_n(base(), len, 0.0);
else
{
for (int i = 0; i < len; i++)
operator[](i) = 0.0;
}
for (int i = 0; i < len; i++)
operator[](i) = 0.0;
}
void
@ -410,8 +397,3 @@ ConstVector::print() const
std::cout << i << '\t' << std::setw(8) << operator[](i) << std::endl;
std::cout.flags(ff);
}
ZeroPad::ZeroPad()
{
pad.fill(0.0);
}

View File

@ -9,7 +9,6 @@
* to avoid running virtual method invokation mechanism. Some
* members, and methods are thus duplicated */
#include <array>
#include <memory>
#include <complex>
@ -216,19 +215,4 @@ public:
void print() const;
};
class ZeroPad
{
public:
static const int length = 16;
private:
std::array<double, length> pad;
public:
ZeroPad();
const double *
getBase() const
{
return pad.data();
}
};
#endif /* VECTOR_H */