diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0e95056..11e302b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,13 +6,13 @@ repos: hooks: - id: cmake-format - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v20.1.5 + rev: v21.1.0 hooks: - id: clang-format args: - --style=Google - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: check-added-large-files - id: check-ast diff --git a/include/eiquadprog/eiquadprog-rt.hxx b/include/eiquadprog/eiquadprog-rt.hxx index b96c7f2..076179f 100644 --- a/include/eiquadprog/eiquadprog-rt.hxx +++ b/include/eiquadprog/eiquadprog-rt.hxx @@ -39,9 +39,9 @@ RtEiquadprog::~RtEiquadprog() {} template bool RtEiquadprog::add_constraint( - typename RtMatrixX::d &R, - typename RtMatrixX::d &J, typename RtVectorX::d &d, - int &iq, double &R_norm) { + typename RtMatrixX::d& R, + typename RtMatrixX::d& J, typename RtVectorX::d& d, + int& iq, double& R_norm) { // int n=J.rows(); #ifdef EIQGUADPROG_TRACE_SOLVER std::cerr << "Add constraint " << iq << '/'; @@ -117,10 +117,10 @@ into column iq - 1 of R template void RtEiquadprog::delete_constraint( - typename RtMatrixX::d &R, - typename RtMatrixX::d &J, - typename RtVectorX::i &A, - typename RtVectorX::d &u, int &iq, int l) { + typename RtMatrixX::d& R, + typename RtMatrixX::d& J, + typename RtVectorX::i& A, + typename RtVectorX::d& u, int& iq, int l) { // int n = J.rows(); #ifdef EIQGUADPROG_TRACE_SOLVER std::cerr << "Delete constraint " << l << ' ' << iq; @@ -189,13 +189,13 @@ void RtEiquadprog::delete_constraint( template RtEiquadprog_status RtEiquadprog::solve_quadprog( - const typename RtMatrixX::d &Hess, - const typename RtVectorX::d &g0, - const typename RtMatrixX::d &CE, - const typename RtVectorX::d &ce0, - const typename RtMatrixX::d &CI, - const typename RtVectorX::d &ci0, - typename RtVectorX::d &x) { + const typename RtMatrixX::d& Hess, + const typename RtVectorX::d& g0, + const typename RtMatrixX::d& CE, + const typename RtVectorX::d& ce0, + const typename RtMatrixX::d& CI, + const typename RtVectorX::d& ci0, + typename RtVectorX::d& x) { int i, k, l; // indices int ip; // index of the chosen violated constraint int iq; // current number of active constraints diff --git a/include/eiquadprog/eiquadprog-utils.hxx b/include/eiquadprog/eiquadprog-utils.hxx index d432590..bdcb565 100644 --- a/include/eiquadprog/eiquadprog-utils.hxx +++ b/include/eiquadprog/eiquadprog-utils.hxx @@ -24,20 +24,20 @@ inline Scalar distance(Scalar a, Scalar b) { } template -void print_vector(const char *name, Eigen::MatrixBase &x) { +void print_vector(const char* name, Eigen::MatrixBase& x) { std::cerr << name << x.transpose() << std::endl; } template -void print_matrix(const char *name, Eigen::MatrixBase &x) { +void print_matrix(const char* name, Eigen::MatrixBase& x) { std::cerr << name << std::endl << x << std::endl; } template -void print_vector(const char *name, Eigen::MatrixBase &x, int /*n*/) { +void print_vector(const char* name, Eigen::MatrixBase& x, int /*n*/) { print_vector(name, x); } template -void print_matrix(const char *name, Eigen::MatrixBase &x, int /*n*/) { +void print_matrix(const char* name, Eigen::MatrixBase& x, int /*n*/) { print_matrix(name, x); } diff --git a/include/eiquadprog/eiquadprog.hpp b/include/eiquadprog/eiquadprog.hpp index 83356ab..8753692 100644 --- a/include/eiquadprog/eiquadprog.hpp +++ b/include/eiquadprog/eiquadprog.hpp @@ -84,64 +84,64 @@ namespace eiquadprog { namespace solvers { -inline void compute_d(Eigen::VectorXd &d, const Eigen::MatrixXd &J, - const Eigen::VectorXd &np) { +inline void compute_d(Eigen::VectorXd& d, const Eigen::MatrixXd& J, + const Eigen::VectorXd& np) { d.noalias() = J.adjoint() * np; } -inline void update_z(Eigen::VectorXd &z, const Eigen::MatrixXd &J, - const Eigen::VectorXd &d, size_t iq) { +inline void update_z(Eigen::VectorXd& z, const Eigen::MatrixXd& J, + const Eigen::VectorXd& d, size_t iq) { z.noalias() = J.rightCols(z.size() - iq) * d.tail(d.size() - iq); } -inline void update_r(const Eigen::MatrixXd &R, Eigen::VectorXd &r, - const Eigen::VectorXd &d, size_t iq) { +inline void update_r(const Eigen::MatrixXd& R, Eigen::VectorXd& r, + const Eigen::VectorXd& d, size_t iq) { r.head(iq) = d.head(iq); R.topLeftCorner(iq, iq).triangularView().solveInPlace( r.head(iq)); } -bool add_constraint(Eigen::MatrixXd &R, Eigen::MatrixXd &J, Eigen::VectorXd &d, - size_t &iq, double &R_norm); -void delete_constraint(Eigen::MatrixXd &R, Eigen::MatrixXd &J, - Eigen::VectorXi &A, Eigen::VectorXd &u, size_t p, - size_t &iq, size_t l); +bool add_constraint(Eigen::MatrixXd& R, Eigen::MatrixXd& J, Eigen::VectorXd& d, + size_t& iq, double& R_norm); +void delete_constraint(Eigen::MatrixXd& R, Eigen::MatrixXd& J, + Eigen::VectorXi& A, Eigen::VectorXd& u, size_t p, + size_t& iq, size_t l); -double solve_quadprog(Eigen::LLT &chol, - double c1, Eigen::VectorXd &g0, const Eigen::MatrixXd &CE, - const Eigen::VectorXd &ce0, const Eigen::MatrixXd &CI, - const Eigen::VectorXd &ci0, Eigen::VectorXd &x, - Eigen::VectorXi &A, size_t &q); +double solve_quadprog(Eigen::LLT& chol, + double c1, Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, + const Eigen::VectorXd& ce0, const Eigen::MatrixXd& CI, + const Eigen::VectorXd& ci0, Eigen::VectorXd& x, + Eigen::VectorXi& A, size_t& q); -double solve_quadprog(Eigen::LLT &chol, - double c1, Eigen::VectorXd &g0, const Eigen::MatrixXd &CE, - const Eigen::VectorXd &ce0, const Eigen::MatrixXd &CI, - const Eigen::VectorXd &ci0, Eigen::VectorXd &x, - Eigen::VectorXd &y, Eigen::VectorXi &A, size_t &q); +double solve_quadprog(Eigen::LLT& chol, + double c1, Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, + const Eigen::VectorXd& ce0, const Eigen::MatrixXd& CI, + const Eigen::VectorXd& ci0, Eigen::VectorXd& x, + Eigen::VectorXd& y, Eigen::VectorXi& A, size_t& q); EIQUADPROG_DEPRECATED -inline double solve_quadprog2(Eigen::LLT &chol, - double c1, Eigen::VectorXd &g0, - const Eigen::MatrixXd &CE, - const Eigen::VectorXd &ce0, - const Eigen::MatrixXd &CI, - const Eigen::VectorXd &ci0, Eigen::VectorXd &x, - Eigen::VectorXi &A, size_t &q) { +inline double solve_quadprog2(Eigen::LLT& chol, + double c1, Eigen::VectorXd& g0, + const Eigen::MatrixXd& CE, + const Eigen::VectorXd& ce0, + const Eigen::MatrixXd& CI, + const Eigen::VectorXd& ci0, Eigen::VectorXd& x, + Eigen::VectorXi& A, size_t& q) { return solve_quadprog(chol, c1, g0, CE, ce0, CI, ci0, x, A, q); } /* solve_quadprog is used for on-demand QP solving */ -double solve_quadprog(Eigen::MatrixXd &G, Eigen::VectorXd &g0, - const Eigen::MatrixXd &CE, const Eigen::VectorXd &ce0, - const Eigen::MatrixXd &CI, const Eigen::VectorXd &ci0, - Eigen::VectorXd &x, Eigen::VectorXi &activeSet, - size_t &activeSetSize); - -double solve_quadprog(Eigen::MatrixXd &G, Eigen::VectorXd &g0, - const Eigen::MatrixXd &CE, const Eigen::VectorXd &ce0, - const Eigen::MatrixXd &CI, const Eigen::VectorXd &ci0, - Eigen::VectorXd &x, Eigen::VectorXd &y, - Eigen::VectorXi &activeSet, size_t &activeSetSize); +double solve_quadprog(Eigen::MatrixXd& G, Eigen::VectorXd& g0, + const Eigen::MatrixXd& CE, const Eigen::VectorXd& ce0, + const Eigen::MatrixXd& CI, const Eigen::VectorXd& ci0, + Eigen::VectorXd& x, Eigen::VectorXi& activeSet, + size_t& activeSetSize); + +double solve_quadprog(Eigen::MatrixXd& G, Eigen::VectorXd& g0, + const Eigen::MatrixXd& CE, const Eigen::VectorXd& ce0, + const Eigen::MatrixXd& CI, const Eigen::VectorXd& ci0, + Eigen::VectorXd& x, Eigen::VectorXd& y, + Eigen::VectorXi& activeSet, size_t& activeSetSize); // } } // namespace solvers diff --git a/src/eiquadprog-fast.cpp b/src/eiquadprog-fast.cpp index b80ecbc..1278187 100644 --- a/src/eiquadprog-fast.cpp +++ b/src/eiquadprog-fast.cpp @@ -42,8 +42,8 @@ void EiquadprogFast::reset(size_t nVars, size_t nEqCon, size_t nIneqCon) { #endif } -bool EiquadprogFast::add_constraint(MatrixXd &R, MatrixXd &J, VectorXd &d, - size_t &iq, double &R_norm) { +bool EiquadprogFast::add_constraint(MatrixXd& R, MatrixXd& J, VectorXd& d, + size_t& iq, double& R_norm) { size_t nVars = J.rows(); #ifdef EIQGUADPROG_TRACE_SOLVER std::cerr << "Add constraint " << iq << '/'; @@ -117,8 +117,8 @@ into column iq - 1 of R return true; } -void EiquadprogFast::delete_constraint(MatrixXd &R, MatrixXd &J, VectorXi &A, - VectorXd &u, size_t nEqCon, size_t &iq, +void EiquadprogFast::delete_constraint(MatrixXd& R, MatrixXd& J, VectorXi& A, + VectorXd& u, size_t nEqCon, size_t& iq, size_t l) { size_t nVars = R.rows(); #ifdef EIQGUADPROG_TRACE_SOLVER @@ -187,8 +187,8 @@ void EiquadprogFast::delete_constraint(MatrixXd &R, MatrixXd &J, VectorXi &A, } EiquadprogFast_status EiquadprogFast::solve_quadprog( - const MatrixXd &Hess, const VectorXd &g0, const MatrixXd &CE, - const VectorXd &ce0, const MatrixXd &CI, const VectorXd &ci0, VectorXd &x) { + const MatrixXd& Hess, const VectorXd& g0, const MatrixXd& CE, + const VectorXd& ce0, const MatrixXd& CI, const VectorXd& ci0, VectorXd& x) { const size_t nVars = g0.size(); const size_t nEqCon = ce0.size(); const size_t nIneqCon = ci0.size(); diff --git a/src/eiquadprog.cpp b/src/eiquadprog.cpp index 746f4cc..72ae047 100644 --- a/src/eiquadprog.cpp +++ b/src/eiquadprog.cpp @@ -6,10 +6,10 @@ using namespace Eigen; /* solve_quadprog is used for on-demand QP solving */ -double solve_quadprog(MatrixXd &G, VectorXd &g0, const MatrixXd &CE, - const VectorXd &ce0, const MatrixXd &CI, - const VectorXd &ci0, VectorXd &x, VectorXi &activeSet, - size_t &activeSetSize) { +double solve_quadprog(MatrixXd& G, VectorXd& g0, const MatrixXd& CE, + const VectorXd& ce0, const MatrixXd& CI, + const VectorXd& ci0, VectorXd& x, VectorXi& activeSet, + size_t& activeSetSize) { Eigen::DenseIndex p = CE.cols(); Eigen::DenseIndex m = CI.cols(); @@ -19,10 +19,10 @@ double solve_quadprog(MatrixXd &G, VectorXd &g0, const MatrixXd &CE, activeSetSize); } -double solve_quadprog(MatrixXd &G, VectorXd &g0, const MatrixXd &CE, - const VectorXd &ce0, const MatrixXd &CI, - const VectorXd &ci0, VectorXd &x, VectorXd &y, - VectorXi &activeSet, size_t &activeSetSize) { +double solve_quadprog(MatrixXd& G, VectorXd& g0, const MatrixXd& CE, + const VectorXd& ce0, const MatrixXd& CI, + const VectorXd& ci0, VectorXd& x, VectorXd& y, + VectorXi& activeSet, size_t& activeSetSize) { LLT chol(G.cols()); double c1; /* compute the trace of the original matrix G */ @@ -35,10 +35,10 @@ double solve_quadprog(MatrixXd &G, VectorXd &g0, const MatrixXd &CE, activeSetSize); } -double solve_quadprog(LLT &chol, double c1, VectorXd &g0, - const MatrixXd &CE, const VectorXd &ce0, - const MatrixXd &CI, const VectorXd &ci0, VectorXd &x, - VectorXi &activeSet, size_t &activeSetSize) { +double solve_quadprog(LLT& chol, double c1, VectorXd& g0, + const MatrixXd& CE, const VectorXd& ce0, + const MatrixXd& CI, const VectorXd& ci0, VectorXd& x, + VectorXi& activeSet, size_t& activeSetSize) { Eigen::DenseIndex p = CE.cols(); Eigen::DenseIndex m = CI.cols(); @@ -53,10 +53,10 @@ double solve_quadprog(LLT &chol, double c1, VectorXd &g0, * @param A Output vector containing the indexes of the active constraints. * @param q Output value representing the size of the active set. */ -double solve_quadprog(LLT &chol, double c1, VectorXd &g0, - const MatrixXd &CE, const VectorXd &ce0, - const MatrixXd &CI, const VectorXd &ci0, VectorXd &x, - VectorXd &u, VectorXi &A, size_t &q) { +double solve_quadprog(LLT& chol, double c1, VectorXd& g0, + const MatrixXd& CE, const VectorXd& ce0, + const MatrixXd& CI, const VectorXd& ci0, VectorXd& x, + VectorXd& u, VectorXi& A, size_t& q) { size_t i, k, l; /* indices */ size_t ip, me, mi; size_t n = g0.size(); @@ -358,8 +358,8 @@ double solve_quadprog(LLT &chol, double c1, VectorXd &g0, goto l2a; } -bool add_constraint(MatrixXd &R, MatrixXd &J, VectorXd &d, size_t &iq, - double &R_norm) { +bool add_constraint(MatrixXd& R, MatrixXd& J, VectorXd& d, size_t& iq, + double& R_norm) { size_t n = J.rows(); #ifdef EIQGUADPROG_TRACE_SOLVER std::cerr << "Add constraint " << iq << '/'; @@ -418,8 +418,8 @@ bool add_constraint(MatrixXd &R, MatrixXd &J, VectorXd &d, size_t &iq, return true; } -void delete_constraint(MatrixXd &R, MatrixXd &J, VectorXi &A, VectorXd &u, - size_t p, size_t &iq, size_t l) { +void delete_constraint(MatrixXd& R, MatrixXd& J, VectorXi& A, VectorXd& u, + size_t p, size_t& iq, size_t l) { size_t n = R.rows(); #ifdef EIQGUADPROG_TRACE_SOLVER std::cerr << "Delete constraint " << l << ' ' << iq; diff --git a/tests/TestA.cpp b/tests/TestA.cpp index 9c1ac36..d480483 100644 --- a/tests/TestA.cpp +++ b/tests/TestA.cpp @@ -18,6 +18,6 @@ A::A() : Q_(2, 2), C_(2), Aeq_(0, 2), Beq_(0), Aineq_(0, 2), Bineq_(0), QP_() { expected_ = EIQUADPROG_FAST_OPTIMAL; } -EiquadprogFast_status A::solve(Eigen::VectorXd &x) { +EiquadprogFast_status A::solve(Eigen::VectorXd& x) { return QP_.solve_quadprog(Q_, C_, Aeq_, Beq_, Aineq_, Bineq_, x); } diff --git a/tests/TestA.hpp b/tests/TestA.hpp index 93858a7..19cd6ba 100644 --- a/tests/TestA.hpp +++ b/tests/TestA.hpp @@ -21,7 +21,7 @@ class A { eiquadprog::solvers::EiquadprogFast QP_; A(); - eiquadprog::solvers::EiquadprogFast_status solve(Eigen::VectorXd &x); + eiquadprog::solvers::EiquadprogFast_status solve(Eigen::VectorXd& x); }; } // namespace tests