#include "umfpack.h" #include #include #ifdef NULL #undef NULL #endif #define NULL 0 #define LEN 200 /* for umfpack 4.1 */ /* #define UF_long long */ /* set of routines used by fvn_sparse complex(8) and integer(8) */ /* defaults */ void umfpack_zl_defaults_ (double Control [UMFPACK_CONTROL]) { umfpack_zl_defaults (Control) ; } /* free the Numeric object */ void umfpack_zl_free_numeric_(void **Numeric) { umfpack_zl_free_numeric (Numeric) ; } /* free th Symbolic object */ void umfpack_zl_free_symbolic_(void **Symbolic) { umfpack_zl_free_symbolic (Symbolic) ; } /* numeric factorization */ void umfpack_zl_numeric_ (UF_long Ap [ ], UF_long Ai [ ], double Ax [ ], double Az [ ], void **Symbolic, void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_zl_numeric (Ap, Ai, Ax, Az, *Symbolic, Numeric, Control, Info); } /* pre-ordering and symbolic factorization */ void umfpack_zl_symbolic_ (UF_long *m, UF_long *n, UF_long Ap [ ], UF_long Ai [ ], double Ax [ ], double Az [ ], void **Symbolic, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_zl_symbolic (*m, *n, Ap, Ai, Ax, Az, Symbolic, Control, Info) ; } /* solve a linear system */ void umfpack_zl_solve_ (UF_long *sys, UF_long Ap [ ], UF_long Ai [ ], double Ax [ ], double Az [ ], double x [ ], double xz [ ], double b [ ], double bz [ ], void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_zl_solve (*sys, Ap, Ai, Ax, Az, x, xz, b, bz, *Numeric, Control, Info) ; } /* triplet 2 col */ void umfpack_zl_triplet_to_col_ (UF_long *m, UF_long *n, UF_long *nz, UF_long Ti [ ], UF_long Tj [ ], double Tx [ ], double Tz [ ], UF_long Ap [ ], UF_long Ai [ ], double Ax [ ], double Az [ ], UF_long *status) { *status = umfpack_zl_triplet_to_col (*m, *n, *nz, Ti, Tj, Tx, Tz, Ap, Ai, Ax, Az, (UF_long *) NULL); } /* get determinant */ void umfpack_zl_get_determinant_ ( double *Mx, double *Mz, double *Ex, void **Numeric, double Info [UMFPACK_INFO], UF_long *status ) { *status = umfpack_zl_get_determinant (Mx,Mz,Ex,*Numeric, Info); } /* complex(8) and integer(4) */ /* defaults */ void umfpack_zi_defaults_ (double Control [UMFPACK_CONTROL]) { umfpack_zi_defaults (Control) ; } /* free the Numeric object */ void umfpack_zi_free_numeric_(void **Numeric) { umfpack_zi_free_numeric (Numeric) ; } /* free the Symbolic object */ void umfpack_zi_free_symbolic_(void **Symbolic) { umfpack_zi_free_symbolic (Symbolic) ; } /* numeric factorization */ void umfpack_zi_numeric_ (int Ap [ ], int Ai [ ], double Ax [ ], double Az [ ], void **Symbolic, void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_zi_numeric (Ap, Ai, Ax, Az, *Symbolic, Numeric, Control, Info); } /* pre-ordering and symbolic factorization */ void umfpack_zi_symbolic_ (int *m, int *n, int Ap [ ], int Ai [ ], double Ax [ ], double Az [ ], void **Symbolic, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_zi_symbolic (*m, *n, Ap, Ai, Ax, Az, Symbolic, Control, Info) ; } /* solve a linear system */ void umfpack_zi_solve_ (int *sys, int Ap [ ], int Ai [ ], double Ax [ ], double Az [ ], double x [ ], double xz [ ], double b [ ], double bz [ ], void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_zi_solve (*sys, Ap, Ai, Ax, Az, x, xz, b, bz, *Numeric, Control, Info) ; } /* triplet 2 col */ void umfpack_zi_triplet_to_col_ (int *m, int *n, int *nz, int Ti [ ], int Tj [ ], double Tx [ ], double Tz [ ], int Ap [ ], int Ai [ ], double Ax [ ], double Az [ ], int *status) { *status = umfpack_zi_triplet_to_col (*m, *n, *nz, Ti, Tj, Tx, Tz, Ap, Ai, Ax, Az, (int *) NULL); } /* get determinant */ void umfpack_zi_get_determinant_ ( double *Mx, double *Mz, double *Ex, void **Numeric, double Info [UMFPACK_INFO], int *status ) { *status = umfpack_zi_get_determinant (Mx,Mz,Ex,*Numeric, Info); } /* real(8) and integer(8) */ /* defaults */ void umfpack_dl_defaults_ (double Control [UMFPACK_CONTROL]) { umfpack_dl_defaults (Control) ; } void umfpack_dl_free_numeric_ (void **Numeric) { umfpack_dl_free_numeric (Numeric) ; } void umfpack_dl_free_symbolic_ (void **Symbolic) { umfpack_dl_free_symbolic (Symbolic) ; } void umfpack_dl_numeric_ (UF_long Ap [ ], UF_long Ai [ ], double Ax [ ], void **Symbolic, void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_dl_numeric (Ap, Ai, Ax, *Symbolic, Numeric, Control, Info); } void umfpack_dl_symbolic_ (UF_long *m, UF_long *n, UF_long Ap [ ], UF_long Ai [ ], double Ax [ ], void **Symbolic, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_dl_symbolic (*m, *n, Ap, Ai, Ax, Symbolic, Control, Info) ; } void umfpack_dl_solve_ (UF_long *sys, UF_long Ap [ ], UF_long Ai [ ], double Ax [ ], double x [ ], double b [ ], void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_dl_solve (*sys, Ap, Ai, Ax, x, b, *Numeric, Control, Info) ; } void umfpack_dl_triplet_to_col_ (UF_long *m, UF_long *n, UF_long *nz, UF_long Ti [ ], UF_long Tj [ ], double T [ ], UF_long Ap [ ], UF_long Ai [ ], double A [ ], UF_long *status) { *status = umfpack_dl_triplet_to_col (*m, *n, *nz, Ti, Tj, T, Ap, Ai, A, (UF_long *) NULL); } /* get determinant */ void umfpack_dl_get_determinant_ ( double *Mx, double *Ex, void **Numeric, double Info [UMFPACK_INFO], UF_long *status ) { *status = umfpack_dl_get_determinant (Mx,Ex,*Numeric, Info); } /* real(8) and integer(4) */ /* defaults */ void umfpack_di_defaults_ (double Control [UMFPACK_CONTROL]) { umfpack_di_defaults (Control) ; } void umfpack_di_free_numeric_ (void **Numeric) { umfpack_di_free_numeric (Numeric) ; } void umfpack_di_free_symbolic_ (void **Symbolic) { umfpack_di_free_symbolic (Symbolic) ; } void umfpack_di_numeric_ (int Ap [ ], int Ai [ ], double Ax [ ], void **Symbolic, void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_di_numeric (Ap, Ai, Ax, *Symbolic, Numeric, Control, Info); } void umfpack_di_symbolic_ (int *m, int *n, int Ap [ ], int Ai [ ], double Ax [ ], void **Symbolic, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_di_symbolic (*m, *n, Ap, Ai, Ax, Symbolic, Control, Info) ; } void umfpack_di_solve_ (int *sys, int Ap [ ], int Ai [ ], double Ax [ ], double x [ ], double b [ ], void **Numeric, double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO]) { (void) umfpack_di_solve (*sys, Ap, Ai, Ax, x, b, *Numeric, Control, Info) ; } void umfpack_di_triplet_to_col_ (int *m, int *n, int *nz, int Ti [ ], int Tj [ ], double T [ ], int Ap [ ], int Ai [ ], double A [ ], int *status) { *status = umfpack_di_triplet_to_col (*m, *n, *nz, Ti, Tj, T, Ap, Ai, A, (int *) NULL); } /* get determinant */ void umfpack_di_get_determinant_ ( double *Mx, double *Ex, void **Numeric, double Info [UMFPACK_INFO], int *status ) { *status = umfpack_di_get_determinant (Mx,Ex,*Numeric, Info); }