33 real_t eval_prox_grad_step(
real_t γ,
crvec x,
crvec grad_ψ,
rvec x̂,
rvec p)
const { ++
evaluations->prox_grad_step;
return timed(
evaluations->time.prox_grad_step, std::bind(&std::remove_cvref_t<Problem>::eval_prox_grad_step, &
problem, γ, x, grad_ψ, x̂, p)); }
42 void eval_hess_L_prod(
crvec x,
crvec y,
real_t scale,
crvec v,
rvec Hv)
const requires requires { &std::remove_cvref_t<Problem>::eval_hess_L_prod; } { ++
evaluations->hess_L_prod;
return timed(
evaluations->time.hess_L_prod, std::bind(&std::remove_cvref_t<Problem>::eval_hess_L_prod, &
problem, x, y,
scale,
v,
Hv)); }
45 void eval_hess_ψ_prod(
crvec x,
crvec y,
crvec Σ,
real_t scale,
crvec v,
rvec Hv)
const requires requires { &std::remove_cvref_t<Problem>::eval_hess_ψ_prod; } { ++
evaluations->hess_ψ_prod;
return timed(
evaluations->time.hess_ψ_prod, std::bind(&std::remove_cvref_t<Problem>::eval_hess_ψ_prod, &
problem, x, y, Σ,
scale,
v,
Hv)); }
46 void eval_hess_ψ(
crvec x,
crvec y,
crvec Σ,
real_t scale,
rvec H_values)
const requires requires { &std::remove_cvref_t<Problem>::eval_hess_ψ; } { ++
evaluations->hess_ψ;
return timed(
evaluations->time.hess_ψ, std::bind(&std::remove_cvref_t<Problem>::eval_hess_ψ, &
problem, x, y, Σ,
scale,
H_values)); }
53 void eval_grad_ψ(
crvec x,
crvec y,
crvec Σ,
rvec grad_ψ,
rvec work_n,
rvec work_m)
const requires requires { &std::remove_cvref_t<Problem>::eval_grad_ψ; } { ++
evaluations->grad_ψ;
return timed(
evaluations->time.grad_ψ, std::bind(&std::remove_cvref_t<Problem>::eval_grad_ψ, &
problem, x, y, Σ, grad_ψ, work_n, work_m)); }
54 real_t eval_ψ_grad_ψ(
crvec x,
crvec y,
crvec Σ,
rvec grad_ψ,
rvec work_n,
rvec work_m)
const requires requires { &std::remove_cvref_t<Problem>::eval_ψ_grad_ψ; } { ++
evaluations->ψ_grad_ψ;
return timed(
evaluations->time.ψ_grad_ψ, std::bind(&std::remove_cvref_t<Problem>::eval_ψ_grad_ψ, &
problem, x, y, Σ, grad_ψ, work_n, work_m)); }
84 std::shared_ptr<EvalCounter>
evaluations = std::make_shared<EvalCounter>();
94 template <
class...
Args>
96 requires(!std::is_lvalue_reference_v<Problem>)
109 template <
class TimeT,
class FunT>
112 return std::forward<FunT>(f)();