00001
00063 #ifndef __SUPERLU_cSP_DEFS
00064 #define __SUPERLU_cSP_DEFS
00065
00066
00067
00068
00069
00070
00071
00072 #ifdef _CRAY
00073 #include <fortran.h>
00074 #include <string.h>
00075 #endif
00076
00077
00078 typedef int int_t;
00079
00080 #include <math.h>
00081 #include <limits.h>
00082 #include <stdio.h>
00083 #include <stdlib.h>
00084 #include <stdint.h>
00085 #include "slu_Cnames.h"
00086 #include "supermatrix.h"
00087 #include "slu_util.h"
00088 #include "slu_scomplex.h"
00089
00090
00091
00092 typedef struct {
00093 int *xsup;
00094 int *supno;
00095 int *lsub;
00096 int *xlsub;
00097 complex *lusup;
00098 int *xlusup;
00099 complex *ucol;
00100 int *usub;
00101 int *xusub;
00102 int nzlmax;
00103 int nzumax;
00104 int nzlumax;
00105 int n;
00106 LU_space_t MemModel;
00107 int num_expansions;
00108 ExpHeader *expanders;
00109 LU_stack_t stack;
00110 } GlobalLU_t;
00111
00112
00113
00114
00115 #ifdef __cplusplus
00116 extern "C" {
00117 #endif
00118
00120 extern void
00121 cgssv(superlu_options_t *, SuperMatrix *, int *, int *, SuperMatrix *,
00122 SuperMatrix *, SuperMatrix *, SuperLUStat_t *, int *);
00123 extern void
00124 cgssvx(superlu_options_t *, SuperMatrix *, int *, int *, int *,
00125 char *, float *, float *, SuperMatrix *, SuperMatrix *,
00126 void *, int, SuperMatrix *, SuperMatrix *,
00127 float *, float *, float *, float *,
00128 GlobalLU_t *, mem_usage_t *, SuperLUStat_t *, int *);
00129
00130 extern void
00131 cgsisv(superlu_options_t *, SuperMatrix *, int *, int *, SuperMatrix *,
00132 SuperMatrix *, SuperMatrix *, SuperLUStat_t *, int *);
00133 extern void
00134 cgsisx(superlu_options_t *, SuperMatrix *, int *, int *, int *,
00135 char *, float *, float *, SuperMatrix *, SuperMatrix *,
00136 void *, int, SuperMatrix *, SuperMatrix *, float *, float *,
00137 GlobalLU_t *, mem_usage_t *, SuperLUStat_t *, int *);
00138
00139
00141 extern void
00142 cCreate_CompCol_Matrix(SuperMatrix *, int, int, int, complex *,
00143 int *, int *, Stype_t, Dtype_t, Mtype_t);
00144 extern void
00145 cCreate_CompRow_Matrix(SuperMatrix *, int, int, int, complex *,
00146 int *, int *, Stype_t, Dtype_t, Mtype_t);
00147 extern void
00148 cCopy_CompCol_Matrix(SuperMatrix *, SuperMatrix *);
00149 extern void
00150 cCreate_Dense_Matrix(SuperMatrix *, int, int, complex *, int,
00151 Stype_t, Dtype_t, Mtype_t);
00152 extern void
00153 cCreate_SuperNode_Matrix(SuperMatrix *, int, int, int, complex *,
00154 int *, int *, int *, int *, int *,
00155 Stype_t, Dtype_t, Mtype_t);
00156 extern void
00157 cCopy_Dense_Matrix(int, int, complex *, int, complex *, int);
00158
00159 extern void countnz (const int, int *, int *, int *, GlobalLU_t *);
00160 extern void ilu_countnz (const int, int *, int *, GlobalLU_t *);
00161 extern void fixupL (const int, const int *, GlobalLU_t *);
00162
00163 extern void callocateA (int, int, complex **, int **, int **);
00164 extern void cgstrf (superlu_options_t*, SuperMatrix*,
00165 int, int, int*, void *, int, int *, int *,
00166 SuperMatrix *, SuperMatrix *, GlobalLU_t *,
00167 SuperLUStat_t*, int *);
00168 extern int csnode_dfs (const int, const int, const int *, const int *,
00169 const int *, int *, int *, GlobalLU_t *);
00170 extern int csnode_bmod (const int, const int, const int, complex *,
00171 complex *, GlobalLU_t *, SuperLUStat_t*);
00172 extern void cpanel_dfs (const int, const int, const int, SuperMatrix *,
00173 int *, int *, complex *, int *, int *, int *,
00174 int *, int *, int *, int *, GlobalLU_t *);
00175 extern void cpanel_bmod (const int, const int, const int, const int,
00176 complex *, complex *, int *, int *,
00177 GlobalLU_t *, SuperLUStat_t*);
00178 extern int ccolumn_dfs (const int, const int, int *, int *, int *, int *,
00179 int *, int *, int *, int *, int *, GlobalLU_t *);
00180 extern int ccolumn_bmod (const int, const int, complex *,
00181 complex *, int *, int *, int,
00182 GlobalLU_t *, SuperLUStat_t*);
00183 extern int ccopy_to_ucol (int, int, int *, int *, int *,
00184 complex *, GlobalLU_t *);
00185 extern int cpivotL (const int, const double, int *, int *,
00186 int *, int *, int *, GlobalLU_t *, SuperLUStat_t*);
00187 extern void cpruneL (const int, const int *, const int, const int,
00188 const int *, const int *, int *, GlobalLU_t *);
00189 extern void creadmt (int *, int *, int *, complex **, int **, int **);
00190 extern void cGenXtrue (int, int, complex *, int);
00191 extern void cFillRHS (trans_t, int, complex *, int, SuperMatrix *,
00192 SuperMatrix *);
00193 extern void cgstrs (trans_t, SuperMatrix *, SuperMatrix *, int *, int *,
00194 SuperMatrix *, SuperLUStat_t*, int *);
00195
00196 extern void cgsitrf (superlu_options_t*, SuperMatrix*, int, int, int*,
00197 void *, int, int *, int *, SuperMatrix *, SuperMatrix *,
00198 GlobalLU_t *, SuperLUStat_t*, int *);
00199 extern int cldperm(int, int, int, int [], int [], complex [],
00200 int [], float [], float []);
00201 extern int ilu_csnode_dfs (const int, const int, const int *, const int *,
00202 const int *, int *, GlobalLU_t *);
00203 extern void ilu_cpanel_dfs (const int, const int, const int, SuperMatrix *,
00204 int *, int *, complex *, float *, int *, int *,
00205 int *, int *, int *, int *, GlobalLU_t *);
00206 extern int ilu_ccolumn_dfs (const int, const int, int *, int *, int *,
00207 int *, int *, int *, int *, int *,
00208 GlobalLU_t *);
00209 extern int ilu_ccopy_to_ucol (int, int, int *, int *, int *,
00210 complex *, int, milu_t, double, int,
00211 complex *, int *, GlobalLU_t *, float *);
00212 extern int ilu_cpivotL (const int, const double, int *, int *, int, int *,
00213 int *, int *, int *, double, milu_t,
00214 complex, GlobalLU_t *, SuperLUStat_t*);
00215 extern int ilu_cdrop_row (superlu_options_t *, int, int, double,
00216 int, int *, double *, GlobalLU_t *,
00217 float *, float *, int);
00218
00219
00222 extern void cgsequ (SuperMatrix *, float *, float *, float *,
00223 float *, float *, int *);
00224 extern void claqgs (SuperMatrix *, float *, float *, float,
00225 float, float, char *);
00226 extern void cgscon (char *, SuperMatrix *, SuperMatrix *,
00227 float, float *, SuperLUStat_t*, int *);
00228 extern float cPivotGrowth(int, SuperMatrix *, int *,
00229 SuperMatrix *, SuperMatrix *);
00230 extern void cgsrfs (trans_t, SuperMatrix *, SuperMatrix *,
00231 SuperMatrix *, int *, int *, char *, float *,
00232 float *, SuperMatrix *, SuperMatrix *,
00233 float *, float *, SuperLUStat_t*, int *);
00234
00235 extern int sp_ctrsv (char *, char *, char *, SuperMatrix *,
00236 SuperMatrix *, complex *, SuperLUStat_t*, int *);
00237 extern int sp_cgemv (char *, complex, SuperMatrix *, complex *,
00238 int, complex, complex *, int);
00239
00240 extern int sp_cgemm (char *, char *, int, int, int, complex,
00241 SuperMatrix *, complex *, int, complex,
00242 complex *, int);
00243 extern float slamch_(char *);
00244 extern float smach(char *);
00245
00247 extern int cLUMemInit (fact_t, void *, int, int, int, int, int,
00248 float, SuperMatrix *, SuperMatrix *,
00249 GlobalLU_t *, int **, complex **);
00250 extern void cSetRWork (int, int, complex *, complex **, complex **);
00251 extern void cLUWorkFree (int *, complex *, GlobalLU_t *);
00252 extern int cLUMemXpand (int, int, MemType, int *, GlobalLU_t *);
00253
00254 extern complex *complexMalloc(int);
00255 extern complex *complexCalloc(int);
00256 extern float *floatMalloc(int);
00257 extern float *floatCalloc(int);
00258 extern int cmemory_usage(const int, const int, const int, const int);
00259 extern int cQuerySpace (SuperMatrix *, SuperMatrix *, mem_usage_t *);
00260 extern int ilu_cQuerySpace (SuperMatrix *, SuperMatrix *, mem_usage_t *);
00261
00263 extern void creadhb(FILE *, int *, int *, int *, complex **, int **, int **);
00264 extern void creadrb(int *, int *, int *, complex **, int **, int **);
00265 extern void creadtriple(int *, int *, int *, complex **, int **, int **);
00266 extern void cCompRow_to_CompCol(int, int, int, complex*, int*, int*,
00267 complex **, int **, int **);
00268 extern void cfill (complex *, int, complex);
00269 extern void cinf_norm_error (int, SuperMatrix *, complex *);
00270 extern void PrintPerf (SuperMatrix *, SuperMatrix *, mem_usage_t *,
00271 complex, complex, complex *, complex *, char *);
00272 extern float sqselect(int, float *, int);
00273
00274
00276 extern void cPrint_CompCol_Matrix(char *, SuperMatrix *);
00277 extern void cPrint_SuperNode_Matrix(char *, SuperMatrix *);
00278 extern void cPrint_Dense_Matrix(char *, SuperMatrix *);
00279 extern void cprint_lu_col(char *, int, int, int *, GlobalLU_t *);
00280 extern int print_double_vec(char *, int, double *);
00281 extern void check_tempv(int, complex *);
00282
00285 extern int cgemm_(const char*, const char*, const int*, const int*, const int*,
00286 const complex*, const complex*, const int*, const complex*,
00287 const int*, const complex*, complex*, const int*);
00288 extern int ctrsv_(char*, char*, char*, int*, complex*, int*,
00289 complex*, int*);
00290 extern int ctrsm_(char*, char*, char*, char*, int*, int*,
00291 complex*, complex*, int*, complex*, int*);
00292 extern int cgemv_(char *, int *, int *, complex *, complex *a, int *,
00293 complex *, int *, complex *, complex *, int *);
00294
00295 #ifdef __cplusplus
00296 }
00297 #endif
00298
00299 #endif
00300