Dynare++ / sylvester equation solver: print solver method when debugging
By the way, simplify copy constructor/assignment.time-shift
parent
0c3f61f106
commit
49c06f5c7f
|
@ -15,6 +15,7 @@ SylvParams::print(const std::string &prefix) const
|
||||||
void
|
void
|
||||||
SylvParams::print(std::ostream &fdesc, const std::string &prefix) const
|
SylvParams::print(std::ostream &fdesc, const std::string &prefix) const
|
||||||
{
|
{
|
||||||
|
method.print(fdesc, prefix, "method ");
|
||||||
rcondA1.print(fdesc, prefix, "reci. cond1 A ");
|
rcondA1.print(fdesc, prefix, "reci. cond1 A ");
|
||||||
rcondAI.print(fdesc, prefix, "reci. condInf A ");
|
rcondAI.print(fdesc, prefix, "reci. condInf A ");
|
||||||
bs_norm.print(fdesc, prefix, "log10 diag norm ");
|
bs_norm.print(fdesc, prefix, "log10 diag norm ");
|
||||||
|
@ -47,38 +48,6 @@ SylvParams::print(std::ostream &fdesc, const std::string &prefix) const
|
||||||
cpu_time.print(fdesc, prefix, "time (CPU secs) ");
|
cpu_time.print(fdesc, prefix, "time (CPU secs) ");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
SylvParams::copy(const SylvParams &p)
|
|
||||||
{
|
|
||||||
method = p.method;
|
|
||||||
convergence_tol = p.convergence_tol;
|
|
||||||
max_num_iter = p.max_num_iter;
|
|
||||||
bs_norm = p.bs_norm;
|
|
||||||
want_check = p.want_check;
|
|
||||||
converged = p.converged;
|
|
||||||
iter_last_norm = p.iter_last_norm;
|
|
||||||
num_iter = p.num_iter;
|
|
||||||
f_err1 = p.f_err1;
|
|
||||||
f_errI = p.f_errI;
|
|
||||||
viv_err1 = p.viv_err1;
|
|
||||||
viv_errI = p.viv_errI;
|
|
||||||
ivv_err1 = p.ivv_err1;
|
|
||||||
ivv_errI = p.ivv_errI;
|
|
||||||
f_blocks = p.f_blocks;
|
|
||||||
f_largest = p.f_largest;
|
|
||||||
f_zeros = p.f_zeros;
|
|
||||||
f_offdiag = p.f_offdiag;
|
|
||||||
rcondA1 = p.rcondA1;
|
|
||||||
rcondAI = p.rcondAI;
|
|
||||||
eig_min = p.eig_min;
|
|
||||||
mat_err1 = p.mat_err1;
|
|
||||||
mat_errI = p.mat_errI;
|
|
||||||
mat_errF = p.mat_errF;
|
|
||||||
vec_err1 = p.vec_err1;
|
|
||||||
vec_errI = p.vec_errI;
|
|
||||||
cpu_time = p.cpu_time;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SylvParams::setArrayNames(int &num, const char **names) const
|
SylvParams::setArrayNames(int &num, const char **names) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -182,22 +182,14 @@ public:
|
||||||
DoubleParamItem vec_err1; // rel. vector 1 norm of A*X-B*X*kron(C,..,C)-D
|
DoubleParamItem vec_err1; // rel. vector 1 norm of A*X-B*X*kron(C,..,C)-D
|
||||||
DoubleParamItem vec_errI; // rel. vector Inf norm of A*X-B*X*kron(C,..,C)-D
|
DoubleParamItem vec_errI; // rel. vector Inf norm of A*X-B*X*kron(C,..,C)-D
|
||||||
DoubleParamItem cpu_time; // time of the job in CPU seconds
|
DoubleParamItem cpu_time; // time of the job in CPU seconds
|
||||||
// note: remember to change copy() if adding/removing member
|
|
||||||
|
|
||||||
SylvParams(bool wc = false)
|
SylvParams(bool wc = false)
|
||||||
: method(recurse), convergence_tol(1.e-30), max_num_iter(15),
|
: method(recurse), convergence_tol(1.e-30), max_num_iter(15),
|
||||||
bs_norm(1.3), want_check(wc)
|
bs_norm(1.3), want_check(wc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
SylvParams(const SylvParams &p)
|
SylvParams(const SylvParams &p) = default;
|
||||||
{
|
SylvParams &operator=(const SylvParams &p) = default;
|
||||||
copy(p);
|
|
||||||
}
|
|
||||||
SylvParams &
|
|
||||||
operator=(const SylvParams &p)
|
|
||||||
{
|
|
||||||
copy(p); return *this;
|
|
||||||
}
|
|
||||||
~SylvParams() = default;
|
~SylvParams() = default;
|
||||||
void print(const std::string &prefix) const;
|
void print(const std::string &prefix) const;
|
||||||
void print(std::ostream &fdesc, const std::string &prefix) const;
|
void print(std::ostream &fdesc, const std::string &prefix) const;
|
||||||
|
@ -209,4 +201,19 @@ private:
|
||||||
void copy(const SylvParams &p);
|
void copy(const SylvParams &p);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline std::ostream &
|
||||||
|
operator<<(std::ostream &out, SylvParams::solve_method m)
|
||||||
|
{
|
||||||
|
switch (m)
|
||||||
|
{
|
||||||
|
case SylvParams::iter:
|
||||||
|
out << "iterative";
|
||||||
|
break;
|
||||||
|
case SylvParams::recurse:
|
||||||
|
out << "recurse (a.k.a. triangular)";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* SYLV_PARAMS_H */
|
#endif /* SYLV_PARAMS_H */
|
||||||
|
|
Loading…
Reference in New Issue