42 lines
1.7 KiB
C
42 lines
1.7 KiB
C
|
typedef struct infostruct{
|
||
|
int B; // The size of block-columns
|
||
|
int NB; // The number of block-columns in a matrix
|
||
|
int N; // The total size of the matrix N=B*NB
|
||
|
int *ipiv; // Permutation vector for numerical pivoting
|
||
|
} info_type;
|
||
|
|
||
|
|
||
|
typedef double** Matrix;
|
||
|
|
||
|
/* typedef struct matstruct{ */
|
||
|
/* double **BC; // Permutation vector for numerical pivoting */
|
||
|
/* } Matrix; */
|
||
|
|
||
|
|
||
|
typedef enum {PNL = 0, UPD, END, NONE} Type;
|
||
|
|
||
|
void dgetrf_(int *m, int *n, double *a, int *lda, int *ipiv, int *info);
|
||
|
void dtrsm_(char *side, char *uplo, char *transa, char *diag,
|
||
|
int *m, int *n, const double *alpha, const double *A, int *lda,
|
||
|
double *B, int *ldb);
|
||
|
void dlaswp_(int *n, double * a, int *lda, int *k1, int *k2, int *ipiv, int *incx);
|
||
|
void dlarnv_(int *idist, int *iseed, int *n, double *x);
|
||
|
void dgetrs_(char *t, int *n, int *nrhs, double *A, int *lda, int *ipiv, double *x, int *incx, int *info);
|
||
|
void dgemv_(char *t, int *m, int *n, const double *alpha, const double *A, int *lda, const double *x, int *incx, const double *beta, double *y, int *incy);
|
||
|
double dnrm2_c(int n, double *x, int incx);
|
||
|
double dnrmf_c(int m, int n, double *A, int lda);
|
||
|
|
||
|
void dgemm_(char *ta, char *tb, int *m, int *n, int *k, const double *alpha, const double *A, int *lda, const double *B, int *ldB, const double *beta, const double *c, int *ldc);
|
||
|
|
||
|
void panel(double *P, int k, info_type info );
|
||
|
void update(double *P, double *U, int k, int j, info_type info);
|
||
|
void backperm(Matrix A, info_type info);
|
||
|
void checkres(double *A, double *Acpy, info_type info);
|
||
|
|
||
|
long usecs ();
|
||
|
|
||
|
|
||
|
void lu_seq (Matrix A, info_type info);
|
||
|
void lu_par_tasks(Matrix A, info_type info);
|
||
|
|