/usr/include/dsdp/dsdpsdp.h is in libdsdp-dev 5.8-9.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | #ifndef __TAO_DSDPSDP_H
#define __TAO_DSDPSDP_H
/*!
\file dsdpsdp.h
\brief Internal SDPCone data structures and routines
*/
#include "dsdpschurmat.h"
#include "dsdpbasictypes.h"
#include "dsdpvec.h"
#include "sdpconevec.h"
#include "dsdpdatamat.h"
#include "dsdpdualmat.h"
#include "dsdpxmat.h"
#include "dsdpdsmat.h"
#include "dsdplanczos.h"
typedef enum { SDPCONEEXIST=1, SDPCONESETUP1=2 } SDPConeStatus;
/*!
struct DSDPDataTranspose
\brief Internal structure for transpose of data.
*/
typedef struct{
int m;
int *nnzblocks;
int **nzblocks;
int *ttnzmat;
int **nnzmats;
int **idA;
int *idAP;
} DSDPDataTranspose;
/*!
struct SDPBlockData
\brief Internal structure for data in one block of semidefintie.
*/
typedef struct{
int maxnnzmats;
int nnzmats;
int *nzmat;
DSDPDataMat *A;
double r; /* Multiple of Identity added to S to make it psd */
double scl;
} DSDPBlockData;
/*!
struct SDPBlk
\brief Internal structure for block of semidefinite cone.
*/
typedef struct{
DSDPBlockData ADATA;
DSDPLanczosStepLength Lanczos; /* For Lanczos steplength routine */
int n; /* Dimensions */
double gammamu; /* Scale Barrier, used only by user option */
double bmu; /* For LMI, not used */
char format; /* Packed Symmetric, Full Symmetric, Lower,Upper */
int nnz;
SDPConeStatus status;
SDPConeVec W;
SDPConeVec W2;
DSDPIndex IS;
DSDPDualMat S; /* Dual variable matrices */
DSDPDualMat SS; /* Compute primal variable matrices */
DSDPDSMat DS; /* Dual variable step matrices */
DSDPVMat T; /* Work Array and Primal variable matrice X */
} SDPblk;
/*!
struct SDPCone_C
\brief Internal structure for semidefinite cone.
\sa SDPCone
*/
struct SDPCone_C {
int keyid;
/* Dimensions */
int m, nn;
/* Data in block format */
int nblocks;
SDPblk *blk;
/* Transpose of Data */
DSDPDataTranspose ATR;
/* Work space */
DSDPVec Work, Work2;
/* Current Solution */
DSDPVec YY,YX,DYX;
double xmakermu;
int optype;
DSDP dsdp;
};
#define SDPCONEKEY 5438
#define SDPConeValid(a) {if (!(a)||((a)->keyid!=SDPCONEKEY)){ DSDPSETERR(101,"DSDPERROR: Invalid SDPCone object\n");}}
#define DSDPCHKBLOCKERR(a,b); { if (b){ DSDPSETERR1(b,"Block Number: %d,\n",a);} }
#define DSDPCHKVARERR(a,b); { if (b){ DSDPSETERR1(b,"Variable Number: %d,\n",a);} }
extern int DSDPSetDataMatZero(DSDPDataMat*);
#include "dsdp5.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Operations on the Data */
extern int DSDPBlockDataInitialize(DSDPBlockData*);
extern int DSDPBlockDataAllocate(DSDPBlockData*, int);
extern int DSDPBlockAddDataMatrix(DSDPBlockData*,int, struct DSDPDataMat_Ops*, void*);
extern int DSDPBlockSetDataMatrix(DSDPBlockData*,int, struct DSDPDataMat_Ops*, void*);
extern int DSDPBlockRemoveDataMatrix(DSDPBlockData*,int);
extern int DSDPBlockDataMarkNonzeroMatrices(DSDPBlockData*,int*);
extern int DSDPBlockDataRowSparsity(DSDPBlockData*,int,int[],int[],int);
extern int DSDPBlockASum(DSDPBlockData*,double,DSDPVec,DSDPVMat);
extern int DSDPBlockADot(DSDPBlockData*,double,DSDPVec,DSDPVMat,DSDPVec);
extern int DSDPBlockvAv(DSDPBlockData*,double,DSDPVec,SDPConeVec,DSDPVec);
extern int DSDPBlockDataDestroy(DSDPBlockData*);
extern int DSDPBlockCheck(DSDPBlockData*,SDPConeVec,DSDPVMat);
extern int DSDPBlockANorm2(DSDPBlockData*, DSDPVec, int);
extern int DSDPBlockView(DSDPBlockData*);
extern int DSDPBlockView2(DSDPBlockData*);
extern int DSDPBlockCountNonzeroMatrices(DSDPBlockData *,int*);
extern int DSDPBlockGetMatrix(DSDPBlockData*,int,int*,double*,DSDPDataMat*);
extern int DSDPBlockFactorData(DSDPBlockData*,DSDPVMat,SDPConeVec);
extern int DSDPBlockTakeDownData(DSDPBlockData*);
extern int DSDPBlockDataRank(DSDPBlockData*,int*,int);
extern int DSDPBlockTakeDown(SDPblk*);
extern int DSDPBlockInitialize(SDPblk*);
extern int DSDPBlockEventInitialize(void);
extern int DSDPBlockEventZero(void);
extern int DSDPDataMatCheck(DSDPDataMat,SDPConeVec,DSDPIndex,DSDPVMat);
/* Operations on the Transpose of the Data */
extern int DSDPDataTransposeInitialize(DSDPDataTranspose*);
extern int DSDPDataTransposeTakeDown(DSDPDataTranspose*);
extern int DSDPDataTransposeSetup(DSDPDataTranspose*,SDPblk*,int,int);
extern int DSDPUseDefaultDualMatrix(SDPCone);
extern int SDPConeSetup(SDPCone,DSDPVec);
extern int SDPConeSetup2(SDPCone,DSDPVec,DSDPSchurMat);
extern int SDPConeComputeHessian(SDPCone,double,DSDPSchurMat,DSDPVec,DSDPVec);
extern int SDPConeMultiply(SDPCone,int,double,DSDPVec,DSDPVec,DSDPVec);
extern int SDPConeComputeRHS(SDPCone, int, double, DSDPVec, DSDPVec,DSDPVec);
extern int SDPConeComputeXX(SDPCone,int,DSDPVec,double,DSDPDualMat, DSDPVMat);
extern int SDPConeDestroy(SDPCone);
extern int SDPConeCheckJ(SDPCone,int);
extern int SDPConeCheckN(SDPCone,int, int);
extern int SDPConeCheckM(SDPCone,int);
extern int SDPConeCheckStorageFormat(SDPCone,int, char);
extern int SDPConeComputeSS(SDPCone, int, DSDPVec, DSDPVMat);
extern int SDPConeComputeXDot(SDPCone,int,DSDPVec,DSDPVMat,DSDPVec,double*,double*, double *);
extern int SDPConeComputeX3(SDPCone,int,double,DSDPVec,DSDPVec,DSDPVMat);
/* extern int DSDPPrintSDPA(TAO_DSDP *); */
extern int DSDPMakeVMat(char, int, DSDPVMat*);
extern int DSDPMakeVMatWithArray(char, double[], int, int, DSDPVMat*);
extern int DSDPSetDualMatrix(SDPCone sdpcone,int (*createdualmatrix)(DSDPBlockData*,DSDPVec,DSDPVMat,DSDPVec,DSDPVec,DSDPDualMat*,DSDPDualMat*,DSDPDSMat*,void*),void*);
extern int DSDPAddSDP(DSDP,SDPCone);
#ifdef __cplusplus
}
#endif
extern int SDPConeSetRIdentity(SDPCone,int,int,double);
extern int DSDPDualMatEventInitialize(void);
extern int DSDPVMatEventInitialize(void);
extern int DSDPDualMatEventZero(void);
extern int DSDPVMatEventZero(void);
#endif
|