12 using typename polysolve::nonlinear::Problem::Scalar;
13 using typename polysolve::nonlinear::Problem::THessian;
14 using typename polysolve::nonlinear::Problem::TVector;
21 const std::shared_ptr<SampleEnvelope>& envelope,
22 const double weight = 1,
23 bool check_step_validity =
true);
25 double value(
const TVector& x)
override;
26 void gradient(
const TVector& x, TVector& gradv)
override;
27 void hessian(
const TVector& x, THessian& hessian)
override
29 log_and_throw_error(
"Sparse functions do not exist, use dense solver");
31 void hessian(
const TVector& x, MatrixXd& hessian)
override;
33 void solution_changed(
const TVector& new_x)
override;
35 bool is_step_valid(
const TVector& x0,
const TVector& x1)
override;
38 std::shared_ptr<SampleEnvelope> m_envelope;
40 bool m_check_step_validity;
46 using typename polysolve::nonlinear::Problem::Scalar;
47 using typename polysolve::nonlinear::Problem::THessian;
48 using typename polysolve::nonlinear::Problem::TVector;
55 const std::shared_ptr<SampleEnvelope>& envelope,
56 const double weight = 1,
57 bool check_step_validity =
true);
59 double value(
const TVector& x)
override;
60 void gradient(
const TVector& x, TVector& gradv)
override;
61 void hessian(
const TVector& x, THessian& hessian)
override
63 log_and_throw_error(
"Sparse functions do not exist, use dense solver");
65 void hessian(
const TVector& x, MatrixXd& hessian)
override;
67 void solution_changed(
const TVector& new_x)
override;
69 bool is_step_valid(
const TVector& x0,
const TVector& x1)
override;
72 std::shared_ptr<SampleEnvelope> m_envelope;
74 bool m_check_step_validity;