#include "colamd.h"#include <limits.h>#include <stdio.h>#include <assert.h>
Defines | |
| #define | PUBLIC |
| #define | PRIVATE static |
| #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 | PRINTF printf |
| #define | INDEX(i) (i) |
| #define | DEBUG0(params) { (void) PRINTF params ; } |
| #define | DEBUG1(params) { if (colamd_debug >= 1) (void) PRINTF params ; } |
| #define | DEBUG2(params) { if (colamd_debug >= 2) (void) PRINTF params ; } |
| #define | DEBUG3(params) { if (colamd_debug >= 3) (void) PRINTF params ; } |
| #define | DEBUG4(params) { if (colamd_debug >= 4) (void) PRINTF params ; } |
| #define | ASSERT(expression) (assert (expression)) |
Functions | |
| 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) |
| PRIVATE void | order_children (int n_col, Colamd_Col Col[], int p[]) |
| PRIVATE void | detect_super_cols (int n_col, Colamd_Row Row[], 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 n_row, Colamd_Row Row[]) |
| PRIVATE void | print_report (char *method, int stats[COLAMD_STATS]) |
| PRIVATE void | colamd_get_debug (char *method) |
| PRIVATE void | debug_deg_lists (int n_row, int n_col, Colamd_Row Row[], Colamd_Col Col[], int head[], int min_score, int should, int max_deg) |
| PRIVATE void | debug_mark (int n_row, Colamd_Row Row[], int tag_mark, int max_mark) |
| PRIVATE void | debug_matrix (int n_row, int n_col, Colamd_Row Row[], Colamd_Col Col[], int A[]) |
| PRIVATE void | debug_structures (int n_row, int n_col, Colamd_Row Row[], Colamd_Col Col[], int A[], int n_col2) |
| PUBLIC int | colamd_recommended (int nnz, int n_row, int n_col) |
| PUBLIC void | colamd_set_defaults (double knobs[COLAMD_KNOBS]) |
| PUBLIC int | symamd (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 (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]) |
Variables | |
| PRIVATE int | colamd_debug |
| #define ALIVE (0) |
| #define ASSERT | ( | expression | ) | (assert (expression)) |
| #define COL_IS_ALIVE | ( | c | ) | (Col [c].start >= ALIVE) |
| #define COL_IS_DEAD | ( | c | ) | (Col [c].start < ALIVE) |
| #define COL_IS_DEAD_PRINCIPAL | ( | c | ) | (Col [c].start == DEAD_PRINCIPAL) |
| #define DEAD (-1) |
| #define DEAD_NON_PRINCIPAL (-2) |
| #define DEAD_PRINCIPAL (-1) |
| #define DEBUG0 | ( | params | ) | { (void) PRINTF params ; } |
| #define DEBUG1 | ( | params | ) | { if (colamd_debug >= 1) (void) PRINTF params ; } |
| #define DEBUG2 | ( | params | ) | { if (colamd_debug >= 2) (void) PRINTF params ; } |
| #define DEBUG3 | ( | params | ) | { if (colamd_debug >= 3) (void) PRINTF params ; } |
| #define DEBUG4 | ( | params | ) | { if (colamd_debug >= 4) (void) PRINTF params ; } |
| #define EMPTY (-1) |
| #define FALSE (0) |
| #define INDEX | ( | i | ) | (i) |
| #define KILL_NON_PRINCIPAL_COL | ( | c | ) | { Col [c].start = DEAD_NON_PRINCIPAL ; } |
| #define KILL_PRINCIPAL_COL | ( | c | ) | { Col [c].start = DEAD_PRINCIPAL ; } |
| #define KILL_ROW | ( | r | ) | { Row [r].shared2.mark = DEAD ; } |
| #define MAX | ( | a, | |||
| b | ) | (((a) > (b)) ? (a) : (b)) |
| #define MIN | ( | a, | |||
| b | ) | (((a) < (b)) ? (a) : (b)) |
| #define ONES_COMPLEMENT | ( | r | ) | (-(r)-1) |
| #define PRINTF printf |
| #define PRIVATE static |
| #define PUBLIC |
| #define ROW_IS_ALIVE | ( | r | ) | (Row [r].shared2.mark >= ALIVE) |
| #define ROW_IS_DEAD | ( | r | ) | ROW_IS_MARKED_DEAD (Row[r].shared2.mark) |
| #define ROW_IS_MARKED_DEAD | ( | row_mark | ) | (row_mark < ALIVE) |
| #define TRUE (1) |
| PRIVATE int clear_mark | ( | int | n_row, | |
| Colamd_Row | Row[] | |||
| ) |

| PUBLIC int colamd | ( | int | n_row, | |
| int | n_col, | |||
| int | Alen, | |||
| int | A[], | |||
| int | p[], | |||
| double | knobs[COLAMD_KNOBS], | |||
| int | stats[COLAMD_STATS] | |||
| ) |


| PRIVATE void colamd_get_debug | ( | char * | method | ) |

| PUBLIC int colamd_recommended | ( | int | nnz, | |
| int | n_row, | |||
| int | n_col | |||
| ) |

| PUBLIC void colamd_report | ( | int | stats[COLAMD_STATS] | ) |

| PUBLIC void colamd_set_defaults | ( | double | knobs[COLAMD_KNOBS] | ) |

| PRIVATE void debug_deg_lists | ( | int | n_row, | |
| int | n_col, | |||
| Colamd_Row | Row[], | |||
| Colamd_Col | Col[], | |||
| int | head[], | |||
| int | min_score, | |||
| int | should, | |||
| int | max_deg | |||
| ) |

| PRIVATE void debug_mark | ( | int | n_row, | |
| Colamd_Row | Row[], | |||
| int | tag_mark, | |||
| int | max_mark | |||
| ) |

| PRIVATE void debug_matrix | ( | int | n_row, | |
| int | n_col, | |||
| Colamd_Row | Row[], | |||
| Colamd_Col | Col[], | |||
| int | A[] | |||
| ) |

| PRIVATE void debug_structures | ( | int | n_row, | |
| int | n_col, | |||
| Colamd_Row | Row[], | |||
| Colamd_Col | Col[], | |||
| int | A[], | |||
| int | n_col2 | |||
| ) |

| PRIVATE void detect_super_cols | ( | int | n_col, | |
| Colamd_Row | Row[], | |||
| Colamd_Col | Col[], | |||
| int | A[], | |||
| int | head[], | |||
| int | row_start, | |||
| int | row_length | |||
| ) |

| 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 | |||
| ) |


| PRIVATE int garbage_collection | ( | int | n_row, | |
| int | n_col, | |||
| Colamd_Row | Row[], | |||
| Colamd_Col | Col[], | |||
| int | A[], | |||
| int * | pfree | |||
| ) |

| 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 void order_children | ( | int | n_col, | |
| Colamd_Col | Col[], | |||
| int | p[] | |||
| ) |

| PRIVATE void print_report | ( | char * | method, | |
| int | stats[COLAMD_STATS] | |||
| ) |

| PUBLIC int symamd | ( | int | n, | |
| int | A[], | |||
| int | p[], | |||
| int | perm[], | |||
| double | knobs[COLAMD_KNOBS], | |||
| int | stats[COLAMD_STATS], | |||
| void *(*)(size_t, size_t) | allocate, | |||
| void(*)(void *) | release | |||
| ) |

| PUBLIC void symamd_report | ( | int | stats[COLAMD_STATS] | ) |

| PRIVATE int colamd_debug |
1.6.1