# SRC/colamd.h File Reference

Colamd prototypes and definitions. More...

`#include <stdlib.h>`

Go to the source code of this file.

## Data Structures
struct | Colamd_Col_struct
struct | Colamd_Row_struct
## Defines
#define | COLAMD_KNOBS 20
#define | COLAMD_STATS 20
#define | COLAMD_DENSE_ROW 0
#define | COLAMD_DENSE_COL 1
#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)
#define | COLAMD_C(n_col) ((int) (((n_col) + 1) * sizeof (Colamd_Col) / sizeof (int)))
#define | COLAMD_R(n_row) ((int) (((n_row) + 1) * sizeof (Colamd_Row) / sizeof (int)))
#define | COLAMD_RECOMMENDED(nnz, n_row, n_col)
## Typedefs
typedef struct Colamd_Col_struct | Colamd_Col
typedef struct Colamd_Row_struct | Colamd_Row
## Functions
int | colamd_recommended (int nnz, int n_row, int n_col)
void | colamd_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])
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 *))
void | colamd_report (int stats[COLAMD_STATS])
void | symamd_report (int stats[COLAMD_STATS])

## Detailed Description

        ==========================================================================
        === colamd/symamd prototypes and definitions =============================
        ==========================================================================

        You must include this file (colamd.h) in any routine that uses colamd,
        symamd, or the related macros and definitions.

        Authors:

    	The authors of the code itself are Stefan I. Larimore and Timothy A.
    	Davis (davis@cise.ufl.edu), University of Florida.  The algorithm was
    	developed in collaboration with John Gilbert, Xerox PARC, and Esmond
    	Ng, Oak Ridge National Laboratory.

        Date:

    	September 8, 2003.  Version 2.3.

        Acknowledgements:

    	This work was supported by the National Science Foundation, under
    	grants DMS-9504974 and DMS-9803599.

        Notice:

    	Copyright (c) 1998-2003 by the University of Florida.
    	All Rights Reserved.

    	THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
    	EXPRESSED OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.

    	Permission is hereby granted to use, copy, modify, and/or distribute
    	this program, provided that the Copyright, this License, and the
    	Availability of the original version is retained on all copies and made
    	accessible to the end-user of any code or package that includes COLAMD
    	or any modified version of COLAMD.

        Availability:

    	The colamd/symamd library is available at

    	    http://www.cise.ufl.edu/research/sparse/colamd/

    	This is the http://www.cise.ufl.edu/research/sparse/colamd/colamd.h
    	file.  It is required by the colamd.c, colamdmex.c, and symamdmex.c
    	files, and by any C code that calls the routines whose prototypes are
    	listed below, or that uses the colamd/symamd definitions listed below.

## Define Documentation

#define COLAMD_C | ( | n_col |  | ) | ((int) (((n_col) + 1) * sizeof (Colamd_Col) / sizeof (int)))

#define COLAMD_DEFRAG_COUNT 2

#define COLAMD_DENSE_COL 1

#define COLAMD_DENSE_ROW 0

#define COLAMD_ERROR_A_not_present (-1)

#define COLAMD_ERROR_A_too_small (-7)

#define COLAMD_ERROR_col_length_negative (-8)

#define COLAMD_ERROR_internal_error (-999)

#define COLAMD_ERROR_ncol_negative (-4)

#define COLAMD_ERROR_nnz_negative (-5)

#define COLAMD_ERROR_nrow_negative (-3)

#define COLAMD_ERROR_out_of_memory (-10)

#define COLAMD_ERROR_p0_nonzero (-6)

#define COLAMD_ERROR_p_not_present (-2)

#define COLAMD_ERROR_row_index_out_of_bounds (-9)

#define COLAMD_INFO1 4

#define COLAMD_INFO2 5

#define COLAMD_INFO3 6

#define COLAMD_KNOBS 20

#define COLAMD_OK (0)

#define COLAMD_OK_BUT_JUMBLED (1)

#define COLAMD_R | ( | n_row |  | ) | ((int) (((n_row) + 1) * sizeof (Colamd_Row) / sizeof (int)))

#define COLAMD_RECOMMENDED | ( | nnz,
|  | n_row,
|  | n_col |  | ) |

Value:

    (                                                                             \
    ((nnz) < 0 || (n_row) < 0 || (n_col) < 0)                                     \
    ?                                                                             \
        (-1)                                                                      \
    :                                                                             \
        (2 * (nnz) + COLAMD_C (n_col) + COLAMD_R (n_row) + (n_col) + ((nnz) / 5)) \
    )

#define COLAMD_STATS 20

#define COLAMD_STATUS 3

## Typedef Documentation

typedef struct Colamd_Col_struct Colamd_Col

typedef struct Colamd_Row_struct Colamd_Row

## Function Documentation

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

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

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

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

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

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