00001 #if !defined(__DSDP_DUALMATRIX_H) 00002 #define __DSDP_DUALMATRIX_H 00003 00004 #include "sdpconevec.h" 00005 #include "dsdpbasictypes.h" 00006 #include "dsdpxmat.h" 00018 struct DSDPDualMat_C{ 00019 void* matdata; 00020 struct DSDPDualMat_Ops* dsdpops; 00021 }; 00022 00027 typedef struct DSDPDualMat_C DSDPDualMat; 00028 00029 #ifdef __cplusplus 00030 extern "C" { 00031 #endif 00032 00033 extern int DSDPDualMatInitialize(DSDPDualMat*); 00034 extern int DSDPDualMatSetData(DSDPDualMat*,struct DSDPDualMat_Ops*,void*); 00035 extern int DSDPDualMatGetType(DSDPDualMat, int *); 00036 00037 extern int DSDPDualMatGetSize(DSDPDualMat, int*); 00038 extern int DSDPDualMatTest(DSDPDualMat); 00039 extern int DSDPDualMatDestroy(DSDPDualMat *); 00040 extern int DSDPDualMatView(DSDPDualMat); 00041 00042 extern int DSDPDualMatCholeskyFactor(DSDPDualMat,DSDPTruth *); 00043 extern int DSDPDualMatInvert(DSDPDualMat); 00044 extern int DSDPDualMatInverseAdd(DSDPDualMat,double,DSDPVMat); 00045 extern int DSDPDualMatInverseMultiply(DSDPDualMat, DSDPIndex, SDPConeVec, SDPConeVec); 00046 extern int DSDPDualMatCholeskySolveForward(DSDPDualMat, SDPConeVec, SDPConeVec); 00047 extern int DSDPDualMatCholeskySolveBackward(DSDPDualMat, SDPConeVec, SDPConeVec); 00048 extern int DSDPDualMatCholeskyForwardMultiply(DSDPDualMat, SDPConeVec, SDPConeVec); 00049 extern int DSDPDualMatCholeskyBackwardMultiply(DSDPDualMat, SDPConeVec, SDPConeVec); 00050 extern int DSDPDualMatLogDeterminant(DSDPDualMat, double*); 00051 extern int DSDPDualMatIsFull(DSDPDualMat,DSDPTruth*); 00052 extern int DSDPDualMatSetArray(DSDPDualMat,DSDPVMat); 00053 extern int DSDPDualMatCheck(DSDPDualMat,SDPConeVec,SDPConeVec,DSDPIndex,DSDPVMat); 00054 extern int DSDPDualMatGetArray(DSDPDualMat,double*[],int*); 00055 00056 #ifdef __cplusplus 00057 } 00058 #endif 00059 00060 #endif 00061 00062