6#include <Eigen/SparseCore>
18template <
typename Scalar>
19Scalar kkt_error(
const Eigen::Vector<Scalar, Eigen::Dynamic>& g) {
25 return g.template lpNorm<1>();
39template <
typename Scalar>
40Scalar kkt_error(
const Eigen::Vector<Scalar, Eigen::Dynamic>& g,
41 const Eigen::SparseMatrix<Scalar>& A_e,
42 const Eigen::Vector<Scalar, Eigen::Dynamic>& c_e,
43 const Eigen::Vector<Scalar, Eigen::Dynamic>& y) {
50 return (g - A_e.transpose() * y).template lpNorm<1>() +
51 c_e.template lpNorm<1>();
72template <
typename Scalar>
73Scalar kkt_error(
const Eigen::Vector<Scalar, Eigen::Dynamic>& g,
74 const Eigen::SparseMatrix<Scalar>& A_e,
75 const Eigen::Vector<Scalar, Eigen::Dynamic>& c_e,
76 const Eigen::SparseMatrix<Scalar>& A_i,
77 const Eigen::Vector<Scalar, Eigen::Dynamic>& c_i,
78 const Eigen::Vector<Scalar, Eigen::Dynamic>& s,
79 const Eigen::Vector<Scalar, Eigen::Dynamic>& y,
80 const Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar μ) {
89 const auto S = s.asDiagonal();
90 const Eigen::Vector<Scalar, Eigen::Dynamic> μe =
91 Eigen::Vector<Scalar, Eigen::Dynamic>::Constant(s.rows(), μ);
93 return (g - A_e.transpose() * y - A_i.transpose() * z).template lpNorm<1>() +
94 (S * z - μe).
template lpNorm<1>() + c_e.template lpNorm<1>() +
95 (c_i - s).
template lpNorm<1>();