#ifndef COLAMD_H
#define COLAMD_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdlib.h>
#define COLAMD_DATE "Nov 1, 2007"
#define COLAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub))
#define COLAMD_MAIN_VERSION 2
#define COLAMD_SUB_VERSION 7
#define COLAMD_SUBSUB_VERSION 1
#define COLAMD_VERSION \
COLAMD_VERSION_CODE(COLAMD_MAIN_VERSION,COLAMD_SUB_VERSION)
#define COLAMD_KNOBS 20
#define COLAMD_STATS 20
#define COLAMD_DENSE_ROW 0
#define COLAMD_DENSE_COL 1
#define COLAMD_AGGRESSIVE 2
#define COLAMD_DEFRAG_COUNT 2
#define COLAMD_STATUS 3
#define COLAMD_INFO1 4
#define COLAMD_INFO2 5
#define COLAMD_INFO3 6
#define COLAMD_OK (0)
#define COLAMD_OK_BUT_JUMBLED (1)
#define COLAMD_ERROR_A_not_present (-1)
#define COLAMD_ERROR_p_not_present (-2)
#define COLAMD_ERROR_nrow_negative (-3)
#define COLAMD_ERROR_ncol_negative (-4)
#define COLAMD_ERROR_nnz_negative (-5)
#define COLAMD_ERROR_p0_nonzero (-6)
#define COLAMD_ERROR_A_too_small (-7)
#define COLAMD_ERROR_col_length_negative (-8)
#define COLAMD_ERROR_row_index_out_of_bounds (-9)
#define COLAMD_ERROR_out_of_memory (-10)
#define COLAMD_ERROR_internal_error (-999)
#include "UFconfig.h"
size_t colamd_recommended
(
int nnz,
int n_row,
int n_col
) ;
size_t colamd_l_recommended
(
UF_long nnz,
UF_long n_row,
UF_long n_col
) ;
void colamd_set_defaults
(
double knobs [COLAMD_KNOBS]
) ;
void colamd_l_set_defaults
(
double knobs [COLAMD_KNOBS]
) ;
int colamd
(
int n_row,
int n_col,
int Alen,
int A [],
int p [],
double knobs [COLAMD_KNOBS],
int stats [COLAMD_STATS]
) ;
UF_long colamd_l
(
UF_long n_row,
UF_long n_col,
UF_long Alen,
UF_long A [],
UF_long p [],
double knobs [COLAMD_KNOBS],
UF_long stats [COLAMD_STATS]
) ;
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 *)
) ;
UF_long symamd_l
(
UF_long n,
UF_long A [],
UF_long p [],
UF_long perm [],
double knobs [COLAMD_KNOBS],
UF_long stats [COLAMD_STATS],
void * (*allocate) (size_t, size_t),
void (*release) (void *)
) ;
void colamd_report
(
int stats [COLAMD_STATS]
) ;
void colamd_l_report
(
UF_long stats [COLAMD_STATS]
) ;
void symamd_report
(
int stats [COLAMD_STATS]
) ;
void symamd_l_report
(
UF_long stats [COLAMD_STATS]
) ;
#ifndef EXTERN
#define EXTERN extern
#endif
EXTERN int (*colamd_printf) (const char *, ...) ;
#ifdef __cplusplus
}
#endif
#endif