27 #ifndef GSPARSESYMBOLIC_HPP
28 #define GSPARSESYMBOLIC_HPP
77 int cs_leaf(
int i,
int j,
const int* first,
int* maxfirst,
int* prevleaf,
int* ancestor,
int* jleaf);
78 int*
cs_pinv(
int const* p,
int n);
79 int*
cs_post(
const int* parent,
int n);
80 int cs_tdfs(
int j,
int k,
int* head,
const int* next,
int* post,
int* stack);
82 static int cs_diag(
int i,
int j,
double aij,
void* other);
83 static int cs_wclear(
int mark,
int lemax,
int* w,
int n);
static void init_ata(const GMatrixSparse *AT, const int *post, int *wrk_int, int **head, int **next)
GMatrixSparse cs_symperm(const GMatrixSparse &matrix, const int *pinv)
cs_symperm
void cholesky_symbolic_analysis(int order, const GMatrixSparse &m)
int * cs_post(const int *parent, int n)
int * m_parent
elimination tree for Cholesky and QR
int * m_cp
column pointers for Cholesky, row counts for QR
double m_lnz
entries in L for LU or Cholesky; in V for QR
Sparse matrix class interface definition.
int * m_leftmost
leftmost[i] = min(find(A(i,:))), for QR
GMatrixSparse cs_transpose(const GMatrixSparse &matrix, int values)
int cs_leaf(int i, int j, const int *first, int *maxfirst, int *prevleaf, int *ancestor, int *jleaf)
int cs_tdfs(int j, int k, int *head, const int *next, int *post, int *stack)
int m_n_cp
Number of elements in m_cp.
int m_n_parent
Number of elements in m_parent.
static int cs_wclear(int mark, int lemax, int *w, int n)
virtual ~GSparseSymbolic(void)
Destructor.
Sparse matrix symbolic analysis class.
GSparseSymbolic(void)
Void constructor.
int m_n_leftmost
Number of elements in m_leftmost.
int * m_pinv
Inverse row permutation for QR, fill reduce permutation for Cholesky.
GSparseSymbolic & operator=(const GSparseSymbolic &s)
double cs_cumsum(int *p, int *c, int n)
cs_cumsum
int * m_q
Fill-reducing column permutation for LU and QR.
int * cs_amd(int order, const GMatrixSparse *A)
int * cs_counts(const GMatrixSparse *A, const int *parent, const int *post, int ata)
Sparse matrix numeric analysis class.
int m_n_q
Number of elements in m_q.
int * cs_etree(const GMatrixSparse *A, int ata)
int * cs_pinv(int const *p, int n)
double m_unz
entries in U for LU; in R for QR
int m_n_pinv
Number of elements in m_pinv.
int cs_fkeep(GMatrixSparse *A, int(*fkeep)(int, int, double, void *), void *other)
cs_fkeep
friend std::ostream & operator<<(std::ostream &os, const GSparseSymbolic &s)
int m_m2
of rows for QR, after adding fictitious rows
static int cs_diag(int i, int j, double aij, void *other)