11extern int DSDPGetConstantMat(
int,
double,
char,
struct DSDPDataMat_Ops**,
void**);
19extern int DSDPGetDMat(
int,
double,
double[],
struct DSDPDataMat_Ops**,
void**);
29#define __FUNCT__ "SDPConeAddASparseVecMat"
49int SDPConeAddASparseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
50 double alpha,
int ishift,
51 const int ind[],
const double val[],
int nnz){
59 info=SDPConeGetStorageFormat(sdpcone,blockj,&UPLQ); DSDPCHKERR(info);
60 DSDPLogInfo(0,20,
"Set sparse matrix: Block: %d, Variable %d, size: %d, Nonzeros: %d .\n",blockj,vari,n,nnz);
63 info=
DSDPGetVechMat(n,ishift,alpha,ind,val,nnz,&dmatops,&dmat); DSDPCHKERR(info);
66 info=
DSDPGetVecUMat(n,ishift,alpha,ind,val,nnz,&dmatops,&dmat); DSDPCHKERR(info);
69 info=SDPConeAddDataMatrix(sdpcone,blockj,vari,n,UPLQ,dmatops,dmat); DSDPCHKERR(info);
70 DSDPFunctionReturn(0);
74#define __FUNCT__ "SDPConeAddSparseVecMat"
76int SDPConeAddSparseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
77 int ishift,
const int ind[],
const double val[],
int nnz){
82 info= SDPConeAddASparseVecMat(sdpcone,blockj,vari,n,
83 1.0,ishift,ind,val,nnz);DSDPCHKERR(info);
84 DSDPFunctionReturn(0);
88#define __FUNCT__ "SDPConeSetASparseVecMat"
152int SDPConeSetASparseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
153 double alpha,
int ishift,
154 const int ind[],
const double val[],
int nnz){
158 info=SDPConeRemoveDataMatrix(sdpcone,blockj,vari); DSDPCHKERR(info);
159 info=SDPConeAddASparseVecMat(sdpcone,blockj,vari,n,alpha,ishift,ind,val,nnz); DSDPCHKERR(info);
160 DSDPFunctionReturn(0);
164#define __FUNCT__ "SDPConeSetSparseVecMat"
166int SDPConeSetSparseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
167 int ishift,
const int ind[],
const double val[],
int nnz){
171 info=SDPConeSetASparseVecMat(sdpcone,blockj,vari,n,1.0,ishift,ind,val,nnz); DSDPCHKERR(info);
172 DSDPFunctionReturn(0);
177#define __FUNCT__ "SDPConeAddADenseVecMat"
203int SDPConeAddADenseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
204 double alpha,
double val[],
int nnz){
211 info=SDPConeGetStorageFormat(sdpcone,blockj,&UPLQ); DSDPCHKERR(info);
212 DSDPLogInfo(0,20,
"Set dense matrix: Block: %d, Variable %d, size: %d, Nonzeros: %d .\n",blockj,vari,n,nnz);
215 info=DSDPGetDMat(n,alpha,val,&dmatops,&dmat); DSDPCHKERR(info);
218 DSDPSETERR(1,
"Dense U Mat type does not exist.\n");
221 info=SDPConeAddDataMatrix(sdpcone,blockj,vari,n,UPLQ,dmatops,dmat); DSDPCHKERR(info);
222 DSDPFunctionReturn(0);
226#define __FUNCT__ "SDPConeAddDenseVecMat"
228int SDPConeAddDenseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
229 double val[],
int nnz){
232 info=SDPConeAddADenseVecMat(sdpcone,blockj,vari,n,1.0,val,nnz); DSDPCHKERR(info);
233 DSDPFunctionReturn(0);
238#define __FUNCT__ "SDPConeSetADenseVecMat"
265int SDPConeSetADenseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
266 double alpha,
double val[],
int nnz){
269 info=SDPConeRemoveDataMatrix(sdpcone,blockj,vari); DSDPCHKERR(info);
270 info=SDPConeAddADenseVecMat(sdpcone,blockj,vari,n,alpha,val,nnz); DSDPCHKERR(info);
271 DSDPFunctionReturn(0);
275#define __FUNCT__ "SDPConeSetDenseVecMat"
277int SDPConeSetDenseVecMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
278 double val[],
int nnz){
281 info=SDPConeSetADenseVecMat(sdpcone,blockj,vari,n,1.0,val,nnz); DSDPCHKERR(info);
282 DSDPFunctionReturn(0);
287#define __FUNCT__ "SDPConeAddIdentity"
299int SDPConeAddIdentity(
SDPCone sdpcone,
int blockj,
int vari,
int n,
307 DSDPLogInfo(0,20,
"Set identity matrix: Block: %d, Variable %d, size: %d, Multiple: %4.4e .\n",blockj,vari,n,val);
308 info=SDPConeGetStorageFormat(sdpcone,blockj,&UPLQ); DSDPCHKERR(info);
317 info=SDPConeAddDataMatrix(sdpcone,blockj,vari,n,UPLQ,identitymatops,imat); DSDPCHKERR(info);
318 DSDPFunctionReturn(0);
322#define __FUNCT__ "SDPConeSetIdentity"
334int SDPConeSetIdentity(
SDPCone sdpcone,
int blockj,
int vari,
int n,
338 info=SDPConeRemoveDataMatrix(sdpcone,blockj,vari); DSDPCHKERR(info);
339 info=SDPConeAddIdentity(sdpcone,blockj,vari,n,val); DSDPCHKERR(info);
340 DSDPFunctionReturn(0);
344#define __FUNCT__ "SDPConeAddConstantMat"
356int SDPConeAddConstantMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
364 DSDPLogInfo(0,20,
"Add allsame matrix: Block: %d, Variable %d, size: %d, Elements: %4.4e .\n",blockj,vari,n,value);
365 info=SDPConeGetStorageFormat(sdpcone,blockj,&UPLQ); DSDPCHKERR(info);
368 info=DSDPGetConstantMat(n,value,UPLQ,&constantmatops,&smat);DSDPCHKERR(info);
371 info=DSDPGetConstantMat(n,value,UPLQ,&constantmatops,&smat);DSDPCHKERR(info);
374 info=SDPConeAddDataMatrix(sdpcone,blockj,vari,n,UPLQ,constantmatops,smat); DSDPCHKERR(info);
375 DSDPFunctionReturn(0);
379#define __FUNCT__ "SDPConeSetConstantMat"
391int SDPConeSetConstantMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
395 info=SDPConeRemoveDataMatrix(sdpcone,blockj,vari); DSDPCHKERR(info);
396 info=SDPConeAddConstantMat(sdpcone,blockj,vari,n,value); DSDPCHKERR(info);
397 DSDPFunctionReturn(0);
402#define __FUNCT__ "SDPConeSetZeroMat"
414int SDPConeSetZeroMat(
SDPCone sdpcone,
int blockj,
int vari,
int n){
419 DSDPLogInfo(0,20,
"Add zero matrix: Block: %d, Variable %d, size: %d .\n",blockj,vari,n);
420 info=DSDPGetZeroDataMatOps(&zeromatops); DSDPCHKERR(info);
421 info=SDPConeGetStorageFormat(sdpcone,blockj,&UPLQ); DSDPCHKERR(info);
422 info=SDPConeRemoveDataMatrix(sdpcone,blockj,vari); DSDPCHKERR(info);
423 info=SDPConeAddDataMatrix(sdpcone,blockj,vari,n,UPLQ,zeromatops,0); DSDPCHKERR(info);
424 DSDPFunctionReturn(0);
428#define __FUNCT__ "SDPConeSetRIdentity"
444 info=SDPConeGetStorageFormat(sdpcone,blockj,&UPLQ); DSDPCHKERR(info);
453 info=
SDPConeSetRMatrix(sdpcone,blockj,n,UPLQ,identitymatops,imat); DSDPCHKERR(info);
455 DSDPFunctionReturn(0);
459#define __FUNCT__ "SDPConeAddARankOneMat"
478int SDPConeAddARankOneMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
479 double alpha,
int ishift,
const int ind[],
const double val[],
int nnz){
487 info=SDPConeGetStorageFormat(sdpcone,blockj,&UPLQ); DSDPCHKERR(info);
488 DSDPLogInfo(0,20,
"Set sparse matrix: Block: %d, Variable %d, size: %d, Nonzeros: %d .\n",blockj,vari,n,nnz);
491 info=
DSDPGetR1PMat(n,alpha,ishift,ind,val,nnz,&dmatops,&dmat); DSDPCHKERR(info);
494 info=
DSDPGetR1UMat(n,alpha,ishift,ind,val,nnz,&dmatops,&dmat); DSDPCHKERR(info);
497 info=SDPConeAddDataMatrix(sdpcone,blockj,vari,n,UPLQ,dmatops,dmat); DSDPCHKERR(info);
498 DSDPFunctionReturn(0);
501#define __FUNCT__ "SDPConeSetARankOneMat"
519int SDPConeSetARankOneMat(
SDPCone sdpcone,
int blockj,
int vari,
int n,
520 double alpha,
int ishift,
const int ind[],
const double val[],
int nnz){
525 info=SDPConeRemoveDataMatrix(sdpcone,blockj,vari); DSDPCHKERR(info);
526 info=SDPConeAddARankOneMat(sdpcone,blockj,vari,n,alpha,ishift,ind,val,nnz); DSDPCHKERR(info);
527 DSDPFunctionReturn(0);
531#define __FUNCT__ "DSDPSetDataMatZero"
541 info=DSDPGetZeroDataMatOps(&zeromatops); DSDPCHKERR(info);
543 DSDPFunctionReturn(0);
The API to DSDP for those applications using DSDP as a subroutine library.
int DSDPGetVecUMat(int, int, double, const int[], const double[], int, struct DSDPDataMat_Ops **, void **)
Given data in full symmetric format, create a sparse matrix usuable by DSDP.
int DSDPGetR1UMat(int, double, int, const int[], const double[], int, struct DSDPDataMat_Ops **, void **)
Create a rank one matrix usuable by DSDP in full symmetric format.
int SDPConeSetRMatrix(SDPCone, int, int, char, struct DSDPDataMat_Ops *, void *)
Add identity to dual matrix.
int DSDPGetVechMat(int, int, double, const int[], const double[], int, struct DSDPDataMat_Ops **, void **)
Given data in packed symmetric format, create a sparse matrix usuable by DSDP.
int DSDPGetIdentityDataMatF(int, double, struct DSDPDataMat_Ops **, void **)
Create a sparse matrix usuable by DSDP in full symmetric format.
int SDPConeSetRIdentity(SDPCone sdpcone, int blockj, int n, double rr)
Add identify matrix to dual matrix.
int DSDPSetDataMatZero(DSDPDataMat *A)
Make a data matrix a zero matrix.
int DSDPGetIdentityDataMatP(int, double, struct DSDPDataMat_Ops **, void **)
Create a sparse matrix usuable by DSDP in packed symmetric format.
int DSDPGetR1PMat(int, double, int, const int[], const double[], int, struct DSDPDataMat_Ops **, void **)
Create a rank one matrix usuable by DSDP in packed symmetric format.
int DSDPDataMatSetData(DSDPDataMat *A, struct DSDPDataMat_Ops *ops, void *data)
Set the opaque pointer and function pointers to the matrix.
The interface between the SDPCone and the data matrices.
Error handling, printing, and profiling.
Symmetric data matrix for one block in the semidefinite cone.
Table of function pointers that operate on the data matrix.
Internal structure for semidefinite cone.