1 The COLAMD ordering method - Version 2.7
2 -------------------------------------------------------------------------------
4 The COLAMD column approximate minimum degree ordering algorithm computes
5 a permutation vector P such that the LU factorization of A (:,P)
6 tends to be sparser than that of A. The Cholesky factorization of
7 (A (:,P))'*(A (:,P)) will also tend to be sparser than that of A'*A.
8 SYMAMD is a symmetric minimum degree ordering method based on COLAMD,
9 available as a MATLAB-callable function. It constructs a matrix M such
10 that M'*M has the same pattern as A, and then uses COLAMD to compute a column
11 ordering of M. Colamd and symamd tend to be faster and generate better
12 orderings than their MATLAB counterparts, colmmd and symmmd.
14 To compile and test the colamd m-files and mexFunctions, just unpack the
15 COLAMD/ directory from the COLAMD.tar.gz file, and run MATLAB from
16 within that directory. Next, type colamd_test to compile and test colamd
17 and symamd. This will work on any computer with MATLAB (Unix, PC, or Mac).
18 Alternatively, type "make" (in Unix) to compile and run a simple example C
19 code, without using MATLAB.
21 To compile and install the colamd m-files and mexFunctions, just cd to
22 COLAMD/MATLAB and type colamd_install in the MATLAB command window.
23 A short demo will run. Optionally, type colamd_test to run an extensive tests.
24 Type "make" in Unix in the COLAMD directory to compile the C-callable
25 library and to run a short demo.
27 If you have MATLAB 7.2 or earlier, you must first edit UFconfig/UFconfig.h to
28 remove the "-largeArrayDims" option from the MEX command (or just use
29 colamd_make.m inside MATLAB).
31 Colamd is a built-in routine in MATLAB, available from The
32 Mathworks, Inc. Under most cases, the compiled COLAMD from Versions 2.0 to the
33 current version do not differ. Colamd Versions 2.2 and 2.3 differ only in their
34 mexFunction interaces to MATLAB. v2.4 fixes a bug in the symamd routine in
35 v2.3. The bug (in v2.3 and earlier) has no effect on the MATLAB symamd
36 mexFunction. v2.5 adds additional checks for integer overflow, so that
37 the "int" version can be safely used with 64-bit pointers. Refer to the
38 ChangeLog for more details.
40 To use colamd and symamd within an application written in C, all you need are
41 colamd.c, colamd_global.c, and colamd.h, which are the C-callable
42 colamd/symamd codes. See colamd.c for more information on how to call
43 colamd from a C program.
45 Requires UFconfig, in the ../UFconfig directory relative to this directory.
47 Copyright (c) 1998-2007, Timothy A. Davis, All Rights Reserved.
49 See http://www.cise.ufl.edu/research/sparse/colamd (the colamd.c
50 file) for the License.
55 T. A. Davis, J. R. Gilbert, S. Larimore, E. Ng, An approximate column
56 minimum degree ordering algorithm, ACM Transactions on Mathematical
57 Software, vol. 30, no. 3., pp. 353-376, 2004.
59 T. A. Davis, J. R. Gilbert, S. Larimore, E. Ng, Algorithm 836: COLAMD,
60 an approximate column minimum degree ordering algorithm, ACM
61 Transactions on Mathematical Software, vol. 30, no. 3., pp. 377-380,
64 "An approximate minimum degree column ordering algorithm",
65 S. I. Larimore, MS Thesis, Dept. of Computer and Information
66 Science and Engineering, University of Florida, Gainesville, FL,
67 1998. CISE Tech Report TR-98-016. Available at
68 ftp://ftp.cise.ufl.edu/cis/tech-reports/tr98/tr98-016.ps
71 Approximate Deficiency for Ordering the Columns of a Matrix,
72 J. L. Kern, Senior Thesis, Dept. of Computer and Information
73 Science and Engineering, University of Florida, Gainesville, FL,
74 1999. Available at http://www.cise.ufl.edu/~davis/Kern/kern.ps
77 Authors: Stefan I. Larimore and Timothy A. Davis, University of Florida,
78 in collaboration with John Gilbert, Xerox PARC (now at UC Santa Barbara),
79 and Esmong Ng, Lawrence Berkeley National Laboratory (much of this work
80 he did while at Oak Ridge National Laboratory).
85 Doc additional documentation (see colamd.c for more)
87 Lib compiled C-callable library
88 Makefile primary Unix Makefile
89 MATLAB MATLAB functions
94 colamd_example.c simple example
95 colamd_example.out output of colamd_example.c
96 colamd_l_example.c simple example, long integers
97 colamd_l_example.out output of colamd_l_example.c
98 Makefile Makefile for C demos
105 colamd.h include file
108 Makefile Makefile for C-callable library
111 colamd2.m MATLAB interface for colamd2
112 colamd_demo.m simple demo
113 colamd_install.m compile and install colamd2 and symamd2
114 colamd_make.m compile colamd2 and symamd2
115 colamdmex.ca MATLAB mexFunction for colamd2
116 colamd_test.m extensive test
117 colamdtestmex.c test function for colamd
118 Contents.m contents of the MATLAB directory
120 Makefile Makefile for MATLAB functions
121 symamd2.m MATLAB interface for symamd2
122 symamdmex.c MATLAB mexFunction for symamd2
123 symamdtestmex.c test function for symamd
126 colamd.c primary source code
127 colamd_global.c globally defined function pointers (malloc, free, ...)