39 template <
class HessFun>
44 auto v = [n](
auto &
v) {
return v.topRows(n); };
45 auto z =
v(this->z),
r =
v(this->r),
d =
v(this->d),
Bd =
v(this->Bd);
69 const auto max_iter =
static_cast<index_t>(
109 if (std::sqrt(
r_next_sq) < tolerance || i > max_iter)
139 return std::make_tuple(std::fmin(
ta,
tb), std::fmax(
ta,
tb));
#define USING_ALPAQA_CONFIG(Conf)
typename Conf::real_t real_t
typename Conf::index_t index_t
typename Conf::length_t length_t
typename Conf::crvec crvec
Steihaug conjugate gradients procedure based on https://github.com/scipy/scipy/blob/583e70a50573169fc...
SteihaugCG(const Params ¶ms)
real_t solve(const auto &grad, const HessFun &hess_prod, real_t trust_radius, rvec step) const
static auto get_boundaries_intersections(crvec z, crvec d, real_t trust_radius)
Solve the scalar quadratic equation ||z + t d|| == trust_radius.