00001 #if !defined(__DSDP_DUALMATRIXOPS_H)
00002 #define __DSDP_DUALMATRIXOPS_H
00003
00013 struct DSDPDualMat_Ops{
00014 int id;
00015 int (*matseturmat)(void*,double[],int,int);
00016 int (*matgetarray)(void*,double*[],int*);
00017 int (*matcholesky)(void*,int*);
00018 int (*matsolveforward)(void*,double[],double[],int);
00019 int (*matsolvebackward)(void*,double[],double[],int);
00020 int (*matinvert)(void*);
00021 int (*matinverseadd)(void*,double,double[],int,int);
00022 int (*matinversemultiply)(void*,int[],int,double[],double[],int);
00023 int (*matforwardmultiply)(void*,double[],double[],int);
00024 int (*matbackwardmultiply)(void*,double[],double[],int);
00025 int (*matlogdet)(void*,double*);
00026 int (*matfull)(void*,int*);
00027 int (*mattest)(void*);
00028 int (*matgetsize)(void*,int*);
00029 int (*matdestroy)(void*);
00030 int (*matview)(void*);
00031 const char *matname;
00032 };
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 extern int DSDPDualMatOpsInitialize(struct DSDPDualMat_Ops*);
00038 #ifdef __cplusplus
00039 }
00040 #endif
00041
00042 #endif
00043
00044