6#include <Eigen/SparseCore>
16template <
typename Scalar>
17Scalar kkt_error(
const Eigen::Vector<Scalar, Eigen::Dynamic>& g) {
23 return g.template lpNorm<1>();
35template <
typename Scalar>
36Scalar kkt_error(
const Eigen::Vector<Scalar, Eigen::Dynamic>& g,
37 const Eigen::SparseMatrix<Scalar>& A_e,
38 const Eigen::Vector<Scalar, Eigen::Dynamic>& c_e,
39 const Eigen::Vector<Scalar, Eigen::Dynamic>& y) {
46 return (g - A_e.transpose() * y).template lpNorm<1>() +
47 c_e.template lpNorm<1>();
66template <
typename Scalar>
67Scalar kkt_error(
const Eigen::Vector<Scalar, Eigen::Dynamic>& g,
68 const Eigen::SparseMatrix<Scalar>& A_e,
69 const Eigen::Vector<Scalar, Eigen::Dynamic>& c_e,
70 const Eigen::SparseMatrix<Scalar>& A_i,
71 const Eigen::Vector<Scalar, Eigen::Dynamic>& c_i,
72 const Eigen::Vector<Scalar, Eigen::Dynamic>& s,
73 const Eigen::Vector<Scalar, Eigen::Dynamic>& y,
74 const Eigen::Vector<Scalar, Eigen::Dynamic>& z, Scalar μ) {
83 const auto S = s.asDiagonal();
84 const Eigen::Vector<Scalar, Eigen::Dynamic> μe =
85 Eigen::Vector<Scalar, Eigen::Dynamic>::Constant(s.rows(), μ);
87 return (g - A_e.transpose() * y - A_i.transpose() * z).template lpNorm<1>() +
88 (S * z - μe).
template lpNorm<1>() + c_e.template lpNorm<1>() +
89 (c_i - s).
template lpNorm<1>();