1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
/*********************************************************/
/* TAUCS */
/* Author: Sivan Toledo */
/*********************************************************/
#define TAUCS_LOWER 1
#define TAUCS_UPPER 2
#define TAUCS_TRIANGULAR 4
#define TAUCS_SYMMETRIC 8
typedef struct
{
int n; /* columns */
int m; /* rows; don't use if symmetric */
int flags;
int* colptr; /* pointers to where columns begin in rowind and values. */
/* 0-based. Length is (n+1). */
int* rowind; /* row indices */
double* values; /* numerical values */
} taucs_ccs_matrix;
taucs_ccs_matrix* taucs_ccs_create(int m, int n, int nnz);
void taucs_ccs_free (taucs_ccs_matrix* matrix);
void taucs_ccs_genmmd(taucs_ccs_matrix* matrix,
int** perm, int** invperm);
taucs_ccs_matrix* taucs_ccs_permute_symmetrically(taucs_ccs_matrix* A,
int* perm, int* invperm);
void taucs_vec_permute(int n, double v[], double pv[], int p[]);
void taucs_vec_ipermute(int n, double pv[], double v[], int invp[]);
void* taucs_ccs_factor_llt_mf(taucs_ccs_matrix* A);
int taucs_supernodal_solve_llt(void* vL,
double* x, double* b);
void taucs_supernodal_factor_free(void* L);
taucs_ccs_matrix* taucs_supernodal_factor_to_ccs(void* L);
int taucs_get_nnz_from_supernodal_factor(void* vL);
|