DSDP
|
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); /* Set full array of values into matrix */ 00016 int (*matgetarray)(void*,double*[],int*); /* Set pointers to a dense array and its dimension */ 00017 int (*matcholesky)(void*,int*); /* Cholesky second argument is 0 for success, 1 otherwise */ 00018 int (*matsolveforward)(void*,double[],double[],int); /* Called after Cholesky */ 00019 int (*matsolvebackward)(void*,double[],double[],int); /* Called after Cholesky */ 00020 int (*matinvert)(void*); /* Called after Cholesky factorization */ 00021 int (*matinverseadd)(void*,double,double[],int,int); /* Add multiple of the inverse to array */ 00022 int (*matinversemultiply)(void*,int[],int,double[],double[],int); /* Called after invert */ 00023 int (*matforwardmultiply)(void*,double[],double[],int); /* Called after invert */ 00024 int (*matbackwardmultiply)(void*,double[],double[],int); /* Called after invert */ 00025 int (*matlogdet)(void*,double*); /* Called after Cholesky */ 00026 int (*matfull)(void*,int*); /* Is fully dense or not? */ 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