;;; Lisplab, package.lisp ;;; Package definitions ;;; Copyright (C) 2009 Joern Inge Vestgaarden ;;; ;;; This program is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 2 of the License, or ;;; (at your option) any later version. ;;; ;;; This program is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License along ;;; with this program; if not, write to the Free Software Foundation, Inc., ;;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ;;; It could be possible to split the big Lisplab package ;;; in smaller packages as indicated by the comments, but ;;; this would be more work and I see litle gain from it. ;;; As it is now, the asdf system tells the dependencies, not ;;; the pacakges. Think its OK. (defpackage "FORTRAN-FFI-ACCESSORS" (:use "COMMON-LISP" "SB-ALIEN" "SB-C") (:export "DEF-FORTRAN-ROUTINE" "VECTOR-DATA-ADDRESS" "INCF-SAP" "WITH-VECTOR-DATA-ADDRESSES") (:documentation "Fortran foreign function interface")) (defpackage "LISPLAB" (:use "COMMON-LISP" "COMMON-LISP-USER") (:nicknames "LL") (:documentation "Lisplab is mathematics library released under the GNU General Public License (GPL). Lisplab contains mathematical functions, matrices, linear algebra, Fast Fourier Transform, diff-solvers, and a lot more. Lisplab provides high level interfaces to BLAS, LAPACK and FFTW.") (:export "LISPLAB-VERSION" "LISPLAB-SVN-VERSION" ;; Utilities "IN-DIR" "STRCAT" "INIT-THREADS" "CLEANUP-THREADS" ;; Infix notation "*SEPARATORS*" "W/INFIX" "INFIX->PREFIX" "PREFIX->INFIX" ;; Numerical constants "%I" "%E" "-%I" ;; Some general methods "COPY" "CONVERT" "VECTOR-P" "MATRIX-P" ;; Basic methods (The dotted algebra) ".+" ".*" "./" ".-" ".^" "^" ".MAX" ".MIN" ".ABS" ".SGN" ".IM" ".RE" ".CONJ" ".COMPLEX" ".=" "./=" ".<" ".<=" ".>" ".>=" ".ADD" ".MUL" ".DIV" ".SUB" ".EXPT" ;; Elementary functions ".SIN" ".COS" ".TAN" ".ASIN" ".ACOS" ".ATAN" ".SINH" ".COSH" ".TANH" ".ASINH" ".ACOSH" ".ATANH" ".LOG" ".LN" ".EXP" ".SQR" ".SQRT" ;; Special functions ".AI" ".BESJ" ".BESY" ".BESI" ".BESK" ".BESH1" ".BESH2" ".ERF" ".ERFC" ".GAMMA" ;; Now the matrix stuff ;; Matrix classes "MATRIX-BASE" "MATRIX-GE" "MATRIX-DGE" "MATRIX-ZGE" "MATRIX-DGT" "MATRIX-DDI" "FUNCTION-MATRIX" "MATRIX-SPARSE" "*LISPLAB-PRINT-SIZE*" ;; Matrix level 1 methods "MAKE-MATRIX-INSTANCE" "MREF" "VREF" "DIM" "ELEMENT-TYPE" "SIZE" "RANK" "ROWS" "COLS" ;; Matrix level 2 constructors "MNEW" "MMAT" "MCOL" "MROW" "DMAT" "DNEW" "DCOL" "DROW" "DRANDOM" "DRANGE" "DGRID" "ZMAT" "ZNEW" "ZCOL" "ZROW" "FUNMAT" "FMAT" ;; Matrix level 2 methods ".EVERY"; to level0 or change name? ".SOME" ; to level0 or change name? "SQUARE-MATRIX?" "MCREATE" "MCREATE*" "COPY-CONTENTS" "EXPORT-LIST" "IMPORT-LIST" "MMAP" "MMAP-INTO" "MFILL" "TO-VECTOR" "TO-MATRIX" "RESHAPE" "GET-ROW" "GET-COL" "VIEW-ROW" "VIEW-COL" "VIEW-MATRIX" "VIEW-TRANSPOSE" "MSUM" "MMIN" "MMAX" "MABSMIN" "MABSMAX" "MMINMAX" "ROW-SWAP!" "ROW-MUL!" "ROW-ADD!" "SUB-MATRIX" ; To level3 ? "CIRC-SHIFT" "PAD-SHIFT" "MREVERSE" "VDOT" "VNORM" "VCROSS" ;; Matrix level 3 ;; IO "PGMWRITE" "PSWRITE" "DLMREAD" "DLMWRITE" "MSAVE" "MLOAD" ;; ODE solvers "EULER" ; todo change name "RK4" ; todo change name ;; Linear algebra "MTP" "MCT" "MTR" "MDET" "MINV" "M*" "M/" "LU-FACTOR" "LIN-SOLVE" "EIGENVALUES" "EIGENVECTORS" ;; FFT "FFT1" "IFFT1" "FFT2" "IFFT2" "FFT-SHIFT" "IFFT-SHIFT" ;; Quadpack "INTEGRATE-QNG" "INTEGRATE-QAG" "INTEGRATE-QAGS" "INTEGRATE-QAGI" "INTEGRATE-QAWS" "INTEGRATE-QAWC" )) (defpackage "LISPLAB-USER" (:use "COMMON-LISP" "COMMON-LISP-USER" "LISPLAB" "SB-EXT") (:nicknames "LL-USER"))