44 #if (CAMD_VERSION < CAMD_VERSION_CODE (2,0))
45 #error "CAMD v2.0 or later is required"
66 Int *Cp, *Len, *Nv, *Head, *Elen, *Degree, *Wi, *Next, *BucketSet,
117 Degree = p ; p += n ;
122 Work3n =
CHOLMOD(malloc) (n+1, 3*
sizeof (
Int), Common) ;
129 Wi = p ; p += (n+1) ;
132 Head = Common->Head ;
141 C =
CHOLMOD(
aat) (A, fset, fsize, -2, Common) ;
154 CHOLMOD(free) (n+1, 3*
sizeof (
Int), Work3n, Common) ;
159 for (j = 0 ; j < n ; j++)
161 Len [j] = Cp [j+1] - Cp [j] ;
167 Common->anz = cnz / 2 + n ;
182 Control [
CAMD_DENSE] = Common->method [Common->current].prune_dense ;
183 Control [
CAMD_AGGRESSIVE] = Common->method [Common->current].aggressive;
199 amesos_camd_l2 (n, C->
p, C->
i, Len, C->
nzmax, cnz, Nv, Next, Perm, Head, Elen,
200 Degree, Wi, Control, Info, Cmember, BucketSet) ;
203 amesos_camd_2 (n, C->
p, C->
i, Len, C->
nzmax, cnz, Nv, Next, Perm, Head, Elen,
204 Degree, Wi, Control, Info, Cmember, BucketSet) ;
223 for (j = 0 ; j <= n ; j++)
227 CHOLMOD(free) (n+1, 3*
sizeof (
Int), Work3n, Common) ;
#define CHOLMOD_TOO_LARGE
int CHOLMOD() camd(cholmod_sparse *A, Int *fset, size_t fsize, Int *Cmember, Int *Perm, cholmod_common *Common)
EXTERN void *(* amesos_camd_realloc)(void *, size_t)
#define RETURN_IF_NULL_COMMON(result)
size_t CHOLMOD() mult_size_t(size_t a, size_t k, int *ok)
#define CAMD_NMULTSUBS_LDL
EXTERN int(* amesos_camd_printf)(const char *,...)
cholmod_sparse *CHOLMOD() aat(cholmod_sparse *A, Int *fset, size_t fsize, int mode, cholmod_common *Common)
int CHOLMOD() free_sparse(cholmod_sparse **AHandle, cholmod_common *Common)
#define ASSERT(expression)
void amesos_camd_2(int n, int Pe[], int Iw[], int Len[], int iwlen, int pfree, int Nv[], int Next[], int Last[], int Head[], int Elen[], int Degree[], int W[], double Control[], double Info[], const int C[], int BucketSet[])
EXTERN void *(* amesos_camd_calloc)(size_t, size_t)
int CHOLMOD() dump_perm(Int *Perm, size_t len, size_t n, char *name, cholmod_common *Common)
int CHOLMOD() allocate_work(size_t nrow, size_t iworksize, size_t xworksize, cholmod_common *Common)
#define CHOLMOD_MAXMETHODS
EXTERN void *(* amesos_camd_malloc)(size_t)
#define RETURN_IF_NULL(A, result)
#define ERROR(status, msg)
EXTERN void(* amesos_camd_free)(void *)
#define RETURN_IF_XTYPE_INVALID(A, xtype1, xtype2, result)
void amesos_camd_l2(UF_long n, UF_long Pe[], UF_long Iw[], UF_long Len[], UF_long iwlen, UF_long pfree, UF_long Nv[], UF_long Next[], UF_long Last[], UF_long Head[], UF_long Elen[], UF_long Degree[], UF_long W[], double Control[], double Info[], const UF_long C[], UF_long BucketSet[])
cholmod_sparse *CHOLMOD() copy(cholmod_sparse *A, int stype, int mode, cholmod_common *Common)