Skip to content

Commit

Permalink
New repository for release on Github.
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas M. Hermann committed Mar 28, 2011
0 parents commit 0c4c7c9
Show file tree
Hide file tree
Showing 67 changed files with 39,738 additions and 0 deletions.
145 changes: 145 additions & 0 deletions Makefile
@@ -0,0 +1,145 @@
# Commands
TANGLE = /usr/local/bin/notangle
WEAVE = /usr/local/bin/noweave -delay
CPIF = /usr/local/bin/cpif

# Noweb source documents
LINEAR-ALGEBRA-SRC = noweb/linear-algebra.noweb
LINEAR-ALGEBRA-TEST-SRC = noweb/linear-algebra-test.noweb

# Common Lisp files
LINEAR-ALGEBRA += lisp/linear-algebra.asd
LINEAR-ALGEBRA += lisp/defpackage.lisp
LINEAR-ALGEBRA += lisp/auxiliary.lisp
LINEAR-ALGEBRA += lisp/fundamental-ops.lisp
LINEAR-ALGEBRA += lisp/vector.lisp
LINEAR-ALGEBRA += lisp/data-vector.lisp
LINEAR-ALGEBRA += lisp/matrix.lisp
LINEAR-ALGEBRA += lisp/identity-matrix.lisp
LINEAR-ALGEBRA += lisp/permutation-matrix.lisp
LINEAR-ALGEBRA += lisp/dense-matrix.lisp
LINEAR-ALGEBRA += lisp/square-matrix.lisp
LINEAR-ALGEBRA += lisp/hermitian-matrix.lisp
LINEAR-ALGEBRA += lisp/symmetric-matrix.lisp
LINEAR-ALGEBRA += lisp/triangular-matrix.lisp

# Unit test files
LINEAR-ALGEBRA-TEST += test/linear-algebra-test.asd
LINEAR-ALGEBRA-TEST += test/defpackage.lisp
LINEAR-ALGEBRA-TEST += test/vector.lisp
LINEAR-ALGEBRA-TEST += test/data-vector.lisp
LINEAR-ALGEBRA-TEST += test/matrix.lisp
LINEAR-ALGEBRA-TEST += test/identity-matrix.lisp
LINEAR-ALGEBRA-TEST += test/permutation-matrix.lisp
LINEAR-ALGEBRA-TEST += test/dense-matrix.lisp
LINEAR-ALGEBRA-TEST += test/square-matrix.lisp
LINEAR-ALGEBRA-TEST += test/hermitian-matrix.lisp
LINEAR-ALGEBRA-TEST += test/symmetric-matrix.lisp
LINEAR-ALGEBRA-TEST += test/triangular-matrix.lisp
LINEAR-ALGEBRA-TEST += test/auxiliary.lisp

# Documentation files
DOCUMENTATION-FILES += documentation/linear-algebra.tex
DOCUMENTATION-FILES += documentation/linear-algebra-test.tex

# Rules
default: linear-algebra

all: linear-algebra linear-algebra-test documentation

documentation: $(DOCUMENTATION-FILES)

linear-algebra: $(LINEAR-ALGEBRA)

linear-algebra-test: $(LINEAR-ALGEBRA-TEST)

# Documentation rules

# Linear algebra rules
documentation/linear-algebra.tex: $(LINEAR-ALGEBRA-SRC)
$(WEAVE) $(LINEAR-ALGEBRA-SRC) | $(CPIF) $@

lisp/linear-algebra.asd: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rlinear-algebra.asd $(LINEAR-ALGEBRA-SRC) > $@

lisp/defpackage.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rdefpackage.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/auxiliary.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rauxiliary.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/fundamental-ops.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rfundamental-ops.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/vector.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rvector.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/data-vector.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rdata-vector.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rmatrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/identity-matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Ridentity-matrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/permutation-matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rpermutation-matrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/dense-matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rdense-matrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/square-matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rsquare-matrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/hermitian-matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rhermitian-matrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/symmetric-matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rsymmetric-matrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

lisp/triangular-matrix.lisp: $(LINEAR-ALGEBRA-SRC)
$(TANGLE) -Rtriangular-matrix.lisp $(LINEAR-ALGEBRA-SRC) > $@

# Unit test rules
documentation/linear-algebra-test.tex: $(LINEAR-ALGEBRA-TEST-SRC)
$(WEAVE) $(LINEAR-ALGEBRA-TEST-SRC) | $(CPIF) $@

test/linear-algebra-test.asd: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rlinear-algebra-test.asd $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/defpackage.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rdefpackage.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/vector.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rvector.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/data-vector.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rdata-vector.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rmatrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/identity-matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Ridentity-matrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/permutation-matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rpermutation-matrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/dense-matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rdense-matrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/square-matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rsquare-matrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/hermitian-matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rhermitian-matrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/symmetric-matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rsymmetric-matrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/triangular-matrix.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rtriangular-matrix.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@

test/auxiliary.lisp: $(LINEAR-ALGEBRA-TEST-SRC)
$(TANGLE) -Rauxiliary.lisp $(LINEAR-ALGEBRA-TEST-SRC) > $@
6 changes: 6 additions & 0 deletions README
@@ -0,0 +1,6 @@
linear-algebra

linear-algebra is a Common Lisp library of numeric linear algebra routines.
It approximates the functionality present in the Basic Linear Algebra
Subroutines (BLAS) Fortran library. The objective of this project is to
generate linear algebra routines in native ANSI Common Lisp.
49 changes: 49 additions & 0 deletions documentation/Makefile
@@ -0,0 +1,49 @@
#
BIBTEX = /usr/bin/bibtex
MAKEINDEX = /usr/bin/makeindex
PDFLATEX = /usr/bin/pdflatex -shell-escape
ASPELL = /usr/bin/aspell --mode=tex check

default: linear-algebra.pdf

all: linear-algebra.pdf linear-algebra-test.pdf

# linear-algebra
linear-algebra.pdf: linear-algebra.tex bibliography.bib
$(PDFLATEX) linear-algebra && \
$(BIBTEX) linear-algebra && \
$(MAKEINDEX) -s nomencl.ist -o linear-algebra.gls linear-algebra.glo && \
$(PDFLATEX) linear-algebra && \
$(PDFLATEX) linear-algebra && \
$(PDFLATEX) linear-algebra

# linear-algebra-test
linear-algebra-test.pdf: linear-algebra-test.tex bibliography.bib
$(PDFLATEX) linear-algebra-test && \
$(BIBTEX) linear-algebra-test && \
$(MAKEINDEX) -s nomencl.ist -o linear-algebra-test.gls linear-algebra-test.glo && \
$(PDFLATEX) linear-algebra-test && \
$(PDFLATEX) linear-algebra-test && \
$(PDFLATEX) linear-algebra-test

#
.PHONY: clean clobber spell-check spell-check-linear-algebra-test

spell-check:
$(ASPELL) linear-algebra.tex

spell-check-linear-algebra-test:
$(ASPELL) linear-algebra-test.tex

clean:
-rm *.aux
-rm *.glo
-rm *.gls
-rm *.ilg
-rm *.log
-rm *.bbl
-rm *.blg

clobber:
-rm linear-algebra.pdf
-rm linear-algebra-test.pdf
175 changes: 175 additions & 0 deletions documentation/bibliography.bib
@@ -0,0 +1,175 @@

@Article{blast-update,
author = {L. S. Blackford and J. Demmel and J. Dongarra and
I. Duff and S. Hammarling and G. Henry and M. Heroux
and L. Kaufman and A. Lumsdaine and A. Petitet and
R. Pozo and K. Remington and R. C. Whaley},
title = {An updated set of basic linear algebra subprograms
(BLAS)},
journal = {ACM Trans. Math. Softw.},
volume = 28,
number = 2,
year = 2002,
issn = {0098-3500},
pages = {135--151},
doi = {http://doi.acm.org/10.1145/567806.567807},
publisher = {ACM},
address = {New York, NY, USA},
}

@Article{blast-report,
author = {S. Blackford and G. Corliss and J. Demmel and
J. Dongarra and I. Duff and G. Hammarling and
G. Henry and M. Heroux and C. Hu and W. Kahan and
L. Kaufmann and B. Kearfott and F. Krogh and X. Li
and X. Maany and A. Petitet and R. Pozo and
K. Remington and W. Walster and C. Whaley and
V. Wolff and J. Gudenberg and A. Lumsdaine},
title = {Basic Linear Algebra Subprograms Technical (BLAST)
Forum Standard},
journal = {International Journal of High Performance
Applications and Supercomputing},
year = 2002,
volume = 16,
number = 1
}

@Book{linear-algebra,
author = {James W. Demmel},
title = {Applied Numerical Linear Algebra},
publisher = {Society for Industrial and Applied Mathematics},
year = 1997
}

@Book{NumAlgoC,
author = {Gisela Engeln-M\"{u}llges and Frank Uhlig},
title = {Numerical Algorithms with C},
publisher = {Springer},
year = 1996
}

@Book{lapack,
author = {E. Anderson and Z. Bai and C. Bischof and
S. Blackford and J. Demmel and J. Dongarra and J. Du
Croz and A. Greenbaum and S. Hammarling and
A. McKenney and D. Sorensen},
title = {LAPACK Users' Guide},
publisher = {Society for Industrial and Applied Mathematics},
year = 1999,
series = {Software, environments, tools},
edition = {3rd}
}

@Article{blas:1,
author = {C. L. Lawson and R. J. Hanson and D. R. Kincaid and
F. T. Krogh},
title = {Basic Linear Algebra Subprograms for Fortran Usage},
journal = {ACM Trans. Math. Softw.},
volume = 5,
number = 3,
year = 1979,
issn = {0098-3500},
pages = {308--323},
doi = {http://doi.acm.org/10.1145/355841.355847},
publisher = {ACM},
address = {New York, NY, USA},
}

@Article{blas:2,
author = {Jack J. Dongarra and Jeremy Du Croz and Sven
Hammarling and Richard J. Hanson},
title = {An extended set of FORTRAN basic linear algebra
subprograms},
journal = {ACM Trans. Math. Softw.},
volume = 14,
number = 1,
year = 1988,
issn = {0098-3500},
pages = {1--17},
doi = {http://doi.acm.org/10.1145/42288.42291},
publisher = {ACM},
address = {New York, NY, USA},
}

@Article{blas:3,
author = {J. J. Dongarra and Jeremy Du Croz and Sven
Hammarling and I. S. Duff},
title = {A set of level 3 basic linear algebra subprograms},
journal = {ACM Trans. Math. Softw.},
volume = 16,
number = 1,
year = 1990,
issn = {0098-3500},
pages = {1--17},
doi = {http://doi.acm.org/10.1145/77626.79170},
publisher = {ACM},
address = {New York, NY, USA},
}

@InProceedings{cl-critique,
author = {Rodney A. Brooks and Richard P. Gabriel},
title = {A critique of common LISP},
booktitle = {LFP '84: Proceedings of the 1984 ACM Symposium on
LISP and functional programming},
year = 1984,
isbn = {0-89791-142-3},
pages = {1--8},
location = {Austin, Texas, United States},
doi = {http://doi.acm.org/10.1145/800055.802016},
publisher = {ACM},
address = {New York, NY, USA},
}

@Article{cl-float,
author = {Richard J. Fateman and Kevin A. Broughan and Diane
K. Willcock and Duane Rettig},
title = {Fast floating-point processing in Common Lisp},
journal = {ACM Trans. Math. Softw.},
volume = 21,
number = 1,
year = 1995,
issn = {0098-3500},
pages = {26--62},
doi = {http://doi.acm.org/10.1145/200979.200989},
publisher = {ACM},
address = {New York, NY, USA},
}

@InProceedings{lisp-evolution,
author = {Guy L. Steele and Richard P. Gabriel},
title = {The evolution of Lisp},
booktitle = {History of programming languages---II},
year = 1996,
isbn = {0-201-89502-1},
pages = {233--330},
doi = {http://doi.acm.org/10.1145/234286.1057818},
publisher = {ACM},
address = {New York, NY, USA},
}

@Book{CLTL1,
author = {Guy Steele},
title = {Common Lisp: The Language},
year = 1984,
isbn = {093237641-X},
publisher = {Digital Press},
address = {Newton, MA, USA},
}

@TechReport{CMUCL,
author = {Robert A. MacLachlan},
title = {CMU Common Lisp User''s Manual},
year = 1992,
institution = {Carnegie Mellon University},
address = {Pittsburgh, PA, USA},
}

@TechReport{lawn148,
author = {D. Bindel and J. Demmel and W. Kahan and O. Marques},
title = {On computing Givens rotations reliably and efficiently},
institution = {University of Tennessee},
year = 2001,
type = {LAPACK Working Note 148},
number = {UT-CS-00-449},
month = {January 31}
}
12 changes: 12 additions & 0 deletions documentation/linear-algebra-test.tcp
@@ -0,0 +1,12 @@
[FormatInfo]
Type=TeXnicCenterProjectInformation
Version=4

[ProjectInfo]
MainFile=linear-algebra-test.tex
UseBibTeX=1
UseMakeIndex=1
ActiveProfile=LaTeX => PDF
ProjectLanguage=en
ProjectDialect=US

0 comments on commit 0c4c7c9

Please sign in to comment.