Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 14 additions & 14 deletions include/eiquadprog/eiquadprog-rt.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ RtEiquadprog<nVars, nEqCon, nIneqCon>::~RtEiquadprog() {}

template <int nVars, int nEqCon, int nIneqCon>
bool RtEiquadprog<nVars, nEqCon, nIneqCon>::add_constraint(
typename RtMatrixX<nVars, nVars>::d &R,
typename RtMatrixX<nVars, nVars>::d &J, typename RtVectorX<nVars>::d &d,
int &iq, double &R_norm) {
typename RtMatrixX<nVars, nVars>::d& R,
typename RtMatrixX<nVars, nVars>::d& J, typename RtVectorX<nVars>::d& d,
int& iq, double& R_norm) {
// int n=J.rows();
#ifdef EIQGUADPROG_TRACE_SOLVER
std::cerr << "Add constraint " << iq << '/';
Expand Down Expand Up @@ -117,10 +117,10 @@ into column iq - 1 of R

template <int nVars, int nEqCon, int nIneqCon>
void RtEiquadprog<nVars, nEqCon, nIneqCon>::delete_constraint(
typename RtMatrixX<nVars, nVars>::d &R,
typename RtMatrixX<nVars, nVars>::d &J,
typename RtVectorX<nIneqCon + nEqCon>::i &A,
typename RtVectorX<nIneqCon + nEqCon>::d &u, int &iq, int l) {
typename RtMatrixX<nVars, nVars>::d& R,
typename RtMatrixX<nVars, nVars>::d& J,
typename RtVectorX<nIneqCon + nEqCon>::i& A,
typename RtVectorX<nIneqCon + nEqCon>::d& u, int& iq, int l) {
// int n = J.rows();
#ifdef EIQGUADPROG_TRACE_SOLVER
std::cerr << "Delete constraint " << l << ' ' << iq;
Expand Down Expand Up @@ -189,13 +189,13 @@ void RtEiquadprog<nVars, nEqCon, nIneqCon>::delete_constraint(

template <int nVars, int nEqCon, int nIneqCon>
RtEiquadprog_status RtEiquadprog<nVars, nEqCon, nIneqCon>::solve_quadprog(
const typename RtMatrixX<nVars, nVars>::d &Hess,
const typename RtVectorX<nVars>::d &g0,
const typename RtMatrixX<nEqCon, nVars>::d &CE,
const typename RtVectorX<nEqCon>::d &ce0,
const typename RtMatrixX<nIneqCon, nVars>::d &CI,
const typename RtVectorX<nIneqCon>::d &ci0,
typename RtVectorX<nVars>::d &x) {
const typename RtMatrixX<nVars, nVars>::d& Hess,
const typename RtVectorX<nVars>::d& g0,
const typename RtMatrixX<nEqCon, nVars>::d& CE,
const typename RtVectorX<nEqCon>::d& ce0,
const typename RtMatrixX<nIneqCon, nVars>::d& CI,
const typename RtVectorX<nIneqCon>::d& ci0,
typename RtVectorX<nVars>::d& x) {
int i, k, l; // indices
int ip; // index of the chosen violated constraint
int iq; // current number of active constraints
Expand Down
8 changes: 4 additions & 4 deletions include/eiquadprog/eiquadprog-utils.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,20 @@ inline Scalar distance(Scalar a, Scalar b) {
}

template <class Derived>
void print_vector(const char *name, Eigen::MatrixBase<Derived> &x) {
void print_vector(const char* name, Eigen::MatrixBase<Derived>& x) {
std::cerr << name << x.transpose() << std::endl;
}
template <class Derived>
void print_matrix(const char *name, Eigen::MatrixBase<Derived> &x) {
void print_matrix(const char* name, Eigen::MatrixBase<Derived>& x) {
std::cerr << name << std::endl << x << std::endl;
}

template <class Derived>
void print_vector(const char *name, Eigen::MatrixBase<Derived> &x, int /*n*/) {
void print_vector(const char* name, Eigen::MatrixBase<Derived>& x, int /*n*/) {
print_vector(name, x);
}
template <class Derived>
void print_matrix(const char *name, Eigen::MatrixBase<Derived> &x, int /*n*/) {
void print_matrix(const char* name, Eigen::MatrixBase<Derived>& x, int /*n*/) {
print_matrix(name, x);
}

Expand Down
78 changes: 39 additions & 39 deletions include/eiquadprog/eiquadprog.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<Eigen::Upper>().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<Eigen::MatrixXd, Eigen::Lower> &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<Eigen::MatrixXd, Eigen::Lower>& 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<Eigen::MatrixXd, Eigen::Lower> &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<Eigen::MatrixXd, Eigen::Lower>& 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<Eigen::MatrixXd, Eigen::Lower> &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<Eigen::MatrixXd, Eigen::Lower>& 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
Expand Down
12 changes: 6 additions & 6 deletions src/eiquadprog-fast.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 << '/';
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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();
Expand Down
40 changes: 20 additions & 20 deletions src/eiquadprog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand All @@ -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<MatrixXd, Lower> chol(G.cols());
double c1;
/* compute the trace of the original matrix G */
Expand All @@ -35,10 +35,10 @@ double solve_quadprog(MatrixXd &G, VectorXd &g0, const MatrixXd &CE,
activeSetSize);
}

double solve_quadprog(LLT<MatrixXd, Lower> &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<MatrixXd, Lower>& 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();

Expand All @@ -53,10 +53,10 @@ double solve_quadprog(LLT<MatrixXd, Lower> &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<MatrixXd, Lower> &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<MatrixXd, Lower>& 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();
Expand Down Expand Up @@ -358,8 +358,8 @@ double solve_quadprog(LLT<MatrixXd, Lower> &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 << '/';
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion tests/TestA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
2 changes: 1 addition & 1 deletion tests/TestA.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down