33 using Cut = std::pair<Arr036, double>;
36 std::unique_ptr<Cut>
cut = std::make_unique<Cut>();
53 const auto n =
x.size();
54 if (
mgr.factor(std::forward<Fn>(
getA))) {
57 const auto ep =
mgr.witness();
59 for (
auto i = 0
U;
i !=
n; ++
i) {
62 this->cut->first = std::move(
g);
63 this->cut->second = std::move(
ep);
64 return this->cut.get();
Shared skeleton for Linear Matrix Inequality oracles.
Definition lmi_oracle_base.hpp:31
std::unique_ptr< Cut > cut
Storage for the cut returned by assess_feas.
Definition lmi_oracle_base.hpp:36
auto assess_impl(LDLT &mgr, const std::vector< Mat > &F, const int sign, const Arr036 &x, Fn &&getA) -> Cut *
Shared assess_feas skeleton: factor, witness, sym_quad, pack cut.
Definition lmi_oracle_base.hpp:50
std::pair< Arr036, double > Cut
Definition lmi_oracle_base.hpp:33
auto invalid_value() -> T
Return an invalid/sentinel value for type T.
Definition cutting_plane.hpp:27
LDL^T factorization manager for symmetric matrices.