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 extern int DSDPDualMatInitialize(DSDPDualMat*); 00030 extern int DSDPDualMatSetData(DSDPDualMat*,struct DSDPDualMat_Ops*,void*); 00031 extern int DSDPDualMatGetType(DSDPDualMat, int *); 00032 00033 extern int DSDPDualMatGetSize(DSDPDualMat, int*); 00034 extern int DSDPDualMatTest(DSDPDualMat); 00035 extern int DSDPDualMatDestroy(DSDPDualMat *); 00036 extern int DSDPDualMatView(DSDPDualMat); 00037 00038 extern int DSDPDualMatCholeskyFactor(DSDPDualMat,DSDPTruth *); 00039 extern int DSDPDualMatInvert(DSDPDualMat); 00040 extern int DSDPDualMatInverseAdd(DSDPDualMat,double,DSDPVMat); 00041 extern int DSDPDualMatInverseMultiply(DSDPDualMat, DSDPIndex, SDPConeVec, SDPConeVec); 00042 extern int DSDPDualMatCholeskySolveForward(DSDPDualMat, SDPConeVec, SDPConeVec); 00043 extern int DSDPDualMatCholeskySolveBackward(DSDPDualMat, SDPConeVec, SDPConeVec); 00044 extern int DSDPDualMatCholeskyForwardMultiply(DSDPDualMat, SDPConeVec, SDPConeVec); 00045 extern int DSDPDualMatCholeskyBackwardMultiply(DSDPDualMat, SDPConeVec, SDPConeVec); 00046 extern int DSDPDualMatLogDeterminant(DSDPDualMat, double*); 00047 extern int DSDPDualMatIsFull(DSDPDualMat,DSDPTruth*); 00048 extern int DSDPDualMatSetArray(DSDPDualMat,DSDPVMat); 00049 extern int DSDPDualMatCheck(DSDPDualMat,SDPConeVec,SDPConeVec,DSDPIndex,DSDPVMat); 00050 extern int DSDPDualMatGetArray(DSDPDualMat,double*[],int*); 00051 #endif 00052 00053