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
|
||||
SylvParams::print(std::ostream &fdesc, const std::string &prefix) const
|
||||
{
|
||||
method.print(fdesc, prefix, "method ");
|
||||
rcondA1.print(fdesc, prefix, "reci. cond1 A ");
|
||||
rcondAI.print(fdesc, prefix, "reci. condInf A ");
|
||||
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) ");
|
||||
}
|
||||
|
||||
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
|
||||
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_errI; // rel. vector Inf norm of A*X-B*X*kron(C,..,C)-D
|
||||
DoubleParamItem cpu_time; // time of the job in CPU seconds
|
||||
// note: remember to change copy() if adding/removing member
|
||||
|
||||
SylvParams(bool wc = false)
|
||||
: method(recurse), convergence_tol(1.e-30), max_num_iter(15),
|
||||
bs_norm(1.3), want_check(wc)
|
||||
{
|
||||
}
|
||||
SylvParams(const SylvParams &p)
|
||||
{
|
||||
copy(p);
|
||||
}
|
||||
SylvParams &
|
||||
operator=(const SylvParams &p)
|
||||
{
|
||||
copy(p); return *this;
|
||||
}
|
||||
SylvParams(const SylvParams &p) = default;
|
||||
SylvParams &operator=(const SylvParams &p) = default;
|
||||
~SylvParams() = default;
|
||||
void print(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);
|
||||
};
|
||||
|
||||
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 */
|
||||
|
|
Loading…
Reference in New Issue