LDL Version 1.0: 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 built-in sparse Cholesky factorization in MATLAB 6.5 (chol), when using the same input permutation. 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 non-essential 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.0 (Dec. 31, 2003), Copyright (c) 2003 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 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 or copy this program, 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 LDL or any modified version of LDL 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. This software was developed with support from the National Science Foundation, and is provided to you free of charge. Availability: http://www.cise.ufl.edu/research/sparse/ldl Acknowledgements: This work was supported by the National Science Foundation, under grant DMS-0203270. 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. -------------------------------------------------------------------------------- Files and directories in this distribution: -------------------------------------------------------------------------------- Documentation, and compiling: README this file Makefile for compiling LDL The LDL library itself: ldl.c the C-callable 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 stand-alone 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 stand-alone 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) MATLAB-related, not required for use in a regular C program Contents.m a list of the MATLAB-callable 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 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.