Commit 35b7c5c1 authored by lhealy's avatar lhealy Committed by Liam Healy

Merge 46 and 47 from trunk into ffa branch.


git-svn-id: svn+ssh://common-lisp.net/project/gsll/svn/branches/ffa@49 af03a46b-e846-0410-96e5-d5653c316fd0
parent 0312e8fd
......@@ -69,8 +69,8 @@
so an error is signalled if this parameter is out of range: </p>
<pre>
(jacobian-elliptic-functions 0.61802d0 1.5d0)
debugger invoked on a GSL-ERROR in thread #<THREAD "initial thread" {10032258C1}>:
Input domain error (EDOM), |m| > 1.0 in elljac.c at line 46
Input domain error |m| > 1.0 in elljac.c at line 46
[Condition of type EDOM]
</pre>
</div>
......@@ -158,7 +158,7 @@ svn checkout svn://common-lisp.net/project/gsll/svn/trunk gsll
<!-- Created: Feb 25 2005 -->
<!-- hhmts start -->
<small>
Time-stamp: <2008-03-08 11:22:52EST index.html>
Time-stamp: <2008-03-27 23:08:11EDT index.html>
</small>
<!-- hhmts end -->
</div>
......
;; Updating and accessing histogram elements.
;; Liam Healy, Mon Jan 1 2007 - 14:43
;; Time-stamp: <2008-02-23 18:49:16EST updating-accessing.lisp>
;; Time-stamp: <2008-03-27 23:09:26EDT updating-accessing.lisp>
;; $Id$
(in-package :gsl)
......@@ -116,11 +116,16 @@
((first values))
((first values) (second values))))
(letm ((histo (histogram 10))) ; should be a gsl-warning here, how to check?
(set-ranges-uniform histo 0.0d0 10.0d0)
(increment histo -2.0d0))
;;; Examples and unit test
#|
(make-tests histogram
(letm ((histo (histogram 10))) ; should be a gsl-warning here, how to check?
;; The first one gives a warning while compiling in SBCL,
;; should only give a warning while runnin.
(letm ((histo (histogram 10)))
(set-ranges-uniform histo 0.0d0 10.0d0)
(increment histo -2.0d0))
(letm ((histo (histogram 10)))
......@@ -161,12 +166,11 @@
|#
(LISP-UNIT:DEFINE-TEST HISTOGRAM
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST)
(MULTIPLE-VALUE-LIST
(LETM ((HISTO (HISTOGRAM 10)))
(SET-RANGES-UNIFORM HISTO 0.0d0 10.0d0)
(INCREMENT HISTO -2.0d0))))
(LISP-UNIT:ASSERT-ERROR
'GSL-CONDITION
(LETM ((HISTO (HISTOGRAM 10)))
(SET-RANGES-UNIFORM HISTO 0.0d0 10.0d0)
(INCREMENT HISTO -2.0d0)))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 0.0d0)
(MULTIPLE-VALUE-LIST
......@@ -192,7 +196,7 @@
(INCREMENT HISTO 6.9d0 2.0d0)
(MAREF HISTO 6))))
(LISP-UNIT:ASSERT-ERROR
'GSL-ERROR
'GSL-CONDITION
(LETM ((HISTO (HISTOGRAM 10)))
(SET-RANGES-UNIFORM HISTO 0.0d0 10.0d0)
(INCREMENT HISTO 2.7d0)
......
;; GSL errors
;; Liam Healy Sat Mar 4 2006 - 18:33
;; Time-stamp: <2008-03-08 12:39:50EST conditions.lisp>
;; Time-stamp: <2008-03-27 23:07:29EDT conditions.lisp>
;; $Id$
(in-package :gsl)
(cffi:defcenum gsl-errorno
"Error codes for GSL, from /usr/include/gsl/gsl_errno.h."
(:CONTINUE -2)
:FAILURE :SUCCESS :EDOM :ERANGE :EFAULT :EINVAL :EFAILED :EFACTOR
:ESANITY :ENOMEM :EBADFUNC :ERUNAWAY :EMAXITER :EZERODIV :EBADTOL
:ETOL :EUNDRFLW :EOVRFLW :ELOSS :EROUND :EBADLEN :ENOTSQR :ESING
:EDIVERGE :EUNSUP :EUNIMPL :ECACHE :ETABLE :ENOPROG :ENOPROGJ
:ETOLF :ETOLX :ETOLG :EOF)
;;;;****************************************************************************
;;;; GSL conditions
;;;;****************************************************************************
(defparameter *gsl-error-alist*
'((-2 . "Iteration has not converged")
(-1 . "Failure")
(0 . "Success")
(1 . "Input domain error")
(2 . "Output range error")
(3 . "Invalid pointer")
(4 . "Invalid argument")
(5 . "Generic failure")
(6 . "Factorization failed")
(7 . "Sanity check failed - shouldn't happen")
(8 . "Malloc failed")
(9 . "Problem with user-supplied function")
(10 . "Iterative process is out of control")
(11 . "Exceeded max number of iterations")
(12 . "Tried to divide by zero")
(13 . "User specified an invalid tolerance")
(14 . "Failed to reach the specified tolerance")
(15 . "Underflow")
(16 . "Overflow ")
(17 . "Loss of accuracy")
(18 . "Failed because of roundoff error")
(19 . "Matrix, vector lengths are not conformant")
(20 . "Matrix not square")
(21 . "Apparent singularity detected")
(22 . "Integral or series is divergent")
(23 . "Requested feature is not supported by the hardware")
(24 . "Requested feature not (yet) implemented")
(25 . "Cache limit exceeded")
(26 . "Table limit exceeded")
(27 . "Iteration is not making progress towards solution")
(28 . "Jacobian evaluations are not improving the solution")
(29 . "Cannot reach the specified tolerance in F")
(30 . "Cannot reach the specified tolerance in X")
(31 . "Cannot reach the specified tolerance in gradient")
(32 . "End of file")))
;;; It would be nice to be able to return, or give the option to return,
;;; the portable equivalent of #.SB-EXT:DOUBLE-FLOAT-POSITIVE-INFINITY
;;; for :EOVRFLW.
(define-condition gsl-error (arithmetic-error)
((gsl-errno :initarg :gsl-errno :reader gsl-errno)
(gsl-reason :initarg :gsl-reason :reader gsl-reason)
(gsl-source-file :initform nil :initarg :gsl-source-file :reader gsl-source-file)
(gsl-line-number :initform 0 :initarg :gsl-line-number :reader gsl-line-number))
(export 'gsl-condition)
(define-condition gsl-condition (arithmetic-error warning)
((error-number :initarg :error-number :reader error-number)
(error-text :initarg :error-text :reader error-text)
(explanation :initarg :explanation :reader explanation)
(source-file :initform nil :initarg :source-file :reader source-file)
(line-number :initform 0 :initarg :line-number :reader line-number))
(:report
(lambda (condition stream)
(format stream "~a (~a), ~a ~@[in ~a at line ~d~]"
(rest (assoc (gsl-errno condition) *gsl-error-alist*))
(cffi:foreign-enum-keyword 'gsl-errorno (gsl-errno condition))
(gsl-reason condition)
(gsl-source-file condition)
(gsl-line-number condition))))
(format stream "~a ~a ~@[in ~a at line ~d~]"
(error-text condition)
(explanation condition)
(source-file condition)
(line-number condition))))
(:documentation
"An error that has been signalled by the GNU Scientific Library."))
"A condition that has been signalled by the GNU Scientific Library."))
(define-condition gsl-warning (warning)
((gsl-errno :initarg :gsl-errno :reader gsl-errno)
(gsl-context :initarg :gsl-context :reader gsl-context))
(:report
(lambda (condition stream)
(format stream "GSL condition ~a (~d), ~a in ~a"
(cffi:foreign-enum-keyword 'gsl-errorno (gsl-errno condition))
(gsl-errno condition)
(rest (assoc (gsl-errno condition) *gsl-error-alist*))
(gsl-context condition))))
(:documentation
"An warning that has been signalled by the GNU Scientific Library."))
(defparameter *errorno-keyword* nil)
(defmacro define-gsl-condition (keyword number text)
`(progn
(define-condition ,keyword (gsl-condition)
((error-number :initform ,number :reader error-number :allocation :class)
(error-text :initform ,text :reader error-text :allocation :class))
(:documentation
(format nil
"The condition ~a, ~a, signalled by the GNU Scientific Library."
',keyword ,text)))
(setf *errorno-keyword* (acons ,number ',keyword *errorno-keyword*))
(export ',keyword)))
(define-gsl-condition EDOM 1 "Input domain error")
(define-gsl-condition ERANGE 2 "Output range error")
(define-gsl-condition EFAULT 3 "Invalid pointer")
(define-gsl-condition EINVAL 4 "Invalid argument")
(define-gsl-condition EFAILED 5 "Generic failure")
(define-gsl-condition EFACTOR 6 "Factorization failed")
(define-gsl-condition ESANITY 7 "Sanity check failed - shouldn't happen")
(define-gsl-condition ENOMEM 8 "Malloc failed")
(define-gsl-condition EBADFUNC 9 "Problem with user-supplied function")
(define-gsl-condition ERUNAWAY 10 "Iterative process is out of control")
(define-gsl-condition EMAXITER 11 "Exceeded max number of iterations")
(define-gsl-condition EZERODIV 12 "Tried to divide by zero")
(define-gsl-condition EBADTOL 13 "User specified an invalid tolerance")
(define-gsl-condition ETOL 14 "Failed to reach the specified tolerance")
(define-gsl-condition EUNDRFLW 15 "Underflow")
(define-gsl-condition EOVRFLW 16 "Overflow")
(define-gsl-condition ELOSS 17 "Loss of accuracy")
(define-gsl-condition EROUND 18 "Failed because of roundoff error")
(define-gsl-condition EBADLEN 19 "Matrix, vector lengths are not conformant")
(define-gsl-condition ENOTSQR 20 "Matrix not square")
(define-gsl-condition ESING 21 "Apparent singularity detected")
(define-gsl-condition EDIVERGE 22 "Integral or series is divergent")
(define-gsl-condition EUNSUP 23 "Requested feature is not supported by the hardware")
(define-gsl-condition EUNIMPL 24 "Requested feature not (yet) implemented")
(define-gsl-condition ECACHE 25 "Cache limit exceeded")
(define-gsl-condition ETABLE 26 "Table limit exceeded")
(define-gsl-condition ENOPROG 27 "Iteration is not making progress towards solution")
(define-gsl-condition ENOPROGJ 28 "Jacobian evaluations are not improving the solution")
(define-gsl-condition ETOLF 29 "Cannot reach the specified tolerance in F")
(define-gsl-condition ETOLX 30 "Cannot reach the specified tolerance in X")
(define-gsl-condition ETOLG 31 "Cannot reach the specified tolerance in gradient")
(define-gsl-condition EOF 32 "End of file")
;;; It is possible to return +positive-infinity+
;;; by defining a handler for :EOVRFLW.
(defun lookup-condition (number)
(or (rest (assoc number *errorno-keyword*))
;; go for "Generic failure" of the code doesn't come up
'EFAILED))
(defun signal-gsl-error (number explanation &optional file line)
"Signal an error from the GSL library."
(error (lookup-condition number)
:explanation explanation
:source-file file
:line-number line))
(defun signal-gsl-warning (number explanation &optional file line)
"Signal a warning from the GSL library."
(warn (lookup-condition number)
:explanation explanation
:source-file file
:line-number line))
(cffi:defcallback gsl-error :void
((reason :string) (file :string) (line :int) (error-number :int))
(error 'gsl-error
:gsl-errno error-number
:gsl-reason reason
:gsl-source-file file
:gsl-line-number line))
(signal-gsl-error error-number reason file line))
(defun establish-handler ()
(cffi:foreign-funcall
......@@ -103,6 +109,21 @@
;;; in save-lisp-and-die.
#+sbcl (push 'establish-handler sb-ext:*init-hooks*)
;;;;****************************************************************************
;;;; Define non-error C codes
;;;;****************************************************************************
(cffi:defcenum gsl-errorno
"Error codes for GSL, from /usr/include/gsl/gsl_errno.h."
;; We really only need the first three here; the rest are handled
;; above.
(:CONTINUE -2)
:FAILURE :SUCCESS :EDOM :ERANGE :EFAULT :EINVAL :EFAILED :EFACTOR
:ESANITY :ENOMEM :EBADFUNC :ERUNAWAY :EMAXITER :EZERODIV :EBADTOL
:ETOL :EUNDRFLW :EOVRFLW :ELOSS :EROUND :EBADLEN :ENOTSQR :ESING
:EDIVERGE :EUNSUP :EUNIMPL :ECACHE :ETABLE :ENOPROG :ENOPROGJ
:ETOLF :ETOLX :ETOLG :EOF)
(defmacro gsl-errorno-sm (keyword)
`(define-symbol-macro
,(intern (symbol-name keyword) (find-package :gsl))
......
;; Macros to interface GSL functions.
;; Liam Healy
;; Time-stamp: <2008-03-15 21:51:07EDT interface.lisp>
;; Time-stamp: <2008-03-27 22:36:35EDT interface.lisp>
;; $Id$
(in-package :gsl)
......@@ -73,15 +73,12 @@
(defun check-gsl-status (status-code context)
"Check the return status code from a GSL function and signal a warning
if it is not :SUCCESS."
(unless (eql :success (cffi:foreign-enum-keyword 'gsl-errorno status-code))
(warn 'gsl-warning
:gsl-errno status-code :gsl-context context)))
(unless (eql status-code success)
(signal-gsl-warning status-code (format nil "in ~a" context))))
(defun check-null-pointer (pointer error-code reason)
(when (cffi:null-pointer-p pointer)
(error 'gsl-error
:gsl-errno (cffi:foreign-enum-value 'gsl-errorno error-code)
:gsl-reason reason)))
(signal-gsl-error error-code reason)))
(defun success-failure (value)
"If status indicates failure, return NIL, othewise return T."
......
;; BLAS level 1, Vector operations
;; Liam Healy, Wed Apr 26 2006 - 15:23
;; Time-stamp: <2008-03-09 19:35:09EDT blas1.lisp>
;; Time-stamp: <2008-03-28 10:35:04EDT blas1.lisp>
;; $Id$
(in-package :gsl)
......@@ -173,7 +173,9 @@
;;;;****************************************************************************
#|
(make-tests blas1
;;; Before expanding, set
;;; (setf *read-default-float-format* 'double-float)
(make-tests blas1-single
;; single
(letm ((a (vector-single-float #(1.0f0 2.0f0 3.0f0)))
(b (vector-single-float #(3.0f0 4.0f0 5.0f0))))
......@@ -197,8 +199,11 @@
(letm ((a (vector-single-float #(1.0f0 3.0f0)))
(b (vector-single-float #(8.0f0 9.0f0))))
(rot a b (/ (sqrt 2.0f0)) (/ (sqrt 2.0f0)))
(data b))
;; double
(data b)))
;;; Before expanding, set
;;; (setf *read-default-float-format* 'single-float)
(make-tests blas1-double
(letm ((a (vector-double-float #(1.0d0 2.0d0 3.0d0)))
(b (vector-double-float #(3.0d0 4.0d0 5.0d0))))
(dot a b))
......@@ -229,50 +234,58 @@
(b (vector-double-float #(8.0d0 9.0d0))))
(rot a b (/ (sqrt 2.0d0)) (/ (sqrt 2.0d0)))
(data b)))
|#
(LISP-UNIT:DEFINE-TEST BLAS1
(LISP-UNIT:DEFINE-TEST BLAS1-SINGLE
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 26.0)
(LIST 26.0f0)
(MULTIPLE-VALUE-LIST
(LETM ((A (VECTOR-SINGLE-FLOAT #(1.0 2.0 3.0)))
(B (VECTOR-SINGLE-FLOAT #(3.0 4.0 5.0))))
(LETM ((A (VECTOR-SINGLE-FLOAT #(1.0f0 2.0f0 3.0f0)))
(B (VECTOR-SINGLE-FLOAT #(3.0f0 4.0f0 5.0f0))))
(DOT A B))))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 7.071068)
(LIST 7.071068f0)
(MULTIPLE-VALUE-LIST
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0 4.0 5.0))))
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0f0 4.0f0 5.0f0))))
(NORM B))))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 12.0)
(LIST 12.0f0)
(MULTIPLE-VALUE-LIST
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0 4.0 5.0))))
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0f0 4.0f0 5.0f0))))
(ASUM B))))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 1)
(MULTIPLE-VALUE-LIST
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0 5.0 4.0))))
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0f0 5.0f0 4.0f0))))
(IMAX B))))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST #(5.0 8.0 11.0))
(LIST #(5.0f0 8.0f0 11.0f0))
(MULTIPLE-VALUE-LIST
(LETM ((A (VECTOR-SINGLE-FLOAT #(1.0 2.0 3.0)))
(B (VECTOR-SINGLE-FLOAT #(3.0 4.0 5.0))))
(SETF (DATA A) #(1.0 2.0 3.0)
(DATA B) #(3.0 4.0 5.0))
(AXPY 2.0 A B) (DATA B))))
(LETM
((A (VECTOR-SINGLE-FLOAT #(1.0f0 2.0f0 3.0f0)))
(B (VECTOR-SINGLE-FLOAT #(3.0f0 4.0f0 5.0f0))))
(SETF (DATA A)
#(1.0f0 2.0f0 3.0f0)
(DATA B)
#(3.0f0 4.0f0 5.0f0))
(AXPY 2.0f0 A B) (DATA B))))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST #(6.0 8.0 10.0))
(LIST #(6.0f0 8.0f0 10.0f0))
(MULTIPLE-VALUE-LIST
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0 4.0 5.0))))
(SETF (DATA B) #(3.0 4.0 5.0)) (SCAL 2.0 B)
(DATA B))))
(LETM ((B (VECTOR-SINGLE-FLOAT #(3.0f0 4.0f0 5.0f0))))
(SETF (DATA B) #(3.0f0 4.0f0 5.0f0))
(SCAL 2.0f0 B) (DATA B))))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST #(4.9497476 4.2426405))
(LIST #(4.9497476f0 4.2426405f0))
(MULTIPLE-VALUE-LIST
(LETM ((A (VECTOR-SINGLE-FLOAT #(1.0 3.0)))
(B (VECTOR-SINGLE-FLOAT #(8.0 9.0))))
(ROT A B (/ (SQRT 2.0)) (/ (SQRT 2.0))) (DATA B))))
(LETM
((A (VECTOR-SINGLE-FLOAT #(1.0f0 3.0f0)))
(B (VECTOR-SINGLE-FLOAT #(8.0f0 9.0f0))))
(ROT A B (/ (SQRT 2.0f0)) (/ (SQRT 2.0f0)))
(DATA B)))))
(LISP-UNIT:DEFINE-TEST BLAS1-DOUBLE
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 26.0d0)
(MULTIPLE-VALUE-LIST
......@@ -299,8 +312,9 @@
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST #(3.0d0 4.0d0 5.0d0))
(MULTIPLE-VALUE-LIST
(LETM ((A (VECTOR-DOUBLE-FLOAT #(1.0d0 2.0d0 3.0d0)))
(B (VECTOR-DOUBLE-FLOAT #(3.0d0 4.0d0 5.0d0))))
(LETM
((A (VECTOR-DOUBLE-FLOAT #(1.0d0 2.0d0 3.0d0)))
(B (VECTOR-DOUBLE-FLOAT #(3.0d0 4.0d0 5.0d0))))
(BLAS-SWAP A B) (DATA A))))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST #(3.0d0 4.0d0 5.0d0))
......@@ -327,3 +341,4 @@
(ROT A B (/ (SQRT 2.0d0)) (/ (SQRT 2.0d0)))
(DATA B)))))
;; Numerical integration
;; Liam Healy, Wed Jul 5 2006 - 23:14
;; Time-stamp: <2008-02-17 11:43:47EST numerical-integration.lisp>
;; Time-stamp: <2008-03-27 21:30:20EDT numerical-integration.lisp>
;; $Id$
;;; To do: QAWS, QAWO, QAWF, more tests
......@@ -246,7 +246,7 @@
(INTEGRATION-QAG ONE-SINE 0.0d0 PI :GAUSS15 20
WS))))
(LISP-UNIT:ASSERT-ERROR
'GSL-ERROR
'GSL-CONDITION
(LETM ((WS (INTEGRATION-WORKSPACE 20)))
(INTEGRATION-QAG ONE-SINE 0.0d0 PI :GAUSS15 50 WS))))
;; Jacobian elliptic functions
;; Liam Healy, Mon Mar 20 2006 - 22:21
;; Time-stamp: <2008-02-16 20:42:55EST elliptic-functions.lisp>
;; Time-stamp: <2008-03-27 21:29:35EDT elliptic-functions.lisp>
;; $Id$
(in-package :gsl)
......@@ -37,7 +37,7 @@
0.9840560289645665d0 0.0d0 0.0d0 0.0d0)
(MULTIPLE-VALUE-LIST
(JACOBIAN-ELLIPTIC-FUNCTIONS 0.2d0 0.81d0)))
(LISP-UNIT:ASSERT-ERROR 'GSL-ERROR
(LISP-UNIT:ASSERT-ERROR 'GSL-CONDITION
(JACOBIAN-ELLIPTIC-FUNCTIONS
0.61802d0 1.5d0)))
;; Exponential integrals
;; Liam Healy, Tue Mar 21 2006 - 17:37
;; Time-stamp: <2008-02-16 22:16:29EST exponential-integrals.lisp>
;; Time-stamp: <2008-03-27 21:29:32EDT exponential-integrals.lisp>
;; $Id$
(in-package :gsl)
......@@ -104,7 +104,7 @@
|#
(LISP-UNIT:DEFINE-TEST EXPONENTIAL-INTEGRALS
(LISP-UNIT:ASSERT-ERROR 'GSL-ERROR (EXPINT-E1 0.0d0))
(LISP-UNIT:ASSERT-ERROR 'GSL-CONDITION (EXPINT-E1 0.0d0))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 0.21938393439552029d0 2.6541220085226265d-16)
(MULTIPLE-VALUE-LIST (EXPINT-E1 1.0d0)))
......
;; Gamma functions
;; Liam Healy, Thu Apr 27 2006 - 22:06
;; Time-stamp: <2008-02-16 21:58:18EST gamma.lisp>
;; Time-stamp: <2008-03-27 21:29:36EDT gamma.lisp>
;; $Id$
(in-package :gsl)
......@@ -218,11 +218,11 @@
|#
(LISP-UNIT:DEFINE-TEST GAMMA
(LISP-UNIT:ASSERT-ERROR 'GSL-ERROR (GAMMA -1.0d0))
(LISP-UNIT:ASSERT-ERROR 'GSL-CONDITION (GAMMA -1.0d0))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 120.0d0 2.6645352591003757d-14)
(MULTIPLE-VALUE-LIST (GAMMA 6.0d0)))
(LISP-UNIT:ASSERT-ERROR 'GSL-ERROR (LOG-GAMMA -100.0d0))
(LISP-UNIT:ASSERT-ERROR 'GSL-CONDITION (LOG-GAMMA -100.0d0))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 359.13420536957534d0 2.4544868717695813d-13)
(MULTIPLE-VALUE-LIST (LOG-GAMMA 100.0d0)))
......@@ -259,7 +259,7 @@
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 56.0d0 7.460698725481052d-14)
(MULTIPLE-VALUE-LIST (CHOOSE 8 3)))
(LISP-UNIT:ASSERT-ERROR 'GSL-ERROR (CHOOSE 3 8))
(LISP-UNIT:ASSERT-ERROR 'GSL-CONDITION (CHOOSE 3 8))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 29.422274169864693d0 1.9338924605168215d-13)
(MULTIPLE-VALUE-LIST (LOG-CHOOSE 67 12)))
......
;; Legendre functions
;; Liam Healy, Sat Apr 29 2006 - 19:16
;; Time-stamp: <2008-03-09 19:29:17EDT legendre.lisp>
;; Time-stamp: <2008-03-27 21:30:02EDT legendre.lisp>
;; $Id$
(in-package :gsl)
......@@ -306,9 +306,9 @@
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST -0.38249999999999995d0 1.9984014443252816d-16)
(MULTIPLE-VALUE-LIST (LEGENDRE-P3 0.3d0)))
(LISP-UNIT:ASSERT-ERROR 'GSL-ERROR
(LISP-UNIT:ASSERT-ERROR 'GSL-CONDITION
(LEGENDRE-PL -4 0.3d0))
(LISP-UNIT:ASSERT-ERROR 'GSL-ERROR
(LISP-UNIT:ASSERT-ERROR 'GSL-CONDITION
(LEGENDRE-PL 4 3.0d0))
(LISP-UNIT::ASSERT-NUMERICAL-EQUAL
(LIST 0.07293749999999999d0 5.668382430101814d-17)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment