Tree [d5078d] R_2_0_beta-2003-10-14 /
 History



File Date Author Commit
 LAPACK 2001-03-08 Raymond Toy Raymond Toy [cf5aed] Upgrade to LAPACK 3.0, May 31, 2000.
 bin 2003-02-14 Raymond Toy Raymond Toy [939c1b] Ignore compiled fasl files.
 dfftpack 2000-05-05 simsek simsek [0d562c] o DFFTPACK Fortran source code
 lib 2003-02-04 Raymond Toy Raymond Toy [867e42] Add dgetrs and zgetrs. Needed when building wi...
 lib-src 2003-05-31 Raymond Toy Raymond Toy [209972] Plain old ftruncate is the right function to use.
 src 2003-10-11 Raymond Toy Raymond Toy [d5078d] MATRIX-REF-1D and MATRIX-REF-2D methods for COM...
 COPYRIGHT 2000-04-13 simsek simsek [9894bf] This is the Matlisp copyright.
 HOWTO 2000-07-11 simsek simsek [e36834] *** empty log message ***
 INSTALL 2001-03-19 Raymond Toy Raymond Toy [9a3a1f] Add comment about using ATLAS.
 ISSUES 2001-03-07 Raymond Toy Raymond Toy [e6b95d] Initial version.
 Makefile 2001-04-25 Raymond Toy Raymond Toy [b97d10] Don't remove config.status and config.log for m...
 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 2000-04-13 simsek simsek [6aafe0] Useful scripts for determining machine parameters.
 config.lisp 2003-06-27 Raymond Toy Raymond Toy [452c78] The package is COMMON-LISP-USER, not USER.
 config.sub 2000-04-13 simsek simsek [6aafe0] Useful scripts for determining machine parameters.
 configure 2003-06-01 Raymond Toy Raymond Toy [de24a7] Regenerated.
 configure.in 2001-10-26 Raymond Toy Raymond Toy [cdf8c5] ACL doesn't want the trailing underscore added ...
 defsystem.lisp 2003-10-11 Raymond Toy Raymond Toy [dda3dc] Update to a new release of defsystem from clocc...
 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...
 gpl.txt 2000-04-13 simsek simsek [6e3068] This is GPL that needs to be distributed with '...
 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.mk.in 2001-10-29 Raymond Toy Raymond Toy [3ce226] Updates from M. Koerber to support QR routines ...
 packages.lisp 2003-07-25 Raymond Toy Raymond Toy [91cd4b] Use PCL:FIND-CLASS for CMUCL so all versions of...
 purgargs.awk 2000-07-11 simsek simsek [56fba8] o Initial revision
 save.lisp 2002-01-08 Raymond Toy Raymond Toy [13a9c7] Add SAVE-MATLISP-LIBRARY to concatenate all the...
 start.lisp 2003-06-27 Raymond Toy Raymond Toy [bad79c] Clean up logical pathname translations for CMUC...
 system.dcl 2003-06-01 Raymond Toy Raymond Toy [68c44f] Add conditions.lisp to dependencies.

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).

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks