|  | 
| #define | NDEBUG | 
|  | 
| #define | NULL   ((void *) 0) | 
|  | 
| #define | Int   int | 
|  | 
| #define | ID   "%d" | 
|  | 
| #define | Int_MAX   INT_MAX | 
|  | 
| #define | COLAMD_recommended   colamd_recommended | 
|  | 
| #define | COLAMD_set_defaults   colamd_set_defaults | 
|  | 
| #define | COLAMD_MAIN   colamd | 
|  | 
| #define | SYMAMD_MAIN   symamd | 
|  | 
| #define | COLAMD_report   colamd_report | 
|  | 
| #define | SYMAMD_report   symamd_report | 
|  | 
| #define | PUBLIC | 
|  | 
| #define | PRIVATE   static | 
|  | 
| #define | DENSE_DEGREE(alpha,  n)       ((Int) MAX (16.0, (alpha) * sqrt ((double) (n)))) | 
|  | 
| #define | MAX(a,  b)   (((a) > (b)) ? (a) : (b)) | 
|  | 
| #define | MIN(a,  b)   (((a) < (b)) ? (a) : (b)) | 
|  | 
| #define | ONES_COMPLEMENT(r)   (-(r)-1) | 
|  | 
| #define | TRUE   (1) | 
|  | 
| #define | FALSE   (0) | 
|  | 
| #define | EMPTY   (-1) | 
|  | 
| #define | ALIVE   (0) | 
|  | 
| #define | DEAD   (-1) | 
|  | 
| #define | DEAD_PRINCIPAL   (-1) | 
|  | 
| #define | DEAD_NON_PRINCIPAL   (-2) | 
|  | 
| #define | ROW_IS_DEAD(r)   ROW_IS_MARKED_DEAD (Row[r].shared2.mark) | 
|  | 
| #define | ROW_IS_MARKED_DEAD(row_mark)   (row_mark < ALIVE) | 
|  | 
| #define | ROW_IS_ALIVE(r)   (Row [r].shared2.mark >= ALIVE) | 
|  | 
| #define | COL_IS_DEAD(c)   (Col [c].start < ALIVE) | 
|  | 
| #define | COL_IS_ALIVE(c)   (Col [c].start >= ALIVE) | 
|  | 
| #define | COL_IS_DEAD_PRINCIPAL(c)   (Col [c].start == DEAD_PRINCIPAL) | 
|  | 
| #define | KILL_ROW(r)   { Row [r].shared2.mark = DEAD ; } | 
|  | 
| #define | KILL_PRINCIPAL_COL(c)   { Col [c].start = DEAD_PRINCIPAL ; } | 
|  | 
| #define | KILL_NON_PRINCIPAL_COL(c)   { Col [c].start = DEAD_NON_PRINCIPAL ; } | 
|  | 
| #define | INDEX(i)   (i) | 
|  | 
| #define | DEBUG0(params)   ; | 
|  | 
| #define | DEBUG1(params)   ; | 
|  | 
| #define | DEBUG2(params)   ; | 
|  | 
| #define | DEBUG3(params)   ; | 
|  | 
| #define | DEBUG4(params)   ; | 
|  | 
| #define | ASSERT(expression) | 
|  | 
| #define | COLAMD_C(n_col,  ok)       ((t_mult (t_add (n_col, 1, ok), sizeof (Colamd_Col), ok) / sizeof (Int))) | 
|  | 
| #define | COLAMD_R(n_row,  ok)       ((t_mult (t_add (n_row, 1, ok), sizeof (Colamd_Row), ok) / sizeof (Int))) | 
|  | 
|  | 
| PRIVATE Int | init_rows_cols (Int n_row, Int n_col, Colamd_Row Row[], Colamd_Col Col[], Int A[], Int p[], Int stats[COLAMD_STATS]) | 
|  | 
| PRIVATE void | init_scoring (Int n_row, Int n_col, Colamd_Row Row[], Colamd_Col Col[], Int A[], Int head[], double knobs[COLAMD_KNOBS], Int *p_n_row2, Int *p_n_col2, Int *p_max_deg) | 
|  | 
| PRIVATE Int | find_ordering (Int n_row, Int n_col, Int Alen, Colamd_Row Row[], Colamd_Col Col[], Int A[], Int head[], Int n_col2, Int max_deg, Int pfree, Int aggressive) | 
|  | 
| PRIVATE void | order_children (Int n_col, Colamd_Col Col[], Int p[]) | 
|  | 
| PRIVATE void | detect_super_cols (Colamd_Col Col[], Int A[], Int head[], Int row_start, Int row_length) | 
|  | 
| PRIVATE Int | garbage_collection (Int n_row, Int n_col, Colamd_Row Row[], Colamd_Col Col[], Int A[], Int *pfree) | 
|  | 
| PRIVATE Int | clear_mark (Int tag_mark, Int max_mark, Int n_row, Colamd_Row Row[]) | 
|  | 
| PRIVATE void | print_report (char *method, Int stats[COLAMD_STATS]) | 
|  | 
| static size_t | t_add (size_t a, size_t b, int *ok) | 
|  | 
| static size_t | t_mult (size_t a, size_t k, int *ok) | 
|  | 
| PUBLIC size_t | COLAMD_recommended (Int nnz, Int n_row, Int n_col) | 
|  | 
| PUBLIC void | COLAMD_set_defaults (double knobs[COLAMD_KNOBS]) | 
|  | 
| PUBLIC Int | SYMAMD_MAIN (Int n, Int A[], Int p[], Int perm[], double knobs[COLAMD_KNOBS], Int stats[COLAMD_STATS], void *(*allocate)(size_t, size_t), void(*release)(void *)) | 
|  | 
| PUBLIC Int | COLAMD_MAIN (Int n_row, Int n_col, Int Alen, Int A[], Int p[], double knobs[COLAMD_KNOBS], Int stats[COLAMD_STATS]) | 
|  | 
| PUBLIC void | COLAMD_report (Int stats[COLAMD_STATS]) | 
|  | 
| PUBLIC void | SYMAMD_report (Int stats[COLAMD_STATS]) | 
|  |