Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Tree [c5968d] 2012-02-23 /
History



File Date Author Commit
LAPACK 2012-02-24 Raymond Toy Raymond Toy [aa6223] Revert change to LDFLAGS.
bin 2009-09-01 Raymond Toy Raymond Toy [3fc88b] Ignore sse2f.
dfftpack 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
lib 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
lib-src 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
src 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
.gitignore 2011-03-04 Raymond Toy Raymond Toy [ac01ce] Ignore *~.
AUTHORS 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
COPYING 2011-01-25 Raymond Toy Raymond Toy [f32b09] Merge changes from automake-snapshot-2011-01-25...
COPYRIGHT 2000-04-13 simsek simsek [9894bf] This is the Matlisp copyright.
ChangeLog 2011-01-25 Raymond Toy Raymond Toy [f32b09] Merge changes from automake-snapshot-2011-01-25...
HOWTO 2000-07-11 simsek simsek [e36834] *** empty log message ***
INSTALL 2011-03-02 Raymond Toy Raymond Toy [b5b63a] Fix instructions. autoreconf before cd build.
ISSUES 2011-04-21 Raymond Toy Raymond Toy [e30fc3] Note build issue on OSX 10.6 and m4.
Makefile 2001-04-25 Raymond Toy Raymond Toy [b97d10] Don't remove config.status and config.log for m...
Makefile.am 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
NEWS 2011-02-18 Raymond Toy Raymond Toy [c2b87b] Add GELSY. From Evan Monroig, with permission.
README 2000-07-11 simsek simsek [b72e6a] *** empty log message ***
blas.system 2000-06-19 Raymond Toy Raymond Toy [299981] Simple defsystem for blas.
config.guess 2005-06-19 Raymond Toy Raymond Toy [70b149] I don't really remember, but I think this is an...
config.lisp 2003-06-27 Raymond Toy Raymond Toy [452c78] The package is COMMON-LISP-USER, not USER.
config.lisp.in 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
config.sub 2005-06-19 Raymond Toy Raymond Toy [70b149] I don't really remember, but I think this is an...
configure 2012-02-24 Raymond Toy Raymond Toy [c5968d] Regenerated.
configure.ac 2012-02-24 Raymond Toy Raymond Toy [1ae646] Update version.
defsystem.lisp 2006-06-01 Raymond Toy Raymond Toy [2ccb1f] Update to latest version in clocc. Builds ok w...
dfftpack.system 2000-06-19 Raymond Toy Raymond Toy [f460ba] Simple defsystem for FFTPACK..
fortran.system 2000-06-19 Raymond Toy Raymond Toy [3d34c8] Simple defsystem for all of the Fortran code in...
install-sh 2000-04-13 simsek simsek [ddaad2] A script used by 'configure'
lapack.system 2000-06-19 Raymond Toy Raymond Toy [42335f] Simple defsystem for LAPACK.
matlisp.asd 2012-02-21 Raymond Toy Raymond Toy [578bb6] Merge branch 'master' of ssh://matlisp.git.sour...
matlisp.mk.in 2011-01-16 Raymond Toy Raymond Toy [da2dbf] configure.in:
packages.lisp 2012-02-24 Akshay Srinivasan Akshay Srinivasan [f9e3bd] Merge branch 'matlisp-cffi' into local-cffi
purgargs.awk 2000-07-11 simsek simsek [56fba8] o Initial revision
save.lisp 2011-02-18 Raymond Toy Raymond Toy [2cabcf] Make save-matlisp-library work again with asdf.
start.lisp 2012-02-21 Raymond Toy Raymond Toy [578bb6] Merge branch 'master' of ssh://matlisp.git.sour...
start.lisp.in 2012-02-21 Raymond Toy Raymond Toy [578bb6] Merge branch 'master' of ssh://matlisp.git.sour...
system.dcl 2011-02-18 Raymond Toy Raymond Toy [cf61f4] Rearrange order of defsystems to separate out f...

Read Me

MatLisp - a Matrix package for CMU Lisp


What is MatLisp?
----------------

MatLisp is a set of CLOS classes for handling matrices with
real-valued or complex-valued elements.  The classes allow a simple
and consistent interface to matrix operations such as add, subtrace,
multiple, and divide. 

However, a implementation of the matrix operations entirely in Lisp
could have been done, but such an approach completely ignores the
excellent packages available for matrices.  In particular, LAPACK is
used to handle the matrix operations.

Thus, MatLisp supplies a set of wrapper classes and functions around
the core LAPACK routines.  


Why MatLisp?
------------

While MatLisp essentially supplies a wrapper around the LAPACK
routines, it is more than that.  You have at your disposable the
complete Lisp language and CLOS.  

This allows you to write clean, object-oriented code that can utilize
the LAPACK matrix routines.  Thus, you can think about your problem in
the natural way instead of trying to force-fit your problem in
matrices, like some other packages do.

What About Matlab, Rlab, Octave, etc?
-------------------------------------

While all of these are good at what they do, they all have a
fundamental limitation:  Everything is a matrix.  You have no
alternative.  Either you make your problem fit into a matrix, or you
can't use these languages.  The exception is Rlab, which does have
simple lists in addition to matrices.  However, that's as far as it goes.

MatLisp frees you from this limitation---you have at your disposal,
the complete functionality of Common Lisp, including structures, hash
tables, lists, arrays, and the Common Lisp Object System (CLOS).
MatLisp adds to this richness by giving you a matrix fast class based
on the well-known and well-tested LAPACK library.

Thus, you can think about your problem in the most natural way,
without having to force everything into a matrix.  If the natural way,
you can then use a matrix, and achieve performance close to Matlab and
the other languages.


How to Install
--------------
See the file INSTALL.

How to Use
----------

This is very short.  Here is a list of available routines

make-float-matrix
	create a float matrix
    (make-float-matrix n m)
	creates an n x m matrix initialize to zero.
    (make-float-matrix #2a(...))
	creates a matrix with the same dimensions as the array and
	initializes the matrix with those elements.
    (make-float-matrix '((...) (...) ...))
	creats a matrix of the appropriate dimensions and initializes
	it to the elements in the list.

make-complex-matrix
	create a complex matrix
    (make-complex-matrix n m)
	creates an n x m matrix initialize to zero.
    (make-complex-matrix #2a(...))
	creates a matrix with the same dimensions as the array and
	initializes the matrix with those elements.
    (make-complex-matrix '((...) (...) ...))
	creats a matrix of the appropriate dimensions and initializes
	it to the elements in the list.


[]
	create a float or complex matrix
    [1 2 ; 3 4]
	creates a 2x2 matrix
    [[1 3]' [2 4]']
        creates the same 2x2 matrix
    [[1 2] ; [3 4]]
   	creates the same 2x2 matrix

matrix-ref
	access the elements of the matrix.  Indices are 0-based.
    (matrix-ref mat r)
	access the array as if it were really 1-dimensional.  Matrix
	is stored in column-major order.
    (matrix-ref mat r c)
	access element r,c
    (matrix-ref mat ridx)
	if ridx is a matrix or a sequence, ridx is used as the indices
	to extract the corresponding elements from the matrix.

m+
	add two matrices

m-
	subtract two matrices.  If only one matrix is given, return
	the negative of the matrix.

m*
	multiply two matrices

m/
	divide two matrices.  (m/ a b) means the same as inv(B)*A.
	(m/ a) is the same as inv(A).