diff --git a/documentation/index.html b/documentation/index.html index 91ee75239411d868ce5a7be5f8ed9afe79f5b1de..d8816fc405890f084033405e7a543d6bce85c9b7 100644 --- a/documentation/index.html +++ b/documentation/index.html @@ -28,19 +28,18 @@ getting quick answers, even for someone not intending to program in Lisp. </p> - <p>Topics include: - roots of polynomials, special functions, vectors and matrices, - permutations, sorting, BLAS support, linear algebra, - eigensystems, fast Fourier transforms, - quadrature, random numbers, quasi-random sequences, - random distributions, statistics, histograms, N-tuples, - Monte Carlo integration, simulated annealing, differential - equations, interpolation, numerical differentiation, - Chebyshev approximation, series acceleration, - discrete Hankel transforms, root-finding, minimization - least-squares fitting, IEEE floating-point, - discrete wavelet transforms. See documentation on status of - some incomplete topics. + <p>Topics include: roots of polynomials, special functions, + vectors and matrices, permutations, sorting, BLAS (basic + linear algebra subprograms), linear algebra, eigensystems, + fast Fourier transforms, quadrature, random numbers, + quasi-random sequences, random distributions, statistics, + histograms, N-tuples, Monte Carlo integration, simulated + annealing, differential equations, interpolation, numerical + differentiation, Chebyshev approximation, series acceleration, + discrete Hankel transforms, root-finding, minimization + least-squares fitting, IEEE floating-point, discrete wavelet + transforms. See documentation on status of some incomplete + topics. <p>This code should be considered alpha and is still under development, but it is largely usable now, with some GSL capability not yet available.</p> @@ -70,7 +69,7 @@ <pre> (jacobian-elliptic-functions 0.61802d0 1.5d0) Input domain error |m| > 1.0 in elljac.c at line 46 - [Condition of type EDOM] + [Condition of type INPUT-DOMAIN] </pre> </div> @@ -122,9 +121,7 @@ Input domain error |m| > 1.0 in elljac.c at line 46 <li>A <a href="documentation.html">documentation</a> guide is available. <li>The <a href="development.html">development</a> process is described - separately for those interested, and a <a - href="http://trac.common-lisp.net/gsll">Trac page</a> is used to - track it and for bug reports (file a "New Ticket"). + separately for those interested. <li>There is a <a href="http://common-lisp.net/cgi-bin/mailman/listinfo/gsll-devel">mailing list</a> for all aspects of this project. @@ -146,7 +143,7 @@ Input domain error |m| > 1.0 in elljac.c at line 46 <!-- Created: Feb 25 2005 --> <!-- hhmts start --> <small> - Time-stamp: <2008-11-15 21:51:03EST index.html> + Time-stamp: <2008-11-16 15:35:22EST index.html> </small> <!-- hhmts end --> </div> diff --git a/documentation/readme.html b/documentation/readme.html new file mode 100644 index 0000000000000000000000000000000000000000..8e5bc7be2700b9a45eb6922127f7e8eaf25b2c0b --- /dev/null +++ b/documentation/readme.html @@ -0,0 +1,30 @@ +<!-- -*- mode: HTML; time-stamp-line-limit: -18; -*- --> + <p>The GNU Scientific Library for Lisp (GSLL) allows you to use + the <a href="http://www.gnu.org/software/gsl/">GNU Scientific + Library (GSL)</a> from Common Lisp. This library provides a + full range of common mathematical operations useful to + scientific and engineering applications. The design of the GSLL + interface is such that access to most of the GSL library is + possible in a Lisp-natural way; the intent is that the user not + be hampered by the restrictions of the C language in which GSL + has been written. GSLL thus provides interactive use of GSL for + getting quick answers, even for someone not intending + to program in Lisp. + </p> + <p>Topics include: roots of polynomials, special functions, + vectors and matrices, permutations, sorting, BLAS (basic + linear algebra subprograms), linear algebra, eigensystems, + fast Fourier transforms, quadrature, random numbers, + quasi-random sequences, random distributions, statistics, + histograms, N-tuples, Monte Carlo integration, simulated + annealing, differential equations, interpolation, numerical + differentiation, Chebyshev approximation, series acceleration, + discrete Hankel transforms, root-finding, minimization + least-squares fitting, IEEE floating-point, discrete wavelet + transforms. See documentation on status of some incomplete + topics.</p> + +<!- --> +<!-- Liam Healy 2008-11-16 15:08:08EST readme.html --> +<!-- Time-stamp: <2008-11-16 15:11:33EST readme.html> --> +<!-- $Id: $ --> diff --git a/init/analysis.lisp b/init/analysis.lisp new file mode 100644 index 0000000000000000000000000000000000000000..d8cbe91da1fadf1479a366ce2d42a29fe6571a40 --- /dev/null +++ b/init/analysis.lisp @@ -0,0 +1,68 @@ +;; Analysis of interface status +;; Liam Healy 2008-11-16 16:17:14EST analysis.lisp +;; Time-stamp: <2008-11-16 17:21:10EST analysis.lisp> +;; $Id: $ + +;;; These definitions are to monitor the status of the GSLL interface +;;; with respect to the GSL library for the purpose of directing +;;; development of GSLL. Therefore, they are not loaded in the +;;; system. They require the port system. + +(in-package :gsl) + +(defparameter *gsl-library-path* + (namestring + (cffi::foreign-library-handle (cffi::get-foreign-library 'cl-user::libgsl)))) + +(defparameter *gsl-library-symbols* + (with-open-stream + (instream + (port:pipe-input ; linux commands + "/usr/bin/nm" "-D" "--defined-only" "-g" *gsl-library-path*)) + (loop for symbol = (read-line instream nil nil) + while symbol + collect (subseq symbol 19))) + "All the external symbols in the GSL library.") + +(defun in-gsl (string) + "The symbol occurs in the GSL library." + (find string *gsl-library-symbols* :test 'string-equal)) + +(defparameter *gsll-defined-symbols* + (loop for gslsymb being the hash-key of *gsl-symbol-equivalence* collect gslsymb) + "All the exported definitions in GSLL.") + +(defun name-special-function-no-error (string) + "Names a function for a special function that does not return an error estimate." + (and (search "gsl_sf_" string :test 'string-equal) + (not (string-equal (subseq string (- (length string) 2)) "_e")) + (in-gsl (concatenate 'string string "_e")))) + +(defun defined-without-strings (defined-list &rest strings) + "A list of definitions in GSL where none of the given strings occurs." + (loop for string in strings + for from = defined-list then list + for list = (remove-if (lambda (x) (search string x :test 'string-equal)) from) + finally (return list))) + +(defun gsll-defined-with-string (string) + "A list of definitions in GSLL where the given strings occurs." + (remove-if-not + (lambda (x) (search string x :test 'string-equal)) + *gsll-defined-symbols*)) + +;;; Step through the list of GSL definitions, removing those things +;;; we're not going to port. + +(defparameter *target-port-1* + (defined-without-strings *gsl-library-symbols* "fscan" "fread" "print" "view")) + +(defparameter *target-port-2* + (remove-if 'name-special-function-no-error *target-port-1*)) + +;;; Step through the list of GSLL definitions, removing those things +;;; that we're not advertising we've ported, but did port anyway for +;;; internal use or for whatever reason. + +(defparameter *have-port-1* + (defined-without-strings *gsll-defined-symbols* "fscan" "fread" "print" "view")) diff --git a/init/interface.lisp b/init/interface.lisp index 54bd2cd0108c0f268632c60a2b0439e7ede7ad83..ef5a103decbe628ba25369e510622a6b0a6ee7c0 100644 --- a/init/interface.lisp +++ b/init/interface.lisp @@ -1,6 +1,6 @@ ;; Macros to interface GSL functions, including definitions necessary for defmfun. ;; Liam Healy -;; Time-stamp: <2008-08-07 20:53:59EDT interface.lisp> +;; Time-stamp: <2008-11-16 18:57:24EST interface.lisp> ;; $Id$ (in-package :gsl) @@ -12,7 +12,7 @@ ;;;;**************************************************************************** (defparameter *gsl-symbol-equivalence* - (make-hash-table :test 'equal :size 1500)) + (make-hash-table :test 'equal :size 2000)) (defun map-name (cl-name gsl-name) ;; Trust here that the library does not have two symbols that differ