27 #ifdef MATLAB_MEX_FILE
41 #define cs_complex_t double _Complex
48 #define CS_DATE "May 4, 2016"
49 #define CS_COPYRIGHT "Copyright (c) Timothy A. Davis, 2006-2016"
53 #define cs_long_t SuiteSparse_long
54 #define cs_long_t_id SuiteSparse_long_id
55 #define cs_long_t_max SuiteSparse_long_max
136 int cs_di_ipvec (
const int *p,
const double *b,
double *x,
int n) ;
143 int cs_di_pvec (
const int *p,
const double *b,
double *x,
int n) ;
167 double cs_di_house (
double *x,
double *beta,
int n) ;
172 int mark,
cs_di *C,
int nz) ;
173 int cs_di_tdfs (
int j,
int k,
int *head,
const int *next,
int *post,
175 int cs_di_leaf (
int i,
int j,
const int *first,
int *maxfirst,
int *prevleaf,
176 int *ancestor,
int *jleaf) ;
179 const int *pinv,
int lo) ;
448 int cs_ci_tdfs (
int j,
int k,
int *head,
const int *next,
int *post,
450 int cs_ci_leaf (
int i,
int j,
const int *first,
int *maxfirst,
int *prevleaf,
451 int *ancestor,
int *jleaf) ;
614 #define CS_INT cs_long_t
615 #define CS_INT_MAX cs_long_t_max
616 #define CS_ID cs_long_t_id
618 #define CS_ENTRY cs_complex_t
619 #define CS_NAME(nm) cs_cl ## nm
622 #define CS_ENTRY double
623 #define CS_NAME(nm) cs_dl ## nm
628 #define CS_INT_MAX INT_MAX
631 #define CS_ENTRY cs_complex_t
632 #define CS_NAME(nm) cs_ci ## nm
635 #define CS_ENTRY double
636 #define CS_NAME(nm) cs_di ## nm
642 #define CS_REAL(x) creal(x)
643 #define CS_IMAG(x) cimag(x)
644 #define CS_CONJ(x) conj(x)
645 #define CS_ABS(x) cabs(x)
647 #define CS_REAL(x) (x)
648 #define CS_IMAG(x) (0.)
649 #define CS_CONJ(x) (x)
650 #define CS_ABS(x) fabs(x)
653 #define CS_MAX(a,b) (((a) > (b)) ? (a) : (b))
654 #define CS_MIN(a,b) (((a) < (b)) ? (a) : (b))
655 #define CS_FLIP(i) (-(i)-2)
656 #define CS_UNFLIP(i) (((i) < 0) ? CS_FLIP(i) : (i))
657 #define CS_MARKED(w,j) (w [j] < 0)
658 #define CS_MARK(w,j) { w [j] = CS_FLIP (w [j]) ; }
659 #define CS_CSC(A) (A && (A->nz == -1))
660 #define CS_TRIPLET(A) (A && (A->nz >= 0))
664 #define cs_add CS_NAME (_add)
665 #define cs_cholsol CS_NAME (_cholsol)
666 #define cs_dupl CS_NAME (_dupl)
667 #define cs_entry CS_NAME (_entry)
668 #define cs_lusol CS_NAME (_lusol)
669 #define cs_gaxpy CS_NAME (_gaxpy)
670 #define cs_multiply CS_NAME (_multiply)
671 #define cs_qrsol CS_NAME (_qrsol)
672 #define cs_transpose CS_NAME (_transpose)
673 #define cs_compress CS_NAME (_compress)
674 #define cs_norm CS_NAME (_norm)
675 #define cs_print CS_NAME (_print)
676 #define cs_load CS_NAME (_load)
679 #define cs_calloc CS_NAME (_calloc)
680 #define cs_free CS_NAME (_free)
681 #define cs_realloc CS_NAME (_realloc)
682 #define cs_spalloc CS_NAME (_spalloc)
683 #define cs_spfree CS_NAME (_spfree)
684 #define cs_sprealloc CS_NAME (_sprealloc)
685 #define cs_malloc CS_NAME (_malloc)
688 #define css CS_NAME (s)
689 #define csn CS_NAME (n)
690 #define csd CS_NAME (d)
692 #define cs_amd CS_NAME (_amd)
693 #define cs_chol CS_NAME (_chol)
694 #define cs_dmperm CS_NAME (_dmperm)
695 #define cs_droptol CS_NAME (_droptol)
696 #define cs_dropzeros CS_NAME (_dropzeros)
697 #define cs_happly CS_NAME (_happly)
698 #define cs_ipvec CS_NAME (_ipvec)
699 #define cs_lsolve CS_NAME (_lsolve)
700 #define cs_ltsolve CS_NAME (_ltsolve)
701 #define cs_lu CS_NAME (_lu)
702 #define cs_permute CS_NAME (_permute)
703 #define cs_pinv CS_NAME (_pinv)
704 #define cs_pvec CS_NAME (_pvec)
705 #define cs_qr CS_NAME (_qr)
706 #define cs_schol CS_NAME (_schol)
707 #define cs_sqr CS_NAME (_sqr)
708 #define cs_symperm CS_NAME (_symperm)
709 #define cs_usolve CS_NAME (_usolve)
710 #define cs_utsolve CS_NAME (_utsolve)
711 #define cs_updown CS_NAME (_updown)
714 #define cs_sfree CS_NAME (_sfree)
715 #define cs_nfree CS_NAME (_nfree)
716 #define cs_dfree CS_NAME (_dfree)
719 #define cs_counts CS_NAME (_counts)
720 #define cs_cumsum CS_NAME (_cumsum)
721 #define cs_dfs CS_NAME (_dfs)
722 #define cs_etree CS_NAME (_etree)
723 #define cs_fkeep CS_NAME (_fkeep)
724 #define cs_house CS_NAME (_house)
725 #define cs_invmatch CS_NAME (_invmatch)
726 #define cs_maxtrans CS_NAME (_maxtrans)
727 #define cs_post CS_NAME (_post)
728 #define cs_scc CS_NAME (_scc)
729 #define cs_scatter CS_NAME (_scatter)
730 #define cs_tdfs CS_NAME (_tdfs)
731 #define cs_reach CS_NAME (_reach)
732 #define cs_spsolve CS_NAME (_spsolve)
733 #define cs_ereach CS_NAME (_ereach)
734 #define cs_randperm CS_NAME (_randperm)
735 #define cs_leaf CS_NAME (_leaf)
738 #define cs_dalloc CS_NAME (_dalloc)
739 #define cs_done CS_NAME (_done)
740 #define cs_idone CS_NAME (_idone)
741 #define cs_ndone CS_NAME (_ndone)
742 #define cs_ddone CS_NAME (_ddone)
cs_din * cs_di_qr(const cs_di *A, const cs_dis *S)
struct cs_ci_symbolic cs_cis
cs_ci * cs_i_complex(cs_di *A, int real)
cs_cld * cs_cl_scc(cs_cl *A)
cs_dls * cs_dl_schol(cs_long_t order, const cs_dl *A)
cs_cln * cs_cl_chol(const cs_cl *A, const cs_cls *S)
int cs_ci_utsolve(const cs_ci *U, cs_complex_t *x)
cs_cl * cs_cl_add(const cs_cl *A, const cs_cl *B, cs_complex_t alpha, cs_complex_t beta)
struct cs_dl_dmperm_results cs_dld
cs_cln * cs_cl_qr(const cs_cl *A, const cs_cls *S)
double cs_ci_cumsum(int *p, int *c, int n)
void * cs_ci_realloc(void *p, int n, size_t size, int *ok)
int cs_ci_ereach(const cs_ci *A, int k, const int *parent, int *s, int *w)
cs_cl * cs_cl_multiply(const cs_cl *A, const cs_cl *B)
int cs_di_happly(const cs_di *V, int i, double beta, double *x)
cs_long_t cs_dl_ereach(const cs_dl *A, cs_long_t k, const cs_long_t *parent, cs_long_t *s, cs_long_t *w)
cs_cld * cs_cl_dfree(cs_cld *D)
double cs_ci_norm(const cs_ci *A)
int cs_ci_lsolve(const cs_ci *L, cs_complex_t *x)
cs_cid * cs_ci_dmperm(const cs_ci *A, int seed)
cs_di * cs_di_compress(const cs_di *T)
cs_long_t cs_dl_reach(cs_dl *G, const cs_dl *B, cs_long_t k, cs_long_t *xi, const cs_long_t *pinv)
cs_did * cs_di_dalloc(int m, int n)
cs_long_t cs_dl_lsolve(const cs_dl *L, double *x)
cs_long_t * cs_cl_post(const cs_long_t *parent, cs_long_t n)
cs_long_t * cs_dl_randperm(cs_long_t n, cs_long_t seed)
struct cs_ci_sparse cs_ci
cs_long_t cs_dl_dfs(cs_long_t j, cs_dl *G, cs_long_t top, cs_long_t *xi, cs_long_t *pstack, const cs_long_t *pinv)
void * cs_cl_free(void *p)
cs_dld * cs_dl_scc(cs_dl *A)
cs_dl * cs_dl_compress(const cs_dl *T)
cs_long_t cs_cl_updown(cs_cl *L, cs_long_t sigma, const cs_cl *C, const cs_long_t *parent)
int cs_di_gaxpy(const cs_di *A, const double *x, double *y)
cs_cid * cs_ci_dfree(cs_cid *D)
cs_cl * cs_l_complex(cs_dl *A, cs_long_t real)
cs_long_t cs_dl_sprealloc(cs_dl *A, cs_long_t nzmax)
cs_long_t cs_dl_dupl(cs_dl *A)
cs_ci * cs_ci_permute(const cs_ci *A, const int *pinv, const int *q, int values)
cs_dld * cs_dl_dmperm(const cs_dl *A, cs_long_t seed)
int cs_ci_qrsol(int order, const cs_ci *A, cs_complex_t *b)
cs_cln * cs_cl_ndone(cs_cln *N, cs_cl *C, void *w, void *x, cs_long_t ok)
int cs_ci_sprealloc(cs_ci *A, int nzmax)
cs_di * cs_di_add(const cs_di *A, const cs_di *B, double alpha, double beta)
cs_di * cs_di_permute(const cs_di *A, const int *pinv, const int *q, int values)
int * cs_di_amd(int order, const cs_di *A)
cs_cl * cs_cl_compress(const cs_cl *T)
int cs_di_ereach(const cs_di *A, int k, const int *parent, int *s, int *w)
struct cs_di_numeric cs_din
cs_long_t cs_dl_pvec(const cs_long_t *p, const double *b, double *x, cs_long_t n)
cs_long_t * cs_dl_maxtrans(const cs_dl *A, cs_long_t seed)
cs_long_t cs_cl_entry(cs_cl *T, cs_long_t i, cs_long_t j, cs_complex_t x)
cs_long_t cs_cl_usolve(const cs_cl *U, cs_complex_t *x)
cs_dld * cs_dl_dfree(cs_dld *D)
cs_long_t cs_cl_dfs(cs_long_t j, cs_cl *G, cs_long_t top, cs_long_t *xi, cs_long_t *pstack, const cs_long_t *pinv)
cs_complex_t cs_cl_house(cs_complex_t *x, double *beta, cs_long_t n)
int cs_di_droptol(cs_di *A, double tol)
struct cs_dl_sparse cs_dl
int * cs_ci_etree(const cs_ci *A, int ata)
int cs_ci_happly(const cs_ci *V, int i, double beta, cs_complex_t *x)
cs_long_t * cs_cl_amd(cs_long_t order, const cs_cl *A)
int * cs_ci_maxtrans(const cs_ci *A, int seed)
cs_complex_t cs_ci_house(cs_complex_t *x, double *beta, int n)
int cs_ci_fkeep(cs_ci *A, int(*fkeep)(int, int, cs_complex_t, void *), void *other)
int cs_di_updown(cs_di *L, int sigma, const cs_di *C, const int *parent)
cs_long_t * cs_cl_counts(const cs_cl *A, const cs_long_t *parent, const cs_long_t *post, cs_long_t ata)
cs_long_t cs_cl_leaf(cs_long_t i, cs_long_t j, const cs_long_t *first, cs_long_t *maxfirst, cs_long_t *prevleaf, cs_long_t *ancestor, cs_long_t *jleaf)
cs_dls * cs_dl_sqr(cs_long_t order, const cs_dl *A, cs_long_t qr)
cs_long_t cs_dl_ipvec(const cs_long_t *p, const double *b, double *x, cs_long_t n)
cs_did * cs_di_ddone(cs_did *D, cs_di *C, void *w, int ok)
struct cs_di_sparse cs_di
cs_long_t cs_dl_entry(cs_dl *T, cs_long_t i, cs_long_t j, double x)
cs_long_t cs_dl_updown(cs_dl *L, cs_long_t sigma, const cs_dl *C, const cs_long_t *parent)
cs_long_t cs_cl_scatter(const cs_cl *A, cs_long_t j, cs_complex_t beta, cs_long_t *w, cs_complex_t *x, cs_long_t mark, cs_cl *C, cs_long_t nz)
struct cs_di_dmperm_results cs_did
cs_long_t cs_dl_gaxpy(const cs_dl *A, const double *x, double *y)
cs_cln * cs_cl_lu(const cs_cl *A, const cs_cls *S, double tol)
cs_cin * cs_ci_qr(const cs_ci *A, const cs_cis *S)
cs_cl * cs_cl_spfree(cs_cl *A)
double cs_cl_norm(const cs_cl *A)
cs_ci * cs_ci_done(cs_ci *C, void *w, void *x, int ok)
cs_long_t * cs_cl_idone(cs_long_t *p, cs_cl *C, void *w, cs_long_t ok)
cs_dls * cs_dl_sfree(cs_dls *S)
cs_di * cs_di_transpose(const cs_di *A, int values)
cs_di * cs_di_done(cs_di *C, void *w, void *x, int ok)
void * cs_ci_calloc(int n, size_t size)
cs_cl * cs_cl_done(cs_cl *C, void *w, void *x, cs_long_t ok)
cs_dl * cs_dl_load(FILE *f)
int * cs_ci_post(const int *parent, int n)
cs_long_t cs_cl_lusol(cs_long_t order, const cs_cl *A, cs_complex_t *b, double tol)
void * cs_di_free(void *p)
cs_cl * cs_cl_permute(const cs_cl *A, const cs_long_t *pinv, const cs_long_t *q, cs_long_t values)
cs_cln * cs_cl_nfree(cs_cln *N)
cs_long_t * cs_cl_randperm(cs_long_t n, cs_long_t seed)
cs_long_t cs_dl_spsolve(cs_dl *L, const cs_dl *B, cs_long_t k, cs_long_t *xi, double *x, const cs_long_t *pinv, cs_long_t lo)
double cs_cl_cumsum(cs_long_t *p, cs_long_t *c, cs_long_t n)
cs_long_t cs_cl_droptol(cs_cl *A, double tol)
cs_long_t cs_cl_ltsolve(const cs_cl *L, cs_complex_t *x)
cs_cl * cs_cl_spalloc(cs_long_t m, cs_long_t n, cs_long_t nzmax, cs_long_t values, cs_long_t t)
cs_cin * cs_ci_chol(const cs_ci *A, const cs_cis *S)
int cs_ci_tdfs(int j, int k, int *head, const int *next, int *post, int *stack)
int cs_di_entry(cs_di *T, int i, int j, double x)
int cs_di_pvec(const int *p, const double *b, double *x, int n)
int * cs_di_randperm(int n, int seed)
int cs_ci_cholsol(int order, const cs_ci *A, cs_complex_t *b)
cs_cld * cs_cl_ddone(cs_cld *D, cs_cl *C, void *w, cs_long_t ok)
cs_long_t cs_cl_sprealloc(cs_cl *A, cs_long_t nzmax)
cs_ci * cs_ci_symperm(const cs_ci *A, const int *pinv, int values)
int cs_di_fkeep(cs_di *A, int(*fkeep)(int, int, double, void *), void *other)
void * cs_dl_realloc(void *p, cs_long_t n, size_t size, cs_long_t *ok)
void * cs_dl_calloc(cs_long_t n, size_t size)
cs_long_t cs_cl_qrsol(cs_long_t order, const cs_cl *A, cs_complex_t *b)
cs_long_t cs_dl_print(const cs_dl *A, cs_long_t brief)
void * cs_di_realloc(void *p, int n, size_t size, int *ok)
double cs_dl_norm(const cs_dl *A)
cs_long_t * cs_dl_etree(const cs_dl *A, cs_long_t ata)
cs_ci * cs_ci_load(FILE *f)
int cs_ci_dropzeros(cs_ci *A)
cs_dl * cs_dl_symperm(const cs_dl *A, const cs_long_t *pinv, cs_long_t values)
cs_long_t * cs_dl_idone(cs_long_t *p, cs_dl *C, void *w, cs_long_t ok)
cs_cin * cs_ci_lu(const cs_ci *A, const cs_cis *S, double tol)
int cs_ci_pvec(const int *p, const cs_complex_t *b, cs_complex_t *x, int n)
cs_long_t * cs_cl_pinv(const cs_long_t *p, cs_long_t n)
double cs_dl_cumsum(cs_long_t *p, cs_long_t *c, cs_long_t n)
struct cs_dl_symbolic cs_dls
double cs_di_cumsum(int *p, int *c, int n)
int cs_ci_updown(cs_ci *L, int sigma, const cs_ci *C, const int *parent)
void * cs_ci_free(void *p)
cs_cid * cs_ci_dalloc(int m, int n)
cs_ci * cs_ci_multiply(const cs_ci *A, const cs_ci *B)
cs_long_t cs_cl_dropzeros(cs_cl *A)
int cs_ci_lusol(int order, const cs_ci *A, cs_complex_t *b, double tol)
int cs_ci_ipvec(const int *p, const cs_complex_t *b, cs_complex_t *x, int n)
cs_dl * cs_dl_spfree(cs_dl *A)
void * cs_cl_realloc(void *p, cs_long_t n, size_t size, cs_long_t *ok)
cs_ci * cs_ci_spalloc(int m, int n, int nzmax, int values, int t)
struct cs_dl_numeric cs_dln
int cs_ci_usolve(const cs_ci *U, cs_complex_t *x)
int cs_ci_entry(cs_ci *T, int i, int j, cs_complex_t x)
cs_long_t cs_cl_lsolve(const cs_cl *L, cs_complex_t *x)
int cs_di_lusol(int order, const cs_di *A, double *b, double tol)
cs_din * cs_di_nfree(cs_din *N)
int * cs_ci_idone(int *p, cs_ci *C, void *w, int ok)
cs_long_t * cs_dl_counts(const cs_dl *A, const cs_long_t *parent, const cs_long_t *post, cs_long_t ata)
cs_cid * cs_ci_ddone(cs_cid *D, cs_ci *C, void *w, int ok)
cs_long_t * cs_dl_post(const cs_long_t *parent, cs_long_t n)
cs_ci * cs_ci_compress(const cs_ci *T)
struct cs_cl_sparse cs_cl
cs_din * cs_di_ndone(cs_din *N, cs_di *C, void *w, void *x, int ok)
cs_long_t cs_cl_fkeep(cs_cl *A, cs_long_t(*fkeep)(cs_long_t, cs_long_t, cs_complex_t, void *), void *other)
void * cs_cl_malloc(cs_long_t n, size_t size)
int cs_di_dropzeros(cs_di *A)
struct cs_cl_symbolic cs_cls
cs_cls * cs_cl_schol(cs_long_t order, const cs_cl *A)
cs_di * cs_di_symperm(const cs_di *A, const int *pinv, int values)
int * cs_ci_counts(const cs_ci *A, const int *parent, const int *post, int ata)
int * cs_di_idone(int *p, cs_di *C, void *w, int ok)
int cs_ci_droptol(cs_ci *A, double tol)
cs_long_t cs_dl_usolve(const cs_dl *U, double *x)
struct cs_ci_numeric cs_cin
int cs_di_tdfs(int j, int k, int *head, const int *next, int *post, int *stack)
int cs_ci_print(const cs_ci *A, int brief)
int * cs_ci_randperm(int n, int seed)
cs_did * cs_di_scc(cs_di *A)
cs_long_t cs_cl_utsolve(const cs_cl *U, cs_complex_t *x)
cs_dis * cs_di_sqr(int order, const cs_di *A, int qr)
cs_cl * cs_cl_symperm(const cs_cl *A, const cs_long_t *pinv, cs_long_t values)
int cs_ci_ltsolve(const cs_ci *L, cs_complex_t *x)
cs_cl * cs_cl_transpose(const cs_cl *A, cs_long_t values)
struct cs_cl_numeric cs_cln
cs_long_t cs_dl_cholsol(cs_long_t order, const cs_dl *A, double *b)
int cs_di_sprealloc(cs_di *A, int nzmax)
void * cs_cl_calloc(cs_long_t n, size_t size)
int cs_di_ipvec(const int *p, const double *b, double *x, int n)
int cs_di_usolve(const cs_di *U, double *x)
cs_din * cs_di_lu(const cs_di *A, const cs_dis *S, double tol)
cs_dl * cs_dl_multiply(const cs_dl *A, const cs_dl *B)
cs_long_t cs_dl_fkeep(cs_dl *A, cs_long_t(*fkeep)(cs_long_t, cs_long_t, double, void *), void *other)
int * cs_ci_pinv(const int *p, int n)
void * cs_dl_free(void *p)
cs_dl * cs_dl_add(const cs_dl *A, const cs_dl *B, double alpha, double beta)
int * cs_di_pinv(const int *p, int n)
cs_long_t cs_dl_lusol(cs_long_t order, const cs_dl *A, double *b, double tol)
cs_long_t cs_cl_spsolve(cs_cl *L, const cs_cl *B, cs_long_t k, cs_long_t *xi, cs_complex_t *x, const cs_long_t *pinv, cs_long_t lo)
cs_cl * cs_cl_load(FILE *f)
cs_cid * cs_ci_scc(cs_ci *A)
cs_long_t * cs_dl_pinv(const cs_long_t *p, cs_long_t n)
cs_dln * cs_dl_nfree(cs_dln *N)
int cs_ci_scatter(const cs_ci *A, int j, cs_complex_t beta, int *w, cs_complex_t *x, int mark, cs_ci *C, int nz)
int cs_di_spsolve(cs_di *L, const cs_di *B, int k, int *xi, double *x, const int *pinv, int lo)
cs_dld * cs_dl_ddone(cs_dld *D, cs_dl *C, void *w, cs_long_t ok)
cs_ci * cs_ci_transpose(const cs_ci *A, int values)
cs_long_t cs_dl_tdfs(cs_long_t j, cs_long_t k, cs_long_t *head, const cs_long_t *next, cs_long_t *post, cs_long_t *stack)
double cs_dl_house(double *x, double *beta, cs_long_t n)
int cs_di_dfs(int j, cs_di *G, int top, int *xi, int *pstack, const int *pinv)
struct cs_di_symbolic cs_dis
cs_long_t cs_cl_dupl(cs_cl *A)
void * cs_ci_malloc(int n, size_t size)
cs_cis * cs_ci_schol(int order, const cs_ci *A)
cs_dis * cs_di_schol(int order, const cs_di *A)
cs_dln * cs_dl_qr(const cs_dl *A, const cs_dls *S)
int * cs_ci_amd(int order, const cs_ci *A)
int cs_ci_spsolve(cs_ci *L, const cs_ci *B, int k, int *xi, cs_complex_t *x, const int *pinv, int lo)
cs_cld * cs_cl_dmperm(const cs_cl *A, cs_long_t seed)
int cs_di_print(const cs_di *A, int brief)
cs_long_t cs_dl_qrsol(cs_long_t order, const cs_dl *A, double *b)
cs_cld * cs_cl_dalloc(cs_long_t m, cs_long_t n)
cs_long_t cs_dl_happly(const cs_dl *V, cs_long_t i, double beta, double *x)
struct cs_cl_dmperm_results cs_cld
int cs_ci_dfs(int j, cs_ci *G, int top, int *xi, int *pstack, const int *pinv)
double cs_di_norm(const cs_di *A)
int cs_di_leaf(int i, int j, const int *first, int *maxfirst, int *prevleaf, int *ancestor, int *jleaf)
cs_cls * cs_cl_sqr(cs_long_t order, const cs_cl *A, cs_long_t qr)
cs_din * cs_di_chol(const cs_di *A, const cs_dis *S)
cs_long_t cs_cl_gaxpy(const cs_cl *A, const cs_complex_t *x, cs_complex_t *y)
cs_dln * cs_dl_ndone(cs_dln *N, cs_dl *C, void *w, void *x, cs_long_t ok)
int cs_di_ltsolve(const cs_di *L, double *x)
int * cs_di_counts(const cs_di *A, const int *parent, const int *post, int ata)
int cs_ci_leaf(int i, int j, const int *first, int *maxfirst, int *prevleaf, int *ancestor, int *jleaf)
cs_long_t cs_cl_cholsol(cs_long_t order, const cs_cl *A, cs_complex_t *b)
cs_long_t cs_cl_reach(cs_cl *G, const cs_cl *B, cs_long_t k, cs_long_t *xi, const cs_long_t *pinv)
cs_cis * cs_ci_sfree(cs_cis *S)
cs_long_t * cs_cl_etree(const cs_cl *A, cs_long_t ata)
cs_long_t cs_dl_leaf(cs_long_t i, cs_long_t j, const cs_long_t *first, cs_long_t *maxfirst, cs_long_t *prevleaf, cs_long_t *ancestor, cs_long_t *jleaf)
cs_ci * cs_ci_add(const cs_ci *A, const cs_ci *B, cs_complex_t alpha, cs_complex_t beta)
struct cs_ci_dmperm_results cs_cid
void * cs_di_malloc(int n, size_t size)
int cs_di_utsolve(const cs_di *U, double *x)
cs_long_t cs_cl_print(const cs_cl *A, cs_long_t brief)
void * cs_di_calloc(int n, size_t size)
int cs_ci_gaxpy(const cs_ci *A, const cs_complex_t *x, cs_complex_t *y)
cs_dl * cs_l_real(cs_cl *A, cs_long_t real)
int cs_di_cholsol(int order, const cs_di *A, double *b)
cs_cls * cs_cl_sfree(cs_cls *S)
int * cs_di_etree(const cs_di *A, int ata)
cs_long_t * cs_dl_amd(cs_long_t order, const cs_dl *A)
int * cs_di_post(const int *parent, int n)
int cs_ci_reach(cs_ci *G, const cs_ci *B, int k, int *xi, const int *pinv)
cs_dl * cs_dl_permute(const cs_dl *A, const cs_long_t *pinv, const cs_long_t *q, cs_long_t values)
int cs_di_qrsol(int order, const cs_di *A, double *b)
cs_long_t * cs_cl_maxtrans(const cs_cl *A, cs_long_t seed)
int cs_di_scatter(const cs_di *A, int j, double beta, int *w, double *x, int mark, cs_di *C, int nz)
cs_cin * cs_ci_nfree(cs_cin *N)
cs_long_t cs_dl_ltsolve(const cs_dl *L, double *x)
cs_di * cs_di_load(FILE *f)
cs_long_t cs_cl_pvec(const cs_long_t *p, const cs_complex_t *b, cs_complex_t *x, cs_long_t n)
int * cs_di_maxtrans(const cs_di *A, int seed)
cs_long_t cs_dl_droptol(cs_dl *A, double tol)
cs_di * cs_di_multiply(const cs_di *A, const cs_di *B)
cs_dl * cs_dl_done(cs_dl *C, void *w, void *x, cs_long_t ok)
cs_long_t cs_cl_ipvec(const cs_long_t *p, const cs_complex_t *b, cs_complex_t *x, cs_long_t n)
cs_dl * cs_dl_spalloc(cs_long_t m, cs_long_t n, cs_long_t nzmax, cs_long_t values, cs_long_t t)
cs_long_t cs_dl_dropzeros(cs_dl *A)
cs_di * cs_di_spfree(cs_di *A)
cs_long_t cs_cl_ereach(const cs_cl *A, cs_long_t k, const cs_long_t *parent, cs_long_t *s, cs_long_t *w)
cs_did * cs_di_dfree(cs_did *D)
int cs_di_reach(cs_di *G, const cs_di *B, int k, int *xi, const int *pinv)
cs_ci * cs_ci_spfree(cs_ci *A)
cs_did * cs_di_dmperm(const cs_di *A, int seed)
cs_dld * cs_dl_dalloc(cs_long_t m, cs_long_t n)
cs_dln * cs_dl_lu(const cs_dl *A, const cs_dls *S, double tol)
int cs_di_lsolve(const cs_di *L, double *x)
cs_dis * cs_di_sfree(cs_dis *S)
cs_long_t cs_dl_utsolve(const cs_dl *U, double *x)
cs_cis * cs_ci_sqr(int order, const cs_ci *A, int qr)
cs_long_t cs_cl_happly(const cs_cl *V, cs_long_t i, double beta, cs_complex_t *x)
cs_long_t cs_dl_scatter(const cs_dl *A, cs_long_t j, double beta, cs_long_t *w, double *x, cs_long_t mark, cs_dl *C, cs_long_t nz)
cs_long_t cs_cl_tdfs(cs_long_t j, cs_long_t k, cs_long_t *head, const cs_long_t *next, cs_long_t *post, cs_long_t *stack)
cs_di * cs_di_spalloc(int m, int n, int nzmax, int values, int t)
cs_di * cs_i_real(cs_ci *A, int real)
cs_dln * cs_dl_chol(const cs_dl *A, const cs_dls *S)
double cs_di_house(double *x, double *beta, int n)
cs_cin * cs_ci_ndone(cs_cin *N, cs_ci *C, void *w, void *x, int ok)
cs_dl * cs_dl_transpose(const cs_dl *A, cs_long_t values)
void * cs_dl_malloc(cs_long_t n, size_t size)