|
From: Akshay S. <ak...@us...> - 2012-07-04 11:17:54
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "matlisp".
The branch, tensor has been updated
via a005336f729ed3ce87bb327a6fa6441612fa20f9 (commit)
from d8e8b94a89920c6c741031b0a525fec2c62a9d2d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a005336f729ed3ce87bb327a6fa6441612fa20f9
Author: Akshay Srinivasan <aks...@gm...>
Date: Wed Jul 4 16:43:19 2012 +0530
Moved README to an org-file
diff --git a/README.org b/README.org
new file mode 100644
index 0000000..2120bb9
--- /dev/null
+++ b/README.org
@@ -0,0 +1,135 @@
+MatLisp - a base for scientific computation in Lisp
+
+* What is MatLisp?
+
+MatLisp is a set of CLOS classes for handling multidimensional
+arrays with real-valued or complex-valued elements.
+
+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 natura
+l 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.
+
+* Usage
+
+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).
+
+
+* TODO
+** Python-bridge
+ (C)Python has far too many things, that we cannot even begin to hope to replicate.
+ Burgled-batteries has a lot of things which could be useful in talking to CPython.
+
+ Getting standard-tensor <-> numpy tranlation should be enough. Mostly care about
+ matplotlib at the moment.
+
+** Add infix to Matlisp
+ Added Mark Kantrowicz' infix package into lib-src. Should be straight forward to use it,
+ although changes are not strictly local.
+
+** Support linking to libraries ?
+ Might have to parse header files with cffi-grovel.
+
+** Documentation, tests
+ Write documentation.
+ Fix the formatting for docstrings. Maybe move to TeXinfo (like femlisp).
+
+** Write tests
+ Use cl-rt stuff to write more tests. Probably even add benchmarks.
-----------------------------------------------------------------------
Summary of changes:
README.old => README.org | 50 ++++++++++++++++++++++++++++++---------------
1 files changed, 33 insertions(+), 17 deletions(-)
copy README.old => README.org (74%)
hooks/post-receive
--
matlisp
|