| /* ========================================================================== */ | |
| /* === colamd/symamd prototypes and definitions ============================= */ | |
| /* ========================================================================== */ | |
| /* COLAMD / SYMAMD include file | |
| 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 (DrTimothyAldenDavis@gmail.com). The algorithm was | |
| developed in collaboration with John Gilbert, Xerox PARC, and Esmond | |
| Ng, Oak Ridge National Laboratory. | |
| Acknowledgements: | |
| This work was supported by the National Science Foundation, under | |
| grants DMS-9504974 and DMS-9803599. | |
| Notice: | |
| Copyright (c) 1998-2007, Timothy A. Davis, All Rights Reserved. | |
| See COLAMD/Doc/License.txt for the license. | |
| Availability: | |
| The colamd/symamd library is available at http://www.suitesparse.com | |
| This file 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. | |
| */ | |
| /* make it easy for C++ programs to include COLAMD */ | |
| extern "C" { | |
| /* ========================================================================== */ | |
| /* === Include files ======================================================== */ | |
| /* ========================================================================== */ | |
| /* ========================================================================== */ | |
| /* === COLAMD version ======================================================= */ | |
| /* ========================================================================== */ | |
| /* COLAMD Version 2.4 and later will include the following definitions. | |
| * As an example, to test if the version you are using is 2.4 or later: | |
| * | |
| * #ifdef COLAMD_VERSION | |
| * if (COLAMD_VERSION >= COLAMD_VERSION_CODE (2,4)) ... | |
| * #endif | |
| * | |
| * This also works during compile-time: | |
| * | |
| * #if defined(COLAMD_VERSION) && (COLAMD_VERSION >= COLAMD_VERSION_CODE (2,4)) | |
| * printf ("This is version 2.4 or later\n") ; | |
| * #else | |
| * printf ("This is an early version\n") ; | |
| * #endif | |
| * | |
| * Versions 2.3 and earlier of COLAMD do not include a #define'd version number. | |
| */ | |
| /* ========================================================================== */ | |
| /* === Knob and statistics definitions ====================================== */ | |
| /* ========================================================================== */ | |
| /* size of the knobs [ ] array. Only knobs [0..1] are currently used. */ | |
| /* number of output statistics. Only stats [0..6] are currently used. */ | |
| /* knobs [0] and stats [0]: dense row knob and output statistic. */ | |
| /* knobs [1] and stats [1]: dense column knob and output statistic. */ | |
| /* knobs [2]: aggressive absorption */ | |
| /* stats [2]: memory defragmentation count output statistic */ | |
| /* stats [3]: colamd status: zero OK, > 0 warning or notice, < 0 error */ | |
| /* stats [4..6]: error info, or info on jumbled columns */ | |
| /* error codes returned in stats [3]: */ | |
| /* ========================================================================== */ | |
| /* === Prototypes of user-callable routines ================================= */ | |
| /* ========================================================================== */ | |
| size_t colamd_recommended /* returns recommended value of Alen, */ | |
| /* or 0 if input arguments are erroneous */ | |
| ( | |
| int nnz, /* nonzeros in A */ | |
| int n_row, /* number of rows in A */ | |
| int n_col /* number of columns in A */ | |
| ) ; | |
| size_t colamd_l_recommended /* returns recommended value of Alen, */ | |
| /* or 0 if input arguments are erroneous */ | |
| ( | |
| SuiteSparse_long nnz, /* nonzeros in A */ | |
| SuiteSparse_long n_row, /* number of rows in A */ | |
| SuiteSparse_long n_col /* number of columns in A */ | |
| ) ; | |
| void colamd_set_defaults /* sets default parameters */ | |
| ( /* knobs argument is modified on output */ | |
| double knobs [COLAMD_KNOBS] /* parameter settings for colamd */ | |
| ) ; | |
| void colamd_l_set_defaults /* sets default parameters */ | |
| ( /* knobs argument is modified on output */ | |
| double knobs [COLAMD_KNOBS] /* parameter settings for colamd */ | |
| ) ; | |
| int colamd /* returns (1) if successful, (0) otherwise*/ | |
| ( /* A and p arguments are modified on output */ | |
| int n_row, /* number of rows in A */ | |
| int n_col, /* number of columns in A */ | |
| int Alen, /* size of the array A */ | |
| int A [], /* row indices of A, of size Alen */ | |
| int p [], /* column pointers of A, of size n_col+1 */ | |
| double knobs [COLAMD_KNOBS],/* parameter settings for colamd */ | |
| int stats [COLAMD_STATS] /* colamd output statistics and error codes */ | |
| ) ; | |
| SuiteSparse_long colamd_l /* returns (1) if successful, (0) otherwise*/ | |
| ( /* A and p arguments are modified on output */ | |
| SuiteSparse_long n_row, /* number of rows in A */ | |
| SuiteSparse_long n_col, /* number of columns in A */ | |
| SuiteSparse_long Alen, /* size of the array A */ | |
| SuiteSparse_long A [], /* row indices of A, of size Alen */ | |
| SuiteSparse_long p [], /* column pointers of A, of size n_col+1 */ | |
| double knobs [COLAMD_KNOBS],/* parameter settings for colamd */ | |
| SuiteSparse_long stats [COLAMD_STATS] /* colamd output statistics | |
| * and error codes */ | |
| ) ; | |
| int symamd /* return (1) if OK, (0) otherwise */ | |
| ( | |
| int n, /* number of rows and columns of A */ | |
| int A [], /* row indices of A */ | |
| int p [], /* column pointers of A */ | |
| int perm [], /* output permutation, size n_col+1 */ | |
| double knobs [COLAMD_KNOBS], /* parameters (uses defaults if NULL) */ | |
| int stats [COLAMD_STATS], /* output statistics and error codes */ | |
| void * (*allocate) (size_t, size_t), | |
| /* pointer to calloc (ANSI C) or */ | |
| /* mxCalloc (for MATLAB mexFunction) */ | |
| void (*release) (void *) | |
| /* pointer to free (ANSI C) or */ | |
| /* mxFree (for MATLAB mexFunction) */ | |
| ) ; | |
| SuiteSparse_long symamd_l /* return (1) if OK, (0) otherwise */ | |
| ( | |
| SuiteSparse_long n, /* number of rows and columns of A */ | |
| SuiteSparse_long A [], /* row indices of A */ | |
| SuiteSparse_long p [], /* column pointers of A */ | |
| SuiteSparse_long perm [], /* output permutation, size n_col+1 */ | |
| double knobs [COLAMD_KNOBS], /* parameters (uses defaults if NULL) */ | |
| SuiteSparse_long stats [COLAMD_STATS], /* output stats and error codes */ | |
| void * (*allocate) (size_t, size_t), | |
| /* pointer to calloc (ANSI C) or */ | |
| /* mxCalloc (for MATLAB mexFunction) */ | |
| void (*release) (void *) | |
| /* pointer to free (ANSI C) or */ | |
| /* mxFree (for MATLAB mexFunction) */ | |
| ) ; | |
| void colamd_report | |
| ( | |
| int stats [COLAMD_STATS] | |
| ) ; | |
| void colamd_l_report | |
| ( | |
| SuiteSparse_long stats [COLAMD_STATS] | |
| ) ; | |
| void symamd_report | |
| ( | |
| int stats [COLAMD_STATS] | |
| ) ; | |
| void symamd_l_report | |
| ( | |
| SuiteSparse_long stats [COLAMD_STATS] | |
| ) ; | |
| } | |