C++17 modernization: initialization in “if”-statement

kalman-mex
Sébastien Villemot 2023-07-19 18:00:42 +02:00
parent d52aceeb16
commit 661e5c7e9f
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
9 changed files with 128 additions and 148 deletions

View File

@ -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);
} }

View File

@ -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));

View File

@ -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));
} }

View File

@ -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

View File

@ -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()

View File

@ -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. */

View File

@ -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;

View File

@ -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;
} }

View File

@ -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));