The SDP is defined by the following data:
The kth row of holds the symmetric block diagonal matrix stored as a vector of length q
The user has a choice of four ways to set up the data. In all cases, if a matrix has more than one block, it must be stored in sparse format. If it has only a single block, then it can be stored either in sparse or in full format, at the user's discretion. However, in the case of a single block, it is recommended that the initial and be provided as full matrices, as the solutions will most likely be full, even if the data itself is sparse.
By default, the matrix passed to svec.m is assumed to have dense blocks. If the user wishes to take advantage of the sparsity in the blocks of this matrix, then a third, optional parameter sparseblks can be passed to svec.m. When , svec.m treats the blocks as sparse, and returns a sparse vector. These routines preserve the inner product, i.e. if and for matrices , then
The user must also construct , and .
It requires that the block diagonal matrices be stored in variables named . Thus if m=100, the matrix must be stored in a variable A100. The user must also construct , and .
When makeA.m is called by the user, the blocks of the block diagonal data matrices are treated by default as being dense. If they are sparse, and the user wishes to take advantage of this sparsity, a third parameter sparseblks may be passed to the routine makeA.m, and this parameter should be set to the value 1. In this case the matrix will be stored using the sparse matrix storage option.
The data must be stored in a special compact format that is described in Appendix A. The routine export.m implements the reverse operation, saving a problem's data in an ASCII file, in a format recognized by import.m.