56 MnPrint print(
"FumiliErrorUpdator");
65 double eps = 8 * std::numeric_limits<double>::min();
66 for (
int j = 0; j < nvar; j++) {
67 h(j, j) *= (1. + lambda);
69 if (std::fabs(
h(j, j)) < eps) {
72 h(j, j) = lambda * eps;
80 print.
Warn(
"inversion fails; return diagonal matrix");
82 for (
unsigned int i = 0; i <
h.Nrow(); i++) {
83 h(i, i) = 1. /
h(i, i);
virtual MinimumError Update(const MinimumState &fMinimumState, const MinimumParameters &fMinimumParameters, const GradientCalculator &fGradientCalculator, double lambda) const
Member function that calculates the Error matrix (or the Hessian matrix containing the (approximate) ...
const MnAlgebraicSymMatrix & Hessian() const
interface class for gradient calculators
Class describing a symmetric matrix of size n.
unsigned int size() const
MinimumError keeps the inv.
const MnAlgebraicVector & Vec() const
MinimumState keeps the information (position, Gradient, 2nd deriv, etc) after one minimization step (...
void Warn(const Ts &... args)
int Invert(LASymMatrix &)
double sum_of_elements(const LASymMatrix &)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...