Ruiz Equilibration

Perform Ruiz diagonal equilibration of a matrix in a way which ensures that members of subcones are scaled equally (otherwise equilibration would not preserve, for example, a Second-Order Cone Program).

C++ API

Note

The cutoff parameter only effects parallel performance and is used to decide whether a subcone is sufficiently large to be treated separately.

void cone::RuizEquil(Matrix<F> &A, Matrix<F> &B, Matrix<Base<F>> &dRowA, Matrix<Base<F>> &dRowB, Matrix<Base<F>> &dCol, const Matrix<Int> &orders, const Matrix<Int> &firstInds, bool progress = false)
void cone::RuizEquil(ElementalMatrix<F> &A, ElementalMatrix<F> &B, ElementalMatrix<Base<F>> &dRowA, ElementalMatrix<Base<F>> &dRowB, ElementalMatrix<Base<F>> &dCol, const ElementalMatrix<Int> &orders, const ElementalMatrix<Int> &firstInds, Int cutoff = 1000, bool progress = false)
void cone::RuizEquil(SparseMatrix<F> &A, SparseMatrix<F> &B, Matrix<Base<F>> &dRowA, Matrix<Base<F>> &dRowB, Matrix<Base<F>> &dCol, const Matrix<Int> &orders, const Matrix<Int> &firstInds, bool progress = false)
void cone::RuizEquil(DistSparseMatrix<F> &A, DistSparseMatrix<F> &B, DistMultiVec<Base<F>> &dRowA, DistMultiVec<Base<F>> &dRowB, DistMultiVec<Base<F>> &dCol, const DistMultiVec<Int> &orders, const DistMultiVec<Int> &firstInds, Int cutoff = 1000, bool progress = false)

C API

TODO

Python API

TODO