00001
00037 #ifndef _ZSLU_H_
00038 #define _ZSLU_H_
00039
00040 #include <mc/mc_base.h>
00041
00048 struct sZslu {
00049
00051 Vmem *vmem;
00053 int iMadeVmem;
00054
00056 int statLU;
00057
00059 int skey;
00061 int m;
00063 int n;
00065 int nnz;
00067 int nrhs;
00069 int lwork;
00071 char equed[1];
00072
00074 int *ia;
00076 int *ja;
00078 double *a;
00079
00081 void *A;
00083 void *L;
00085 void *U;
00087 void *B;
00089 void *X;
00091 void *stat;
00093 void *opts;
00095 void *work;
00096
00098 double *R;
00100 double *C;
00102 double *rhsb;
00104 double *rhsx;
00106 double *ferr;
00108 double *berr;
00109
00111 int *pr;
00113 int *pc;
00115 int *et;
00116
00117 };
00118
00125 typedef struct sZslu Zslu;
00126
00127
00128
00129
00130
00131
00132
00133 #if !defined(VINLINE_ZSLU)
00134 #else
00135 #endif
00136
00152 Zslu* Zslu_ctor(Vmem *vmem, int skey, int m, int n, int nnz,
00153 int *ia, int *ja, double *a);
00154
00163 void Zslu_dtor(Zslu **thee);
00164
00173 int Zslu_factor(Zslu *thee);
00174
00186 int Zslu_solve(Zslu *thee, int key, double *b, double *x);
00187
00196 void Zslu_memChk(Zslu *thee);
00197
00223 double Zslu_lnDet(Zslu *thee);
00224
00225 #endif
00226
00227