Direct Second-Order Cone Programs¶
\[\begin{split}\min_x & \{\; c^T x \; | \; A x = b \;\wedge\; x \in \mathcal{K} \;\}, \\
\max_{y,z} & \{\; - b^T y \; | \; A^T y - z + c = 0 \;\wedge\; z \in \mathcal{K} \;\}\end{split}\]
In order to represent that product of second-order cones, the following routinesaccept two integer vectors which are of the same length as \(x\) and \(z\):
orders
: The size of the subcone containing each entry of \(x\)firstInds
: The first index (counting from zero) of the subcone containing each entry of \(x\)
C++ API¶
-
void
SOCP
(const Matrix<Real> &A, const Matrix<Real> &b, const Matrix<Real> &c, const Matrix<Int> &orders, const Matrix<Int> &firstInds, Matrix<Real> &x, Matrix<Real> &y, Matrix<Real> &z, const socp::direct::Ctrl<Real> &ctrl = socp::direct::Ctrl<Real>(false))¶
-
void
SOCP
(const ElementalMatrix<Real> &A, const ElementalMatrix<Real> &b, const ElementalMatrix<Real> &c, const ElementalMatrix<Int> &orders, const ElementalMatrix<Int> &firstInds, ElementalMatrix<Real> &x, ElementalMatrix<Real> &y, ElementalMatrix<Real> &z, const socp::direct::Ctrl<Real> &ctrl = socp::direct::Ctrl<Real>(false))¶
-
void
SOCP
(const SparseMatrix<Real> &A, const Matrix<Real> &b, const Matrix<Real> &c, const Matrix<Int> &orders, const Matrix<Int> &firstInds, Matrix<Real> &x, Matrix<Real> &y, Matrix<Real> &z, const socp::direct::Ctrl<Real> &ctrl = socp::direct::Ctrl<Real>(true))¶
-
void
SOCP
(const DistSparseMatrix<Real> &A, const DistMultiVec<Real> &b, const DistMultiVec<Real> &c, const DistMultiVec<Int> &orders, const DistMultiVec<Int> &firstInds, DistMultiVec<Real> &x, DistMultiVec<Real> &y, DistMultiVec<Real> &z, const socp::direct::Ctrl<Real> &ctrl = socp::direct::Ctrl<Real>(true))¶
C API¶
Single-precision¶
-
ElError
ElSOCPDirect_s
(ElConstMatrix_s A, ElConstMatrix_s b, ElConstMatrix_s c, ElConstMatrix_i orders, ElConstMatrix_i firstInds, ElMatrix_s x, ElMatrix_s y, ElMatrix_s z)¶
-
ElError
ElSOCPDirectDist_s
(ElConstDistMatrix_s A, ElConstDistMatrix_s b, ElConstDistMatrix_s c, ElConstDistMatrix_i orders, ElConstDistMatrix_i firstInds, ElDistMatrix_s x, ElDistMatrix_s y, ElDistMatrix_s z)¶
Double-precision¶
-
ElError
ElSOCPDirect_d
(ElConstMatrix_d A, ElConstMatrix_d b, ElConstMatrix_d c, ElConstMatrix_i orders, ElConstMatrix_i firstInds, ElMatrix_d x, ElMatrix_d y, ElMatrix_d z)¶
-
ElError
ElSOCPDirectDist_d
(ElConstDistMatrix_d A, ElConstDistMatrix_d b, ElConstDistMatrix_d c, ElConstDistMatrix_i orders, ElConstDistMatrix_i firstInds, ElDistMatrix_d x, ElDistMatrix_d y, ElDistMatrix_d z)¶
-
ElError
ElSOCPDirectSparse_d
(ElConstSparseMatrix_d A, ElConstMatrix_d b, ElConstMatrix_d c, ElConstMatrix_i orders, ElConstMatrix_i firstInds, ElMatrix_d x, ElMatrix_d y, ElMatrix_d z)¶
-
ElError
ElSOCPDirectDistSparse_d
(ElConstDistSparseMatrix_d A, ElConstDistMultiVec_d b, ElConstDistMultiVec_d c, ElConstDistMultiVec_i orders, ElConstDistMultiVec_i firstInds, ElDistMultiVec_d x, ElDistMultiVec_d y, ElDistMultiVec_d z)¶
Expert interface¶
Single-precision¶
-
ElError
ElSOCPDirectX_s
(ElConstMatrix_s A, ElConstMatrix_s b, ElConstMatrix_s c, ElConstMatrix_i orders, ElConstMatrix_i firstInds, ElMatrix_s x, ElMatrix_s y, ElMatrix_s z, ElSOCPDirectCtrl_s ctrl)¶
-
ElError
ElSOCPDirectXDist_s
(ElConstDistMatrix_s A, ElConstDistMatrix_s b, ElConstDistMatrix_s c, ElConstDistMatrix_i orders, ElConstDistMatrix_i firstInds, ElDistMatrix_s x, ElDistMatrix_s y, ElDistMatrix_s z, ElSOCPDirectCtrl_s ctrl)¶
Double-precision¶
-
ElError
ElSOCPDirectX_d
(ElConstMatrix_d A, ElConstMatrix_d b, ElConstMatrix_d c, ElConstMatrix_i orders, ElConstMatrix_i firstInds, ElMatrix_d x, ElMatrix_d y, ElMatrix_d z, ElSOCPDirectCtrl_d ctrl)¶
-
ElError
ElSOCPDirectXDist_d
(ElConstDistMatrix_d A, ElConstDistMatrix_d b, ElConstDistMatrix_d c, ElConstDistMatrix_i orders, ElConstDistMatrix_i firstInds, ElDistMatrix_d x, ElDistMatrix_d y, ElDistMatrix_d z, ElSOCPDirectCtrl_d ctrl)¶