53 #ifndef AMESOS2_SUPERLU_FUNCTIONMAP_HPP
54 #define AMESOS2_SUPERLU_FUNCTIONMAP_HPP
56 #ifdef HAVE_TEUCHOS_COMPLEX
78 #include "supermatrix.h"
80 #include "superlu_enum_consts.h"
85 #ifdef HAVE_AMESOS2_SUPERLU5_API
102 ExpHeader *expanders;
108 sgssvx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
109 char *,
float *,
float *, SLU::SuperMatrix *, SLU::SuperMatrix *,
110 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
111 float *,
float *,
float *,
float *,
112 #ifdef HAVE_AMESOS2_SUPERLU5_API
115 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
117 sgstrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
118 int,
int,
int*,
void *,
int,
int *,
int *,
119 SLU::SuperMatrix *, SLU::SuperMatrix *,
120 #ifdef HAVE_AMESOS2_SUPERLU5_API
123 SLU::SuperLUStat_t*,
int *);
125 sgsisx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
126 char *,
float *,
float *, SLU::SuperMatrix *, SLU::SuperMatrix *,
127 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
129 #ifdef HAVE_AMESOS2_SUPERLU5_API
132 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
134 sgsitrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
135 int,
int,
int*,
void *,
int,
int *,
int *,
136 SLU::SuperMatrix *, SLU::SuperMatrix *,
137 #ifdef HAVE_AMESOS2_SUPERLU5_API
140 SLU::SuperLUStat_t*,
int *);
142 sCreate_CompCol_Matrix(SLU::SuperMatrix *,
int,
int,
int,
float *,
143 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
145 sCreate_CompRow_Matrix(SLU::SuperMatrix *,
int,
int,
int,
float *,
146 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
148 sCreate_Dense_Matrix(SLU::SuperMatrix *,
int,
int,
float *,
int,
149 SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
152 sgsequ (SLU::SuperMatrix *,
float *,
float *,
float *,
153 float *,
float *,
int *);
156 slaqgs (SLU::SuperMatrix *,
float *,
float *,
float,
157 float,
float,
char *);
164 #ifdef HAVE_AMESOS2_SUPERLU5_API
181 ExpHeader *expanders;
187 dgssvx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
188 char *,
double *,
double *, SLU::SuperMatrix *, SLU::SuperMatrix *,
189 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
190 double *,
double *,
double *,
double *,
191 #ifdef HAVE_AMESOS2_SUPERLU5_API
194 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
196 dgstrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
197 int,
int,
int*,
void *,
int,
int *,
int *,
198 SLU::SuperMatrix *, SLU::SuperMatrix *,
199 #ifdef HAVE_AMESOS2_SUPERLU5_API
202 SLU::SuperLUStat_t*,
int *);
204 dgsisx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
205 char *,
double *,
double *, SLU::SuperMatrix *, SLU::SuperMatrix *,
206 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
208 #ifdef HAVE_AMESOS2_SUPERLU5_API
211 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
213 dgsitrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
214 int,
int,
int*,
void *,
int,
int *,
int *,
215 SLU::SuperMatrix *, SLU::SuperMatrix *,
216 #ifdef HAVE_AMESOS2_SUPERLU5_API
219 SLU::SuperLUStat_t*,
int *);
221 dCreate_CompCol_Matrix(SLU::SuperMatrix *,
int,
int,
int,
double *,
222 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
224 dCreate_CompRow_Matrix(SLU::SuperMatrix *,
int,
int,
int,
double *,
225 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
227 dCreate_Dense_Matrix(SLU::SuperMatrix *,
int,
int,
double *,
int,
228 SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
231 dlaqgs (SLU::SuperMatrix *,
double *,
double *,
double,
232 double,
double,
char *);
235 dgsequ (SLU::SuperMatrix *,
double *,
double *,
double *,
236 double *,
double *,
int *);
241 #ifdef HAVE_TEUCHOS_COMPLEX
244 #ifdef HAVE_AMESOS2_SUPERLU5_API
261 ExpHeader *expanders;
267 cgssvx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
268 char *,
float *,
float *, SLU::SuperMatrix *, SLU::SuperMatrix *,
269 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
270 float *,
float *,
float *,
float *,
271 #ifdef HAVE_AMESOS2_SUPERLU5_API
274 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
276 cgstrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
277 int,
int,
int*,
void *,
int,
int *,
int *,
278 SLU::SuperMatrix *, SLU::SuperMatrix *,
279 #ifdef HAVE_AMESOS2_SUPERLU5_API
282 SLU::SuperLUStat_t*,
int *);
284 cgsisx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
285 char *,
float *,
float *, SLU::SuperMatrix *, SLU::SuperMatrix *,
286 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
288 #ifdef HAVE_AMESOS2_SUPERLU5_API
291 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
293 cgsitrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
294 int,
int,
int*,
void *,
int,
int *,
int *,
295 SLU::SuperMatrix *, SLU::SuperMatrix *,
296 #ifdef HAVE_AMESOS2_SUPERLU5_API
299 SLU::SuperLUStat_t*,
int *);
301 cCreate_CompCol_Matrix(SLU::SuperMatrix *,
int,
int,
int, complex *,
302 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
304 cCreate_CompRow_Matrix(SLU::SuperMatrix *,
int,
int,
int, complex *,
305 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
307 cCreate_Dense_Matrix(SLU::SuperMatrix *,
int,
int, complex *,
int,
308 SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
311 cgsequ (SLU::SuperMatrix *,
float *,
float *,
float *,
312 float *,
float *,
int *);
315 claqgs (SLU::SuperMatrix *,
float *,
float *,
float,
316 float,
float,
char *);
323 #ifdef HAVE_AMESOS2_SUPERLU5_API
329 doublecomplex *lusup;
340 ExpHeader *expanders;
346 zgssvx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
347 char *,
double *,
double *, SLU::SuperMatrix *, SLU::SuperMatrix *,
348 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
349 double *,
double *,
double *,
double *,
350 #ifdef HAVE_AMESOS2_SUPERLU5_API
353 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
355 zgstrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
356 int,
int,
int*,
void *,
int,
int *,
int *,
357 SLU::SuperMatrix *, SLU::SuperMatrix *,
358 #ifdef HAVE_AMESOS2_SUPERLU5_API
361 SLU::SuperLUStat_t*,
int *);
363 zgsisx(SLU::superlu_options_t *, SLU::SuperMatrix *,
int *,
int *,
int *,
364 char *,
double *,
double *, SLU::SuperMatrix *, SLU::SuperMatrix *,
365 void *,
int, SLU::SuperMatrix *, SLU::SuperMatrix *,
367 #ifdef HAVE_AMESOS2_SUPERLU5_API
370 SLU::mem_usage_t *, SLU::SuperLUStat_t *,
int *);
372 zgsitrf (SLU::superlu_options_t*, SLU::SuperMatrix*,
373 int,
int,
int*,
void *,
int,
int *,
int *,
374 SLU::SuperMatrix *, SLU::SuperMatrix *,
375 #ifdef HAVE_AMESOS2_SUPERLU5_API
378 SLU::SuperLUStat_t*,
int *);
380 zCreate_CompCol_Matrix(SLU::SuperMatrix *,
int,
int,
int, doublecomplex *,
381 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
383 zCreate_CompRow_Matrix(SLU::SuperMatrix *,
int,
int,
int, doublecomplex *,
384 int *,
int *, SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
386 zCreate_Dense_Matrix(SLU::SuperMatrix *,
int,
int, doublecomplex *,
int,
387 SLU::Stype_t, SLU::Dtype_t, SLU::Mtype_t);
390 zgsequ (SLU::SuperMatrix *,
double *,
double *,
double *,
391 double *,
double *,
int *);
394 zlaqgs (SLU::SuperMatrix *,
double *,
double *,
double,
395 double,
double,
char *);
399 #endif // HAVE_TEUCHOS_COMPLEX
437 struct FunctionMap<Superlu,float>
439 typedef TypeMap<Superlu,float> type_map;
441 #ifdef HAVE_AMESOS2_SUPERLU5_API
442 typedef typename SLU::S::GlobalLU_t GlobalLU_type;
448 static void gssvx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
449 int* perm_c,
int* perm_r,
int* etree,
char* equed,
float* R,
float* C,
450 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
451 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
float* recip_pivot_growth,
452 float* rcond,
float* ferr,
float* berr,
453 #ifdef HAVE_AMESOS2_SUPERLU5_API
456 SLU::mem_usage_t* mem_usage,
457 SLU::SuperLUStat_t* stat,
int* info)
459 SLU::S::sgssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
460 lwork, B, X, recip_pivot_growth, rcond, ferr, berr,
461 #ifdef HAVE_AMESOS2_SUPERLU5_API
464 mem_usage, stat, info);
467 static void gsisx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
468 int* perm_c,
int* perm_r,
int* etree,
char* equed,
float* R,
float* C,
469 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
470 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
float* recip_pivot_growth,
472 #ifdef HAVE_AMESOS2_SUPERLU5_API
475 SLU::mem_usage_t* mem_usage,
476 SLU::SuperLUStat_t* stat,
int* info)
478 SLU::S::sgsisx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
479 lwork, B, X, recip_pivot_growth, rcond,
480 #ifdef HAVE_AMESOS2_SUPERLU5_API
483 mem_usage, stat, info);
505 static void gstrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
506 int relax,
int panel_size,
int* etree,
void* work,
507 int lwork,
int* perm_c,
int* perm_r, SLU::SuperMatrix* L,
509 #ifdef HAVE_AMESOS2_SUPERLU5_API
512 SLU::SuperLUStat_t* stat,
int* info)
514 SLU::S::sgstrf(options, AC, relax, panel_size, etree,
515 work, lwork, perm_c, perm_r, L, U,
516 #ifdef HAVE_AMESOS2_SUPERLU5_API
522 static void gsitrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
523 int relax,
int panel_size,
int* etree,
void* work,
524 int lwork,
int* perm_c,
int* perm_r, SLU::SuperMatrix* L,
526 #ifdef HAVE_AMESOS2_SUPERLU5_API
529 SLU::SuperLUStat_t* stat,
int* info)
531 SLU::S::sgsitrf(options, AC, relax, panel_size, etree,
532 work, lwork, perm_c, perm_r, L, U,
533 #ifdef HAVE_AMESOS2_SUPERLU5_API
542 static void create_CompCol_Matrix(SLU::SuperMatrix* A,
int m,
int n,
543 int nnz, type_map::type* nzval,
int* rowind,
int* colptr,
544 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
546 SLU::S::sCreate_CompCol_Matrix(A, m, n, nnz, nzval, rowind, colptr,
547 stype, dtype, mtype);
553 static void create_CompRow_Matrix(SLU::SuperMatrix* A,
int m,
int n,
554 int nnz, type_map::type* nzval,
int* rowind,
int* colptr,
555 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
557 SLU::S::sCreate_CompRow_Matrix(A, m, n, nnz, nzval, rowind, colptr,
558 stype, dtype, mtype);
570 static void create_Dense_Matrix(SLU::SuperMatrix* X,
int m,
int n,
571 type_map::type* x,
int ldx, SLU::Stype_t stype,
572 SLU::Dtype_t dtype, SLU::Mtype_t mtype)
574 SLU::S::sCreate_Dense_Matrix(X, m, n, x, ldx, stype, dtype, mtype);
580 static void gsequ(SLU::SuperMatrix* A,
float* R,
float* C,
581 float* rowcnd,
float* colcnd,
float* amax,
int* info)
583 SLU::S::sgsequ(A, R, C, rowcnd, colcnd, amax, info);
600 static void laqgs(SLU::SuperMatrix* A,
float* R,
float* C,
601 float rowcnd,
float colcnd,
float amax,
char* equed)
603 SLU::S::slaqgs(A, R, C, rowcnd, colcnd, amax, equed);
609 struct FunctionMap<Superlu,double>
611 typedef TypeMap<Superlu,double> type_map;
613 #ifdef HAVE_AMESOS2_SUPERLU5_API
614 typedef typename SLU::D::GlobalLU_t GlobalLU_type;
617 static void gssvx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
618 int* perm_c,
int* perm_r,
int* etree,
char* equed,
double* R,
double* C,
619 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
620 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
double* recip_pivot_growth,
621 double* rcond,
double* ferr,
double* berr,
622 #ifdef HAVE_AMESOS2_SUPERLU5_API
625 SLU::mem_usage_t* mem_usage,
626 SLU::SuperLUStat_t* stat,
int* info)
628 SLU::D::dgssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
629 lwork, B, X, recip_pivot_growth, rcond, ferr, berr,
630 #ifdef HAVE_AMESOS2_SUPERLU5_API
633 mem_usage, stat, info);
636 static void gstrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
637 int relax,
int panel_size,
int* etree,
void* work,
int lwork,
int* perm_c,
638 int* perm_r, SLU::SuperMatrix* L, SLU::SuperMatrix* U,
639 #ifdef HAVE_AMESOS2_SUPERLU5_API
642 SLU::SuperLUStat_t* stat,
int* info)
644 SLU::D::dgstrf(options, AC, relax, panel_size, etree,
645 work, lwork, perm_c, perm_r, L, U,
646 #ifdef HAVE_AMESOS2_SUPERLU5_API
652 static void gsisx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
653 int* perm_c,
int* perm_r,
int* etree,
char* equed,
double* R,
double* C,
654 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
655 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
double* recip_pivot_growth,
657 #ifdef HAVE_AMESOS2_SUPERLU5_API
660 SLU::mem_usage_t* mem_usage,
661 SLU::SuperLUStat_t* stat,
int* info)
663 SLU::D::dgsisx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
664 lwork, B, X, recip_pivot_growth, rcond,
665 #ifdef HAVE_AMESOS2_SUPERLU5_API
668 mem_usage, stat, info);
671 static void gsitrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
672 int relax,
int panel_size,
int* etree,
void* work,
int lwork,
int* perm_c,
673 int* perm_r, SLU::SuperMatrix* L, SLU::SuperMatrix* U,
674 #ifdef HAVE_AMESOS2_SUPERLU5_API
677 SLU::SuperLUStat_t* stat,
int* info)
679 SLU::D::dgsitrf(options, AC, relax, panel_size, etree,
680 work, lwork, perm_c, perm_r, L, U,
681 #ifdef HAVE_AMESOS2_SUPERLU5_API
687 static void create_CompCol_Matrix(SLU::SuperMatrix* A,
int m,
int n,
688 int nnz, type_map::type* nzval,
int* rowind,
int* colptr,
689 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
691 SLU::D::dCreate_CompCol_Matrix(A, m, n, nnz, nzval, rowind, colptr,
692 stype, dtype, mtype);
695 static void create_CompRow_Matrix(SLU::SuperMatrix* A,
int m,
int n,
696 int nnz, type_map::type* nzval,
int* rowind,
int* colptr,
697 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
699 SLU::D::dCreate_CompRow_Matrix(A, m, n, nnz, nzval, rowind, colptr,
700 stype, dtype, mtype);
703 static void create_Dense_Matrix(SLU::SuperMatrix* X,
int m,
704 int n, type_map::type* x,
int ldx, SLU::Stype_t stype,
705 SLU::Dtype_t dtype, SLU::Mtype_t mtype)
707 SLU::D::dCreate_Dense_Matrix(X, m, n, x, ldx, stype, dtype, mtype);
710 static void gsequ(SLU::SuperMatrix* A,
double* R,
double* C,
711 double* rowcnd,
double* colcnd,
double* amax,
int* info)
713 SLU::D::dgsequ(A, R, C, rowcnd, colcnd, amax, info);
716 static void laqgs(SLU::SuperMatrix* A,
double* R,
double* C,
717 double rowcnd,
double colcnd,
double amax,
char* equed)
719 SLU::D::dlaqgs(A, R, C, rowcnd, colcnd, amax, equed);
725 #ifdef HAVE_TEUCHOS_COMPLEX
731 struct FunctionMap<Superlu,SLU::C::complex>
733 #ifdef HAVE_AMESOS2_SUPERLU5_API
734 typedef typename SLU::C::GlobalLU_t GlobalLU_type;
737 static void gssvx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
738 int* perm_c,
int* perm_r,
int* etree,
char* equed,
float* R,
float* C,
739 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
740 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
float* recip_pivot_growth,
741 float* rcond,
float* ferr,
float* berr,
742 #ifdef HAVE_AMESOS2_SUPERLU5_API
745 SLU::mem_usage_t* mem_usage,
746 SLU::SuperLUStat_t* stat,
int* info)
748 SLU::C::cgssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
749 lwork, B, X, recip_pivot_growth, rcond, ferr, berr,
750 #ifdef HAVE_AMESOS2_SUPERLU5_API
753 mem_usage, stat, info);
756 static void gstrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
757 int relax,
int panel_size,
int* etree,
void* work,
int lwork,
int* perm_c,
758 int* perm_r, SLU::SuperMatrix* L, SLU::SuperMatrix* U,
759 #ifdef HAVE_AMESOS2_SUPERLU5_API
762 SLU::SuperLUStat_t* stat,
int* info)
764 SLU::C::cgstrf(options, AC, relax, panel_size, etree,
765 work, lwork, perm_c, perm_r, L, U,
766 #ifdef HAVE_AMESOS2_SUPERLU5_API
772 static void gsisx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
773 int* perm_c,
int* perm_r,
int* etree,
char* equed,
float* R,
float* C,
774 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
775 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
float* recip_pivot_growth,
777 #ifdef HAVE_AMESOS2_SUPERLU5_API
780 SLU::mem_usage_t* mem_usage,
781 SLU::SuperLUStat_t* stat,
int* info)
783 SLU::C::cgsisx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
784 lwork, B, X, recip_pivot_growth, rcond,
785 #ifdef HAVE_AMESOS2_SUPERLU5_API
788 mem_usage, stat, info);
791 static void gsitrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
792 int relax,
int panel_size,
int* etree,
void* work,
int lwork,
int* perm_c,
793 int* perm_r, SLU::SuperMatrix* L, SLU::SuperMatrix* U,
794 #ifdef HAVE_AMESOS2_SUPERLU5_API
797 SLU::SuperLUStat_t* stat,
int* info)
799 SLU::C::cgsitrf(options, AC, relax, panel_size, etree,
800 work, lwork, perm_c, perm_r, L, U,
801 #ifdef HAVE_AMESOS2_SUPERLU5_API
807 static void create_CompCol_Matrix(SLU::SuperMatrix* A,
int m,
int n,
int nnz,
808 SLU::C::complex* nzval,
int* rowind,
int* colptr,
809 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
811 SLU::C::cCreate_CompCol_Matrix(A, m, n, nnz, nzval, rowind, colptr,
812 stype, dtype, mtype);
815 static void create_CompRow_Matrix(SLU::SuperMatrix* A,
int m,
int n,
int nnz,
816 SLU::C::complex* nzval,
int* rowind,
int* colptr,
817 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
819 SLU::C::cCreate_CompRow_Matrix(A, m, n, nnz, nzval, rowind, colptr,
820 stype, dtype, mtype);
823 static void create_Dense_Matrix(SLU::SuperMatrix* X,
int m,
int n,
824 SLU::C::complex* x,
int ldx, SLU::Stype_t stype,
825 SLU::Dtype_t dtype, SLU::Mtype_t mtype)
827 SLU::C::cCreate_Dense_Matrix(X, m, n, x, ldx, stype, dtype, mtype);
830 static void gsequ(SLU::SuperMatrix* A,
float* R,
float* C,
831 float* rowcnd,
float* colcnd,
float* amax,
int* info)
833 SLU::C::cgsequ(A, R, C, rowcnd, colcnd, amax, info);
836 static void laqgs(SLU::SuperMatrix* A,
float* R,
float* C,
837 float rowcnd,
float colcnd,
float amax,
char* equed)
839 SLU::C::claqgs(A, R, C, rowcnd, colcnd, amax, equed);
845 struct FunctionMap<Superlu,SLU::Z::doublecomplex>
847 #ifdef HAVE_AMESOS2_SUPERLU5_API
848 typedef typename SLU::Z::GlobalLU_t GlobalLU_type;
851 static void gssvx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
852 int* perm_c,
int* perm_r,
int* etree,
char* equed,
double* R,
double* C,
853 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
854 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
double* recip_pivot_growth,
855 double* rcond,
double* ferr,
double* berr,
856 #ifdef HAVE_AMESOS2_SUPERLU5_API
859 SLU::mem_usage_t* mem_usage,
860 SLU::SuperLUStat_t* stat,
int* info)
862 SLU::Z::zgssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
863 lwork, B, X, recip_pivot_growth, rcond, ferr, berr,
864 #ifdef HAVE_AMESOS2_SUPERLU5_API
867 mem_usage, stat, info);
870 static void gstrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
871 int relax,
int panel_size,
int* etree,
void* work,
int lwork,
int* perm_c,
872 int* perm_r, SLU::SuperMatrix* L, SLU::SuperMatrix* U,
873 #ifdef HAVE_AMESOS2_SUPERLU5_API
876 SLU::SuperLUStat_t* stat,
int* info)
878 SLU::Z::zgstrf(options, AC, relax, panel_size, etree,
879 work, lwork, perm_c, perm_r, L, U,
880 #ifdef HAVE_AMESOS2_SUPERLU5_API
886 static void gsisx(SLU::superlu_options_t* options, SLU::SuperMatrix* A,
887 int* perm_c,
int* perm_r,
int* etree,
char* equed,
double* R,
double* C,
888 SLU::SuperMatrix* L, SLU::SuperMatrix* U,
void* work,
int lwork,
889 SLU::SuperMatrix* B, SLU::SuperMatrix* X,
double* recip_pivot_growth,
891 #ifdef HAVE_AMESOS2_SUPERLU5_API
894 SLU::mem_usage_t* mem_usage,
895 SLU::SuperLUStat_t* stat,
int* info)
897 SLU::Z::zgsisx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work,
898 lwork, B, X, recip_pivot_growth, rcond,
899 #ifdef HAVE_AMESOS2_SUPERLU5_API
902 mem_usage, stat, info);
905 static void gsitrf(SLU::superlu_options_t* options, SLU::SuperMatrix* AC,
906 int relax,
int panel_size,
int* etree,
void* work,
int lwork,
int* perm_c,
907 int* perm_r, SLU::SuperMatrix* L, SLU::SuperMatrix* U,
908 #ifdef HAVE_AMESOS2_SUPERLU5_API
911 SLU::SuperLUStat_t* stat,
int* info)
913 SLU::Z::zgsitrf(options, AC, relax, panel_size, etree,
914 work, lwork, perm_c, perm_r, L, U,
915 #ifdef HAVE_AMESOS2_SUPERLU5_API
921 static void create_CompCol_Matrix(SLU::SuperMatrix* A,
int m,
int n,
int nnz,
922 SLU::Z::doublecomplex* nzval,
int* rowind,
int* colptr,
923 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
925 SLU::Z::zCreate_CompCol_Matrix(A, m, n, nnz, nzval, rowind, colptr,
926 stype, dtype, mtype);
928 TEUCHOS_TEST_FOR_EXCEPTION( A == NULL,
930 "Supermatrix A not initialized properly!");
934 static void create_CompRow_Matrix(SLU::SuperMatrix* A,
int m,
int n,
int nnz,
935 SLU::Z::doublecomplex* nzval,
int* rowind,
int* colptr,
936 SLU::Stype_t stype, SLU::Dtype_t dtype, SLU::Mtype_t mtype)
938 SLU::Z::zCreate_CompRow_Matrix(A, m, n, nnz, nzval, rowind, colptr,
939 stype, dtype, mtype);
941 TEUCHOS_TEST_FOR_EXCEPTION( A == NULL,
943 "Supermatrix A not initialized properly!");
946 static void create_Dense_Matrix(SLU::SuperMatrix* X,
int m,
int n,
947 SLU::Z::doublecomplex* x,
int ldx, SLU::Stype_t stype,
948 SLU::Dtype_t dtype, SLU::Mtype_t mtype)
950 SLU::Z::zCreate_Dense_Matrix(X, m, n, x, ldx, stype, dtype, mtype);
953 static void gsequ(SLU::SuperMatrix* A,
double* R,
double* C,
954 double* rowcnd,
double* colcnd,
double* amax,
int* info)
956 SLU::Z::zgsequ(A, R, C, rowcnd, colcnd, amax, info);
959 static void laqgs(SLU::SuperMatrix* A,
double* R,
double* C,
960 double rowcnd,
double colcnd,
double amax,
char* equed)
962 SLU::Z::zlaqgs(A, R, C, rowcnd, colcnd, amax, equed);
965 #endif // HAVE_TEUCHOS_COMPLEX
972 #endif // AMESOS2_SUPERLU_FUNCTIONMAP_HPP
Declaration of Function mapping class for Amesos2.
Provides definition of SuperLU types as well as conversions and type traits.