1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

LDL Version 1.2: a sparse LDL' factorization and solve package.
Written in C, with both a C and MATLAB mexFunction interface.
These routines are not terrifically fast (they do not use dense matrix kernels),
but the code is very short and concise. The purpose is to illustrate the
algorithms in a very concise and readable manner, primarily for educational
purposes. Although the code is very concise, this package is slightly faster
than the builtin sparse Cholesky factorization in MATLAB 6.5 (chol), when
using the same input permutation.
Requires UFconfig, in the ../UFconfig directory relative to this directory.
Quick start (Unix, or Windows with Cygwin):
To compile, test, and install LDL, you may wish to first obtain a copy of
AMD from http://www.cise.ufl.edu/research/sparse, and place it in the
../AMD directory, relative to this directory. Next, type "make", which
will compile the LDL library and three demo main programs (one of which
requires AMD). It will also compile the LDL MATLAB mexFunction (if you
have MATLAB). Typing "make clean" will remove nonessential files.
Quick start (for MATLAB users);
To compile, test, and install the LDL mexFunction, start MATLAB in this
directory and type ldldemo and/or ldltest. This works on any system
supported by MATLAB.

LDL Version 1.2 (Aug. 30, 2005), Copyright (c) 2005 by Timothy A. Davis.
All Rights Reserved.
LDL License:
Your use or distribution of LDL or any modified version of
LDL implies that you agree to this License.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301
USA
Permission is hereby granted to use or copy this program under the
terms of the GNU LGPL, provided that the Copyright, this License,
and the Availability of the original version is retained on all copies.
User documentation of any code that uses this code or any modified
version of this code must cite the Copyright, this License, the
Availability note, and "Used by permission." Permission to modify
the code and to distribute modified code is granted, provided the
Copyright, this License, and the Availability note are retained,
and a notice that the code was modified is included.
Availability:
http://www.cise.ufl.edu/research/sparse/ldl
Acknowledgements:
This work was supported by the National Science Foundation, under
grant CCR0203270.
Portions of this work were done while on sabbatical at Stanford University
and Lawrence Berkeley National Laboratory (with funding from the SciDAC
program). I would like to thank Gene Golub, Esmond Ng, and Horst Simon
for making this sabbatical possible. I would like to thank Pete Stewart
for his comments on a draft of this software and paper.

Files and directories in this distribution:

Documentation, and compiling:
README this file
Makefile for compiling LDL
ChangeLog changes since V1.0 (Dec 31, 2003)
lesser.txt the GNU LGPL license
ldl_userguide.pdf user guide in PDF
ldl_userguide.ps user guide in postscript
ldl_userguide.tex user guide in Latex
ldl.bib bibliography for user guide
The LDL library itself:
ldl.c the Ccallable routines
ldl.h include file for any code that calls LDL
A simple C main program that demonstrates how to use LDL:
ldlsimple.c a standalone C program, uses the basic features of LDL
ldlsimple.out output of ldlsimple
Demo C program, for testing LDL and providing an example of its use
ldlmain.c a standalone C main program that uses and tests LDL
Matrix a directory containing 12 matrices used by ldlmain.c
ldlmain.out output of ldlmain
ldlamd.out output of ldlamd (ldlmain.c compiled with AMD v1.2)
MATLABrelated, not required for use in a regular C program
Contents.m a list of the MATLABcallable routines
ldl.m MATLAB help file for the LDL mexFunction
ldldemo.m MATLAB demo of how to use the LDL mexFunction
ldldemo.out diary output of ldldemo
ldltest.m to test the LDL mexFunction
ldltest.out diary output of ldltest
ldlmex.c the LDL mexFunction for MATLAB
ldlrow.m the numerical algorithm that LDL is based on
ldlmain2.m compiles and runs ldlmain.c as a MATLAB mexFunction
ldlmain2.out output of ldlmain2.m
ldlsymbolmex.c symbolic factorization using LDL (see SYMBFACT, ETREE)
ldlsymbol.m help file for the LDLSYMBOL mexFunction
See ldl.c for a description of how to use the code from a C program. Type
"help ldl" in MATLAB for information on how to use LDL in a MATLAB program.
