QPgen
What it does
QPgen is a MATLAB toolbox that generates C code that solve convex parametric problems of the form:
minimize  \(\tfrac{1}{2}x^THx+g^Tx+h(Cx)\) 
subject to  \(Ax=b\),

where:
\(x\in\mathbf{R}^n\) is the variable to be decided
\(H\in\mathbf{R}^{n\times n}\) is a positive semi definite real data matrix
\(C\in\mathbf{R}^{p\times n}\) and \(A\in\mathbf{R}^{m\times n}\) are fixed data matrices
\(h : \mathbf{R}^p\to\mathbf{R}\cup\{\infty\}\) is a sum of piecewise linear functions which models, e.g.,
The generated C code takes \(g\in\mathbf{R}^n\) and/or \(b\in\mathbf{R}^m\) as inputs and solves the corresponding problem instance.
How it does it
The generated C code uses one of the following three algorithms to solve the optimization problem instances:
The alternating direction method of multipliers (ADMM)
Fast dual proximal gradient method (FGMdual)
Fast primal proximal gradient method (FGMprimal)
Features of the generated C code:
It usually has very good performance (up to 10 000 times faster than standard software, see examples)
It can be made library free
It can be made division free for fixedpoint implementations
Keys points that enable good performance:
Optimal preconditioning and parameter selection
Efficient handling of soft constraints (without introducing additional variables)
Solver tailoring to specific parametric program by code generation
Offline matrix factorization
Limited online data checks
