Commit 099a1de6 authored by Sébastien Villemot's avatar Sébastien Villemot

Dynare++: further simplification in Vector class

parent af722f43
......@@ -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);
}
......@@ -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 */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment