C++17 modernization: initialization in “if”-statement
parent
d52aceeb16
commit
661e5c7e9f
|
@ -234,14 +234,12 @@ DecisionRuleImpl<t>::fillTensors(const _Tg &g, double sigma)
|
||||||
TensorDimens(Symmetry{i, j}, tns));
|
TensorDimens(Symmetry{i, j}, tns));
|
||||||
tmp.zeros();
|
tmp.zeros();
|
||||||
for (int k = 0; k+d <= g.getMaxDim(); k++, kfact *= k)
|
for (int k = 0; k+d <= g.getMaxDim(); k++, kfact *= k)
|
||||||
{
|
if (Symmetry sym{i, j, 0, k};
|
||||||
Symmetry sym{i, j, 0, k};
|
g.check(sym))
|
||||||
if (g.check(sym))
|
{
|
||||||
{
|
double mult = pow(sigma, k)/dfact/kfact;
|
||||||
double mult = pow(sigma, k)/dfact/kfact;
|
tmp.add(mult, g.get(sym));
|
||||||
tmp.add(mult, g.get(sym));
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
g_yud->addSubTensor(tmp);
|
g_yud->addSubTensor(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,14 +276,12 @@ DecisionRuleImpl<t>::fillTensors(const _TW &W, int nys)
|
||||||
_Ttensor tmp(1, TensorDimens(Symmetry{i, j}, tns));
|
_Ttensor tmp(1, TensorDimens(Symmetry{i, j}, tns));
|
||||||
tmp.zeros();
|
tmp.zeros();
|
||||||
for (int k = 0; k+d <= W.getMaxDim(); k++, kfact *= k)
|
for (int k = 0; k+d <= W.getMaxDim(); k++, kfact *= k)
|
||||||
{
|
if (Symmetry sym{i, j, 0, k};
|
||||||
Symmetry sym{i, j, 0, k};
|
W.check(sym))
|
||||||
if (W.check(sym))
|
{
|
||||||
{
|
double mult = 1.0/dfact/kfact;
|
||||||
double mult = 1.0/dfact/kfact;
|
tmp.add(mult, W.get(sym));
|
||||||
tmp.add(mult, W.get(sym));
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
W_yud->addSubTensor(tmp);
|
W_yud->addSubTensor(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright © 2005 Ondra Kamenik
|
* Copyright © 2005 Ondra Kamenik
|
||||||
* Copyright © 2019-2022 Dynare Team
|
* Copyright © 2019-2023 Dynare Team
|
||||||
*
|
*
|
||||||
* This file is part of Dynare.
|
* This file is part of Dynare.
|
||||||
*
|
*
|
||||||
|
@ -139,9 +139,9 @@ FaaDiBruno::estimRefinement(const TensorDimens &tdims, int nr, int l)
|
||||||
*static_cast<long>(lambda*per_size1+(1-lambda)*per_size2);
|
*static_cast<long>(lambda*per_size1+(1-lambda)*per_size2);
|
||||||
long mem = SystemResources::availableMemory();
|
long mem = SystemResources::availableMemory();
|
||||||
int max = 0;
|
int max = 0;
|
||||||
double num_cols = static_cast<double>(mem-magic_mult*nthreads*per_size)
|
if (double num_cols {static_cast<double>(mem-magic_mult*nthreads*per_size)
|
||||||
/nthreads/sizeof(double)/nr;
|
/nthreads/sizeof(double)/nr};
|
||||||
if (num_cols > 0)
|
num_cols > 0)
|
||||||
{
|
{
|
||||||
double maxd = std::pow(num_cols, 1.0/l);
|
double maxd = std::pow(num_cols, 1.0/l);
|
||||||
max = static_cast<int>(std::floor(maxd));
|
max = static_cast<int>(std::floor(maxd));
|
||||||
|
|
|
@ -209,11 +209,9 @@ StochForwardDerivs<t>::StochForwardDerivs(const PartitionY &ypart, int nu,
|
||||||
auto ten = std::make_unique<typename ctraits<t>::Ttensym>(r, ypart.nys()+1, d);
|
auto ten = std::make_unique<typename ctraits<t>::Ttensym>(r, ypart.nys()+1, d);
|
||||||
ten->zeros();
|
ten->zeros();
|
||||||
for (int i = 0; i <= d; i++)
|
for (int i = 0; i <= d; i++)
|
||||||
{
|
if (int k {d-i};
|
||||||
int k = d-i;
|
g_int.check(Symmetry{i, 0, 0, k}))
|
||||||
if (g_int.check(Symmetry{i, 0, 0, k}))
|
ten->addSubTensor(g_int.get(Symmetry{i, 0, 0, k}));
|
||||||
ten->addSubTensor(g_int.get(Symmetry{i, 0, 0, k}));
|
|
||||||
}
|
|
||||||
g_int_sym.insert(std::move(ten));
|
g_int_sym.insert(std::move(ten));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright © 2004-2011 Ondra Kamenik
|
* Copyright © 2004-2011 Ondra Kamenik
|
||||||
* Copyright © 2019 Dynare Team
|
* Copyright © 2019-2023 Dynare Team
|
||||||
*
|
*
|
||||||
* This file is part of Dynare.
|
* This file is part of Dynare.
|
||||||
*
|
*
|
||||||
|
@ -73,25 +73,21 @@ BlockDiagonal::setZeroBlockEdge(diag_iter edge)
|
||||||
|
|
||||||
int iedge = edge->getIndex();
|
int iedge = edge->getIndex();
|
||||||
for (diag_iter run = diag_begin(); run != edge; ++run)
|
for (diag_iter run = diag_begin(); run != edge; ++run)
|
||||||
{
|
if (int ind {run->getIndex()};
|
||||||
int ind = run->getIndex();
|
row_len[ind] > iedge)
|
||||||
if (row_len[ind] > iedge)
|
{
|
||||||
{
|
row_len[ind] = iedge;
|
||||||
row_len[ind] = iedge;
|
if (!run->isReal())
|
||||||
if (!run->isReal())
|
row_len[ind+1] = iedge;
|
||||||
row_len[ind+1] = iedge;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
for (diag_iter run = edge; run != diag_end(); ++run)
|
for (diag_iter run = edge; run != diag_end(); ++run)
|
||||||
{
|
if (int ind {run->getIndex()};
|
||||||
int ind = run->getIndex();
|
col_len[ind] < iedge)
|
||||||
if (col_len[ind] < iedge)
|
{
|
||||||
{
|
col_len[ind] = iedge;
|
||||||
col_len[ind] = iedge;
|
if (!run->isReal())
|
||||||
if (!run->isReal())
|
col_len[ind+1] = iedge;
|
||||||
col_len[ind+1] = iedge;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockDiagonal::const_col_iter
|
BlockDiagonal::const_col_iter
|
||||||
|
@ -193,42 +189,40 @@ BlockDiagonal::multKronBlock(const_diag_iter start, const_diag_iter end,
|
||||||
savePartOfX(si, ei, x, work);
|
savePartOfX(si, ei, x, work);
|
||||||
|
|
||||||
for (const_diag_iter di = start; di != end; ++di)
|
for (const_diag_iter di = start; di != end; ++di)
|
||||||
{
|
if (int jbar {di->getIndex()};
|
||||||
int jbar = di->getIndex();
|
di->isReal())
|
||||||
if (di->isReal())
|
{
|
||||||
{
|
KronVector xi(x, jbar);
|
||||||
KronVector xi(x, jbar);
|
xi.zeros();
|
||||||
xi.zeros();
|
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
||||||
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
xi.add(*(di->getAlpha()), wi);
|
||||||
xi.add(*(di->getAlpha()), wi);
|
for (const_row_iter ri = row_begin(*di); ri != row_end(*di); ++ri)
|
||||||
for (const_row_iter ri = row_begin(*di); ri != row_end(*di); ++ri)
|
{
|
||||||
{
|
int col = ri.getCol();
|
||||||
int col = ri.getCol();
|
Vector wj(work, (col-si)*xi.length(), xi.length());
|
||||||
Vector wj(work, (col-si)*xi.length(), xi.length());
|
xi.add(*ri, wj);
|
||||||
xi.add(*ri, wj);
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
KronVector xi(x, jbar);
|
||||||
KronVector xi(x, jbar);
|
KronVector xii(x, jbar+1);
|
||||||
KronVector xii(x, jbar+1);
|
xi.zeros();
|
||||||
xi.zeros();
|
xii.zeros();
|
||||||
xii.zeros();
|
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
||||||
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
Vector wii(work, (jbar+1-si)*xi.length(), xi.length());
|
||||||
Vector wii(work, (jbar+1-si)*xi.length(), xi.length());
|
xi.add(*(di->getAlpha()), wi);
|
||||||
xi.add(*(di->getAlpha()), wi);
|
xi.add(di->getBeta1(), wii);
|
||||||
xi.add(di->getBeta1(), wii);
|
xii.add(di->getBeta2(), wi);
|
||||||
xii.add(di->getBeta2(), wi);
|
xii.add(*(di->getAlpha()), wii);
|
||||||
xii.add(*(di->getAlpha()), wii);
|
for (const_row_iter ri = row_begin(*di); ri != row_end(*di); ++ri)
|
||||||
for (const_row_iter ri = row_begin(*di); ri != row_end(*di); ++ri)
|
{
|
||||||
{
|
int col = ri.getCol();
|
||||||
int col = ri.getCol();
|
Vector wj(work, (col-si)*xi.length(), xi.length());
|
||||||
Vector wj(work, (col-si)*xi.length(), xi.length());
|
xi.add(ri.a(), wj);
|
||||||
xi.add(ri.a(), wj);
|
xii.add(ri.b(), wj);
|
||||||
xii.add(ri.b(), wj);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -242,42 +236,40 @@ BlockDiagonal::multKronBlockTrans(const_diag_iter start, const_diag_iter end,
|
||||||
savePartOfX(si, ei, x, work);
|
savePartOfX(si, ei, x, work);
|
||||||
|
|
||||||
for (const_diag_iter di = start; di != end; ++di)
|
for (const_diag_iter di = start; di != end; ++di)
|
||||||
{
|
if (int jbar {di->getIndex()};
|
||||||
int jbar = di->getIndex();
|
di->isReal())
|
||||||
if (di->isReal())
|
{
|
||||||
{
|
KronVector xi(x, jbar);
|
||||||
KronVector xi(x, jbar);
|
xi.zeros();
|
||||||
xi.zeros();
|
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
||||||
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
xi.add(*(di->getAlpha()), wi);
|
||||||
xi.add(*(di->getAlpha()), wi);
|
for (const_col_iter ci = col_begin(*di); ci != col_end(*di); ++ci)
|
||||||
for (const_col_iter ci = col_begin(*di); ci != col_end(*di); ++ci)
|
{
|
||||||
{
|
int row = ci.getRow();
|
||||||
int row = ci.getRow();
|
Vector wj(work, (row-si)*xi.length(), xi.length());
|
||||||
Vector wj(work, (row-si)*xi.length(), xi.length());
|
xi.add(*ci, wj);
|
||||||
xi.add(*ci, wj);
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
KronVector xi(x, jbar);
|
||||||
KronVector xi(x, jbar);
|
KronVector xii(x, jbar+1);
|
||||||
KronVector xii(x, jbar+1);
|
xi.zeros();
|
||||||
xi.zeros();
|
xii.zeros();
|
||||||
xii.zeros();
|
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
||||||
Vector wi(work, (jbar-si)*xi.length(), xi.length());
|
Vector wii(work, (jbar+1-si)*xi.length(), xi.length());
|
||||||
Vector wii(work, (jbar+1-si)*xi.length(), xi.length());
|
xi.add(*(di->getAlpha()), wi);
|
||||||
xi.add(*(di->getAlpha()), wi);
|
xi.add(di->getBeta2(), wii);
|
||||||
xi.add(di->getBeta2(), wii);
|
xii.add(di->getBeta1(), wi);
|
||||||
xii.add(di->getBeta1(), wi);
|
xii.add(*(di->getAlpha()), wii);
|
||||||
xii.add(*(di->getAlpha()), wii);
|
for (const_col_iter ci = col_begin(*di); ci != col_end(*di); ++ci)
|
||||||
for (const_col_iter ci = col_begin(*di); ci != col_end(*di); ++ci)
|
{
|
||||||
{
|
int row = ci.getRow();
|
||||||
int row = ci.getRow();
|
Vector wj(work, (row-si)*xi.length(), xi.length());
|
||||||
Vector wj(work, (row-si)*xi.length(), xi.length());
|
xi.add(ci.a(), wj);
|
||||||
xi.add(ci.a(), wj);
|
xii.add(ci.b(), wj);
|
||||||
xii.add(ci.b(), wj);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -172,8 +172,8 @@ Diagonal::changeBase(double *p)
|
||||||
void
|
void
|
||||||
Diagonal::getEigenValues(Vector &eig) const
|
Diagonal::getEigenValues(Vector &eig) const
|
||||||
{
|
{
|
||||||
int d_size = getSize();
|
if (int d_size {getSize()};
|
||||||
if (eig.length() != 2*d_size)
|
eig.length() != 2*d_size)
|
||||||
{
|
{
|
||||||
std::ostringstream mes;
|
std::ostringstream mes;
|
||||||
mes << "Wrong length of vector for eigenvalues len=" << eig.length()
|
mes << "Wrong length of vector for eigenvalues len=" << eig.length()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright © 2004 Ondra Kamenik
|
* Copyright © 2004 Ondra Kamenik
|
||||||
* Copyright © 2019 Dynare Team
|
* Copyright © 2019-2023 Dynare Team
|
||||||
*
|
*
|
||||||
* This file is part of Dynare.
|
* This file is part of Dynare.
|
||||||
*
|
*
|
||||||
|
@ -364,14 +364,12 @@ EquivalenceSet::addParents(const Equivalence &e,
|
||||||
|
|
||||||
for (int i1 = 0; i1 < e.numClasses(); i1++)
|
for (int i1 = 0; i1 < e.numClasses(); i1++)
|
||||||
for (int i2 = i1+1; i2 < e.numClasses(); i2++)
|
for (int i2 = i1+1; i2 < e.numClasses(); i2++)
|
||||||
{
|
if (Equivalence ns(e, i1, i2);
|
||||||
Equivalence ns(e, i1, i2);
|
!has(ns))
|
||||||
if (!has(ns))
|
{
|
||||||
{
|
added.push_back(ns);
|
||||||
added.push_back(ns);
|
equis.push_back(std::move(ns));
|
||||||
equis.push_back(std::move(ns));
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Debug print. */
|
/* Debug print. */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright © 2004 Ondra Kamenik
|
* Copyright © 2004 Ondra Kamenik
|
||||||
* Copyright © 2019 Dynare Team
|
* Copyright © 2019-2023 Dynare Team
|
||||||
*
|
*
|
||||||
* This file is part of Dynare.
|
* This file is part of Dynare.
|
||||||
*
|
*
|
||||||
|
@ -106,17 +106,15 @@ TensorDimens::calcFoldOffset(const IntSequence &v) const
|
||||||
int pow = 1;
|
int pow = 1;
|
||||||
int blstart = v.size();
|
int blstart = v.size();
|
||||||
for (int ibl = getSym().num()-1; ibl >= 0; ibl--)
|
for (int ibl = getSym().num()-1; ibl >= 0; ibl--)
|
||||||
{
|
if (int bldim { getSym()[ibl] };
|
||||||
int bldim = getSym()[ibl];
|
bldim > 0)
|
||||||
if (bldim > 0)
|
{
|
||||||
{
|
blstart -= bldim;
|
||||||
blstart -= bldim;
|
int blnvar = getNVX(blstart);
|
||||||
int blnvar = getNVX(blstart);
|
IntSequence subv(v, blstart, blstart+bldim);
|
||||||
IntSequence subv(v, blstart, blstart+bldim);
|
res += FTensor::getOffset(subv, blnvar)*pow;
|
||||||
res += FTensor::getOffset(subv, blnvar)*pow;
|
pow *= FFSTensor::calcMaxOffset(blnvar, bldim);
|
||||||
pow *= FFSTensor::calcMaxOffset(blnvar, bldim);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
TL_RAISE_IF(blstart != 0,
|
TL_RAISE_IF(blstart != 0,
|
||||||
"Error in tracing symmetry in TensorDimens::getFoldOffset");
|
"Error in tracing symmetry in TensorDimens::getFoldOffset");
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright © 2004 Ondra Kamenik
|
* Copyright © 2004 Ondra Kamenik
|
||||||
* Copyright © 2019 Dynare Team
|
* Copyright © 2019-2023 Dynare Team
|
||||||
*
|
*
|
||||||
* This file is part of Dynare.
|
* This file is part of Dynare.
|
||||||
*
|
*
|
||||||
|
@ -202,11 +202,9 @@ public:
|
||||||
{
|
{
|
||||||
int res = -1;
|
int res = -1;
|
||||||
for (const auto &run : m)
|
for (const auto &run : m)
|
||||||
{
|
if (int dim { run.first.dimen() };
|
||||||
int dim = run.first.dimen();
|
dim > res)
|
||||||
if (dim > res)
|
res = dim;
|
||||||
res = dim;
|
|
||||||
}
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright © 2004 Ondra Kamenik
|
* Copyright © 2004 Ondra Kamenik
|
||||||
* Copyright © 2019 Dynare Team
|
* Copyright © 2019-2023 Dynare Team
|
||||||
*
|
*
|
||||||
* This file is part of Dynare.
|
* This file is part of Dynare.
|
||||||
*
|
*
|
||||||
|
@ -318,8 +318,8 @@ public:
|
||||||
last = std::make_unique<_Ttype>(_Tparent::get(Symmetry{maxdim}), v);
|
last = std::make_unique<_Ttype>(_Tparent::get(Symmetry{maxdim}), v);
|
||||||
for (int d = maxdim-1; d >= 1; d--)
|
for (int d = maxdim-1; d >= 1; d--)
|
||||||
{
|
{
|
||||||
Symmetry cs{d};
|
if (Symmetry cs{d};
|
||||||
if (_Tparent::check(cs))
|
_Tparent::check(cs))
|
||||||
{
|
{
|
||||||
const _Ttype &nt = _Tparent::get(cs);
|
const _Ttype &nt = _Tparent::get(cs);
|
||||||
last->add(1.0, ConstTwoDMatrix(nt));
|
last->add(1.0, ConstTwoDMatrix(nt));
|
||||||
|
|
Loading…
Reference in New Issue