1
LDL Version 2.0: a sparse LDL' factorization and solve package.
2
Written in C, with both a C and MATLAB mexFunction interface.
4
These routines are not terrifically fast (they do not use dense matrix kernels),
5
but the code is very short and concise. The purpose is to illustrate the
6
algorithms in a very concise and readable manner, primarily for educational
7
purposes. Although the code is very concise, this package is slightly faster
8
than the built-in sparse Cholesky factorization in MATLAB 6.5 (chol), when
9
using the same input permutation.
11
Requires UFconfig, in the ../UFconfig directory relative to this directory.
13
Quick start (Unix, or Windows with Cygwin):
15
To compile, test, and install LDL, you may wish to first obtain a copy of
16
AMD v2.0 from http://www.cise.ufl.edu/research/sparse, and place it in the
17
../AMD directory, relative to this directory. Next, type "make", which
18
will compile the LDL library and three demo main programs (one of which
19
requires AMD). It will also compile the LDL MATLAB mexFunction (if you
20
have MATLAB). Typing "make clean" will remove non-essential files.
21
AMD v2.0 or later is required. Its use is optional.
23
Quick start (for MATLAB users);
25
To compile, test, and install the LDL mexFunctions (ldlsparse and
26
ldlsymbol), start MATLAB in this directory and type ldl_install.
27
This works on any system supported by MATLAB.
29
--------------------------------------------------------------------------------
31
LDL Copyright (c) 2005 by Timothy A. Davis. All Rights Reserved.
35
Your use or distribution of LDL or any modified version of
36
LDL implies that you agree to this License.
38
This library is free software; you can redistribute it and/or
39
modify it under the terms of the GNU Lesser General Public
40
License as published by the Free Software Foundation; either
41
version 2.1 of the License, or (at your option) any later version.
43
This library is distributed in the hope that it will be useful,
44
but WITHOUT ANY WARRANTY; without even the implied warranty of
45
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
46
Lesser General Public License for more details.
48
You should have received a copy of the GNU Lesser General Public
49
License along with this library; if not, write to the Free Software
50
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
53
Permission is hereby granted to use or copy this program under the
54
terms of the GNU LGPL, provided that the Copyright, this License,
55
and the Availability of the original version is retained on all copies.
56
User documentation of any code that uses this code or any modified
57
version of this code must cite the Copyright, this License, the
58
Availability note, and "Used by permission." Permission to modify
59
the code and to distribute modified code is granted, provided the
60
Copyright, this License, and the Availability note are retained,
61
and a notice that the code was modified is included.
65
http://www.cise.ufl.edu/research/sparse/ldl
69
This work was supported by the National Science Foundation, under
72
Portions of this work were done while on sabbatical at Stanford University
73
and Lawrence Berkeley National Laboratory (with funding from the SciDAC
74
program). I would like to thank Gene Golub, Esmond Ng, and Horst Simon
75
for making this sabbatical possible. I would like to thank Pete Stewart
76
for his comments on a draft of this software and paper.
78
--------------------------------------------------------------------------------
79
Files and directories in this distribution:
80
--------------------------------------------------------------------------------
82
Documentation, and compiling:
85
Makefile for compiling LDL
86
ChangeLog changes since V1.0 (Dec 31, 2003)
88
lesser.txt the GNU LGPL license
90
ldl_userguide.pdf user guide in PDF
91
ldl_userguide.ps user guide in postscript
92
ldl_userguide.tex user guide in Latex
93
ldl.bib bibliography for user guide
95
The LDL library itself:
97
ldl.c the C-callable routines
98
ldl.h include file for any code that calls LDL
100
A simple C main program that demonstrates how to use LDL:
102
ldlsimple.c a stand-alone C program, uses the basic features of LDL
103
ldlsimple.out output of ldlsimple
105
ldllsimple.c long integer version of ldlsimple.c
107
Demo C program, for testing LDL and providing an example of its use
109
ldlmain.c a stand-alone C main program that uses and tests LDL
110
Matrix a directory containing matrices used by ldlmain.c
111
ldlmain.out output of ldlmain
112
ldlamd.out output of ldlamd (ldlmain.c compiled with AMD)
113
ldllamd.out output of ldllamd (ldlmain.c compiled with AMD, long)
115
MATLAB-related, not required for use in a regular C program
117
Contents.m a list of the MATLAB-callable routines
118
ldl.m MATLAB help file for the LDL mexFunction
119
ldldemo.m MATLAB demo of how to use the LDL mexFunction
120
ldldemo.out diary output of ldldemo
121
ldltest.m to test the LDL mexFunction
122
ldltest.out diary output of ldltest
123
ldlmex.c the LDL mexFunction for MATLAB
124
ldlrow.m the numerical algorithm that LDL is based on
125
ldlmain2.m compiles and runs ldlmain.c as a MATLAB mexFunction
126
ldlmain2.out output of ldlmain2.m
127
ldlsymbolmex.c symbolic factorization using LDL (see SYMBFACT, ETREE)
128
ldlsymbol.m help file for the LDLSYMBOL mexFunction
130
ldl_install.m compile, install, and test LDL functions
131
ldl_make.m compile LDL (ldlsparse and ldlsymbol)
133
ldlsparse.m help for ldlsparse
135
See ldl.c for a description of how to use the code from a C program. Type
136
"help ldl" in MATLAB for information on how to use LDL in a MATLAB program.