diff --git a/numerical-differentiation.lisp b/numerical-differentiation.lisp index 805c86ee536ecdda03e4c2136ade97056c97926c..f36d4bcd0084c5529fcf0b1dd3954b515c730da8 100644 --- a/numerical-differentiation.lisp +++ b/numerical-differentiation.lisp @@ -1,6 +1,6 @@ ;; Numerical differentiation. ;; Liam Healy Mon Nov 12 2007 - 22:07 -;; Time-stamp: <2008-02-17 18:36:19EST numerical-differentiation.lisp> +;; Time-stamp: <2008-09-20 18:23:28EDT numerical-differentiation.lisp> ;; $Id$ (in-package :gsl) @@ -68,19 +68,133 @@ ;;;; Examples and unit test -;;; This is the example given in the GSL manual, Sec. 27.2. -(defun-single 3/2-power (x) (expt x 3/2)) -;;; (3/2-power 2.0d0) +;;; Examples from gsl-1.11/deriv/test.c + +(defun-single deriv-f1 (x) (exp x)) +(defun deriv-f1-d (x) (exp x)) +(defun-single deriv-f2 (x) (if (not (minusp x)) (expt x 3/2) 0.0d0)) +(defun deriv-f2-d (x) (if (not (minusp x)) (* 3/2 (sqrt x)) 0.0d0)) +(defun-single deriv-f3 (x) (if (not (zerop x)) (sin (/ x)) 0.0d0)) +(defun deriv-f3-d (x) (if (not (zerop x)) (/ (- (cos (/ x))) (expt x 2)) 0.0d0)) +(defun-single deriv-f4 (x) (exp (- (expt x 2)))) +(defun deriv-f4-d (x) (* -2 x (exp (- (expt x 2))))) +(defun-single deriv-f5 (x) (expt x 2)) +(defun deriv-f5-d (x) (* 2 x)) +(defun-single deriv-f6 (x) (/ x)) +(defun deriv-f6-d (x) (- (expt x -2))) + +(central-derivative deriv-f1 1.0d0 1.0d-4) +(forward-derivative deriv-f1 1.0d0 1.0d-4) +(backward-derivative deriv-f1 1.0d0 1.0d-4) +(central-derivative deriv-f2 0.1d0 1.0d-4) +(forward-derivative deriv-f2 0.1d0 1.0d-4) +(backward-derivative deriv-f2 0.1d0 1.0d-4) +(central-derivative deriv-f3 0.45d0 1.0d-4) +(forward-derivative deriv-f3 0.45d0 1.0d-4) +(backward-derivative deriv-f3 0.45d0 1.0d-4) +(central-derivative deriv-f4 0.5d0 1.0d-4) +(forward-derivative deriv-f4 0.5d0 1.0d-4) +(backward-derivative deriv-f4 0.5d0 1.0d-4) +(central-derivative deriv-f5 0.0d0 1.0d-4) +(forward-derivative deriv-f5 0.0d0 1.0d-4) +(backward-derivative deriv-f5 0.0d0 1.0d-4) +(central-derivative deriv-f6 10.0d0 1.0d-4) +(forward-derivative deriv-f6 10.0d0 1.0d-4) +(backward-derivative deriv-f6 10.0d0 1.0d-4) #| (make-tests numerical-differentiation - ;; Compare to (* 3/2 (sqrt 2.0d0)) - (central-derivative 3/2-power 2.0d0 1.d-8)) + (central-derivative deriv-f1 1.0d0 1.0d-4) + (forward-derivative deriv-f1 1.0d0 1.0d-4) + (backward-derivative deriv-f1 1.0d0 1.0d-4) + (central-derivative deriv-f2 0.1d0 1.0d-4) + (forward-derivative deriv-f2 0.1d0 1.0d-4) + (backward-derivative deriv-f2 0.1d0 1.0d-4) + (central-derivative deriv-f3 0.45d0 1.0d-4) + (forward-derivative deriv-f3 0.45d0 1.0d-4) + (backward-derivative deriv-f3 0.45d0 1.0d-4) + (central-derivative deriv-f4 0.5d0 1.0d-4) + (forward-derivative deriv-f4 0.5d0 1.0d-4) + (backward-derivative deriv-f4 0.5d0 1.0d-4) + (central-derivative deriv-f5 0.0d0 1.0d-4) + (forward-derivative deriv-f5 0.0d0 1.0d-4) + (backward-derivative deriv-f5 0.0d0 1.0d-4) + (central-derivative deriv-f6 10.0d0 1.0d-4) + (forward-derivative deriv-f6 10.0d0 1.0d-4) + (backward-derivative deriv-f6 10.0d0 1.0d-4)) |# (LISP-UNIT:DEFINE-TEST NUMERICAL-DIFFERENTIATION (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 2.121320312002221d0 4.0642813729715275d-7) + (LIST 2.718281828441488 4.123659913167868e-10) + (MULTIPLE-VALUE-LIST + (CENTRAL-DERIVATIVE DERIV-F1 1.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 2.7182817825298398 9.540320743340577e-7) + (MULTIPLE-VALUE-LIST + (FORWARD-DERIVATIVE DERIV-F1 1.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 2.7182818293827378 9.086969640080628e-7) + (MULTIPLE-VALUE-LIST + (BACKWARD-DERIVATIVE DERIV-F1 1.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.474341649024533 3.3922603135575853e-11) + (MULTIPLE-VALUE-LIST + (CENTRAL-DERIVATIVE DERIV-F2 0.1 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.47434164943235285 9.102230432046565e-8) + (MULTIPLE-VALUE-LIST + (FORWARD-DERIVATIVE DERIV-F2 0.1 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.4743416462049176 8.787851752748856e-8) + (MULTIPLE-VALUE-LIST + (BACKWARD-DERIVATIVE DERIV-F2 0.1 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 2.9941773945923913 6.730277498876722e-10) + (MULTIPLE-VALUE-LIST + (CENTRAL-DERIVATIVE DERIV-F3 0.45 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 2.994177385772526 1.6952086150997503e-6) + (MULTIPLE-VALUE-LIST + (FORWARD-DERIVATIVE DERIV-F3 0.45 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 2.9941775182635064 1.568063267060477e-6) + (MULTIPLE-VALUE-LIST + (BACKWARD-DERIVATIVE DERIV-F3 0.45 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST -0.7788007830653751 1.7227267499194736e-10) + (MULTIPLE-VALUE-LIST + (CENTRAL-DERIVATIVE DERIV-F4 0.5 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST -0.7788007884386108 2.530006603059119e-7) + (MULTIPLE-VALUE-LIST + (FORWARD-DERIVATIVE DERIV-F4 0.5 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST -0.7788007743421791 2.503617930568489e-7) + (MULTIPLE-VALUE-LIST + (BACKWARD-DERIVATIVE DERIV-F4 0.5 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.0 6.66133814775094e-20) + (MULTIPLE-VALUE-LIST + (CENTRAL-DERIVATIVE DERIV-F5 0.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST -2.6337311035821125e-26 1.606762230663824e-11) + (MULTIPLE-VALUE-LIST + (FORWARD-DERIVATIVE DERIV-F5 0.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 2.6337311035821125e-26 1.606762230663824e-11) + (MULTIPLE-VALUE-LIST + (BACKWARD-DERIVATIVE DERIV-F5 0.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST -0.009999999999871223 2.6645352591887814e-12) + (MULTIPLE-VALUE-LIST + (CENTRAL-DERIVATIVE DERIV-F6 10.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST -0.010000000266238856 4.9950606958271945e-9) + (MULTIPLE-VALUE-LIST + (FORWARD-DERIVATIVE DERIV-F6 10.0 1.e-4))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST -0.010000000076196142 4.641550044799095e-9) (MULTIPLE-VALUE-LIST - (CENTRAL-DERIVATIVE 3/2-POWER 2.0d0 1.d-8)))) + (BACKWARD-DERIVATIVE DERIV-F6 10.0 1.e-4)))) diff --git a/numerical-integration.lisp b/numerical-integration.lisp index d3021e71fadacb93573864b87b43787a357e54f2..b2e163190c468e48ed4b76b2a309d0affbd2d583 100644 --- a/numerical-integration.lisp +++ b/numerical-integration.lisp @@ -1,6 +1,6 @@ ;; Numerical integration ;; Liam Healy, Wed Jul 5 2006 - 23:14 -;; Time-stamp: <2008-09-14 21:55:47EDT numerical-integration.lisp> +;; Time-stamp: <2008-09-16 22:43:59EDT numerical-integration.lisp> ;; $Id$ ;;; To do: QAWS, QAWO, QAWF, more tests @@ -50,7 +50,7 @@ (defmfun integration-workspace-free (pointer) "gsl_integration_workspace_free" - ((mpointer :pointer)) + ((pointer :pointer)) :c-return :void :export nil :index (letm integration-workspace) @@ -234,6 +234,8 @@ (letm ((ws (integration-workspace 20))) (integration-QAG one-sine 0.0d0 pi :gauss15 50 ws))) +|# + (LISP-UNIT:DEFINE-TEST NUMERICAL-INTEGRATION (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 2.0d0 2.220446049250313d-14 21) @@ -249,5 +251,3 @@ 'GSL-CONDITION (LETM ((WS (INTEGRATION-WORKSPACE 20))) (INTEGRATION-QAG ONE-SINE 0.0d0 PI :GAUSS15 50 WS)))) - -|# diff --git a/random/beta.lisp b/random/beta.lisp index b135c9229c522f56134e9de1d3da0f5093705d60..21efdd302783eab512672026c9d74efe14212af5 100644 --- a/random/beta.lisp +++ b/random/beta.lisp @@ -1,6 +1,6 @@ ;; Beta distribution ;; Liam Healy, Sat Sep 30 2006 -;; Time-stamp: <2008-02-17 13:18:37EST beta.lisp> +;; Time-stamp: <2008-09-20 21:20:32EDT beta.lisp> ;; $Id$ (in-package :gsl) @@ -68,29 +68,30 @@ (LISP-UNIT:DEFINE-TEST BETA (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST - (LIST 8.390009419017379d-5 0.024211646813900284d0 - 0.045507713472575685d0 0.30321144534029304d0 - 0.5693572151110255d0 0.5146515206667992d0 - 0.230096194772543d0 0.3928348825648452d0 - 0.5143874122537551d0 0.2337836858050161d0 - 0.19851288668620246d0)) + (LIST 0.3935474359990073 0.7063621551518341 + 0.044515648447265056 0.09286083229785232 + 0.210544366728104 0.010114317425185686 + 0.4595767375719009 0.1515157002550483 + 0.1731331145031117 0.4270743075655188 + 0.3353314142479658)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) (LOOP FOR I FROM 0 TO 10 COLLECT - (BETA-RD RNG 1.0d0 2.0d0))))) + (BETA-RD RNG 1.0 2.0))))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 1.8000000000000016d0) - (MULTIPLE-VALUE-LIST (BETA-PDF 0.1d0 1.0d0 2.0d0))) + (LIST 1.8000000000000016) + (MULTIPLE-VALUE-LIST (BETA-PDF 0.1 1.0 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.19000000000000017d0) - (MULTIPLE-VALUE-LIST (BETA-P 0.1d0 1.0d0 2.0d0))) + (LIST 0.19000000000000017) + (MULTIPLE-VALUE-LIST (BETA-P 0.1 1.0 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.8099999999999998d0) - (MULTIPLE-VALUE-LIST (BETA-Q 0.1d0 1.0d0 2.0d0))) + (LIST 0.8099999999999998) + (MULTIPLE-VALUE-LIST (BETA-Q 0.1 1.0 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.09999999999999988d0) - (MULTIPLE-VALUE-LIST (BETA-PINV 0.19d0 1.0d0 2.0d0))) + (LIST 0.09999999999999992) + (MULTIPLE-VALUE-LIST (BETA-PINV 0.19 1.0 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.09999999999999987d0) - (MULTIPLE-VALUE-LIST (BETA-QINV 0.81d0 1.0d0 2.0d0)))) + (LIST 0.09999999999999988) + (MULTIPLE-VALUE-LIST (BETA-QINV 0.81 1.0 2.0)))) + diff --git a/random/chi-squared.lisp b/random/chi-squared.lisp index 434319cfea7d4bfa699f62e08c64ef75548697da..0e34fe6b3e1b7e1c39c357432d65350b42796942 100644 --- a/random/chi-squared.lisp +++ b/random/chi-squared.lisp @@ -1,6 +1,6 @@ ;; Chi-squared distribution ;; Liam Healy, Sat Oct 7 2006 - 16:13 -;; Time-stamp: <2008-02-17 13:12:43EST chi-squared.lisp> +;; Time-stamp: <2008-09-20 21:23:34EDT chi-squared.lisp> ;; $Id$ (in-package :gsl) @@ -68,31 +68,32 @@ (LISP-UNIT:DEFINE-TEST CHI-SQUARED (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST - (LIST 9.190439057230117d0 3.9593845312309113d0 - 5.434933385075541d0 13.023107419896268d0 - 13.670690841729192d0 6.982359715352029d0 - 13.75663972164132d0 11.359458045417648d0 - 16.06828259064875d0 12.999514252538129d0 - 11.147347424355443d0)) + (LIST 13.043328884186328 11.427227829236712 + 16.55811815484942 7.128795406995407 + 5.120266499239882 10.464572605669142 + 5.8126929867006405 8.784940866479005 + 7.559275305609187 8.35181083950897 + 4.140798004825149)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) (LOOP FOR I FROM 0 TO 10 COLLECT - (CHI-SQUARED RNG 10.0d0))))) + (CHI-SQUARED RNG 10.0))))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.43939128946772227d0) - (MULTIPLE-VALUE-LIST (CHI-SQUARED-PDF 0.5d0 1.0d0))) + (LIST 0.43939128946772227) + (MULTIPLE-VALUE-LIST (CHI-SQUARED-PDF 0.5 1.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.5204998778130462d0) - (MULTIPLE-VALUE-LIST (CHI-SQUARED-P 0.5d0 1.0d0))) + (LIST 0.5204998778130462) + (MULTIPLE-VALUE-LIST (CHI-SQUARED-P 0.5 1.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.4795001221869538d0) - (MULTIPLE-VALUE-LIST (CHI-SQUARED-Q 0.5d0 1.0d0))) + (LIST 0.4795001221869538) + (MULTIPLE-VALUE-LIST (CHI-SQUARED-Q 0.5 1.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.5000000000000003d0) + (LIST 0.5000000000000003) (MULTIPLE-VALUE-LIST - (CHI-SQUARED-PINV 0.5204998778130463d0 1.0d0))) + (CHI-SQUARED-PINV 0.5204998778130463 1.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.5000000000000003d0) + (LIST 0.5000000000000003) (MULTIPLE-VALUE-LIST - (CHI-SQUARED-QINV 0.4795001221869537d0 1.0d0)))) + (CHI-SQUARED-QINV 0.4795001221869537 1.0)))) + diff --git a/random/dirichlet.lisp b/random/dirichlet.lisp index 529e1e7264b53066718b44f172848c6fd9af2f77..492539651b6475d0fc470f7081677ef4caefa762 100644 --- a/random/dirichlet.lisp +++ b/random/dirichlet.lisp @@ -1,6 +1,6 @@ ;; Dirichlet distribution ;; Liam Healy, Sun Oct 29 2006 -;; Time-stamp: <2008-09-14 22:08:40EDT dirichlet.lisp> +;; Time-stamp: <2008-09-20 21:24:25EDT dirichlet.lisp> ;; $Id$ (in-package :gsl) @@ -73,26 +73,27 @@ (LISP-UNIT:DEFINE-TEST DIRICHLET (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST - #(3.9283332456352124d-5 0.468176310887376d0 - 0.34075044031099977d0 0.19103396546916782d0)) + #(0.12448073544131681 0.19182353706734917 + 0.46054388544826397 0.22315184204307006)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0)) - (ALPHA (VECTOR-DOUBLE-FLOAT (A 1.0d0 2.0d0 3.0d0 4.0d0))) + (ALPHA (VECTOR-DOUBLE-FLOAT (A 1.0 2.0 3.0 4.0))) (THETA (VECTOR-DOUBLE-FLOAT 4))) (DIRICHLET RNG ALPHA THETA) (CL-ARRAY THETA)))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 2.8800000000000043d0) + (LIST 2.8800000000000043) (MULTIPLE-VALUE-LIST (LETM - ((ALPHA (VECTOR-DOUBLE-FLOAT (A 1.0d0 2.0d0 3.0d0 4.0d0))) - (THETA (VECTOR-DOUBLE-FLOAT (A 0.1d0 0.3d0 0.4d0 0.2d0)))) + ((ALPHA (VECTOR-DOUBLE-FLOAT (A 1.0 2.0 3.0 4.0))) + (THETA (VECTOR-DOUBLE-FLOAT (A 0.1 0.3 0.4 0.2)))) (DIRICHLET-PDF ALPHA THETA)))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 1.057790294147856d0) + (LIST 1.057790294147856) (MULTIPLE-VALUE-LIST (LETM - ((ALPHA (VECTOR-DOUBLE-FLOAT (A 1.0d0 2.0d0 3.0d0 4.0d0))) - (THETA (VECTOR-DOUBLE-FLOAT (A 0.1d0 0.3d0 0.4d0 0.2d0)))) + ((ALPHA (VECTOR-DOUBLE-FLOAT (A 1.0 2.0 3.0 4.0))) + (THETA (VECTOR-DOUBLE-FLOAT (A 0.1 0.3 0.4 0.2)))) (DIRICHLET-LOG-PDF ALPHA THETA))))) + diff --git a/random/fdist.lisp b/random/fdist.lisp index a3f40e7ba1fe011c1458dd288291a23e968e190d..8d1458d950807fd6f2c1530f589b6c9cdd96777b 100644 --- a/random/fdist.lisp +++ b/random/fdist.lisp @@ -1,6 +1,6 @@ ;; Fdist distribution ;; Liam Healy, Sat Sep 30 2006 -;; Time-stamp: <2008-02-17 13:14:44EST fdist.lisp> +;; Time-stamp: <2008-09-20 21:25:00EDT fdist.lisp> ;; $Id$ (in-package :gsl) @@ -76,31 +76,33 @@ (LISP-UNIT:DEFINE-TEST FDIST (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST - (LIST 103.77423336538772d0 2.124850132212401d0 - 0.3044106947086728d0 0.30018868738752463d0 - 0.0011228206844788875d0 0.29210940078495257d0 - 0.0635729092565007d0 0.4779663652167387d0 - 0.03472116760794376d0 0.4869748230412714d0 - 2.531794516961295d0)) + (LIST 18.411308904958695 5.120881381831058 + 18.104535265974707 0.15934280606960227 + 0.06272171507636773 2.2809441726456456 + 0.5259458753395939 1.8256109001076744 + 0.845346894458977 2.5212086970057763 + 0.5212415547032052)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) (LOOP FOR I FROM 0 TO 10 COLLECT - (FDIST RNG 1.0d0 2.0d0))))) + (FDIST RNG 1.0 2.0))))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.1594719884624466d0) - (MULTIPLE-VALUE-LIST (FDIST-PDF 1.2d0 1.0d0 2.0d0))) + (LIST 0.1594719884624466) + (MULTIPLE-VALUE-LIST (FDIST-PDF 1.2 1.0 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.6123724356957948d0) - (MULTIPLE-VALUE-LIST (FDIST-P 1.2d0 1.0d0 2.0d0))) + (LIST 0.6123724356957948) + (MULTIPLE-VALUE-LIST (FDIST-P 1.2 1.0 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.3876275643042052d0) - (MULTIPLE-VALUE-LIST (FDIST-Q 1.2d0 1.0d0 2.0d0))) + (LIST 0.3876275643042052) + (MULTIPLE-VALUE-LIST (FDIST-Q 1.2 1.0 2.0))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 1.2) + (MULTIPLE-VALUE-LIST + (FDIST-PINV + 0.612372435695795 + 1.0 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 1.200000000000001d0) + (LIST 1.1999999999999995) (MULTIPLE-VALUE-LIST - (FDIST-PINV 0.612372435695795d0 1.0d0 2.0d0))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 1.2000000000000006d0) - (MULTIPLE-VALUE-LIST - (FDIST-QINV 0.38762756430420503d0 1.0d0 2.0d0)))) + (FDIST-QINV 0.38762756430420503 1.0 2.0)))) + diff --git a/random/gamma.lisp b/random/gamma.lisp index 7f1bd758f2a5eb367065315796110ead75ca8b7a..37ebaa592e30ef474d56666c3028e5afde377bc9 100644 --- a/random/gamma.lisp +++ b/random/gamma.lisp @@ -1,6 +1,6 @@ ;; Gamma distribution ;; Liam Healy, Sat Sep 30 2006 -;; Time-stamp: <2008-02-17 13:10:14EST gamma.lisp> +;; Time-stamp: <2008-09-20 21:25:37EDT gamma.lisp> ;; $Id$ (in-package :gsl) @@ -80,45 +80,46 @@ |# (LISP-UNIT:DEFINE-TEST GAMMA-RANDIST - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST - (LIST 5.165688917678959d-4 3.6291162855975294d0 - 2.5273196108679516d0 0.10848774504124709d0 - 2.9249988468316213d0 1.4473215859071986d0 - 0.08690724899367205d0 0.590607841809058d0 - 1.2322105878131593d0 0.6023372667078228d0 - 0.5490215963871072d0)) - (MULTIPLE-VALUE-LIST - (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) - (LOOP FOR I FROM 0 TO 10 COLLECT - (GAMMA-RD RNG 1.0d0 2.0d0))))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST - (LIST 2.6001378761310767d0 2.5222666954201554d0 - 7.731422092125877d0 4.227279926486253d0 - 0.09519304347489156d0 0.5710920106874436d0 - 0.8910637719460512d0 0.8263221202545431d0 - 3.1830665720573026d0 0.0038084003613199297d0 - 1.0320117334083205d0)) - (MULTIPLE-VALUE-LIST - (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) - (LOOP FOR I FROM 0 TO 10 COLLECT - (GAMMA-MT RNG 1.0d0 2.0d0))))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.475614712250357d0) - (MULTIPLE-VALUE-LIST (GAMMA-PDF 0.1d0 1.0d0 2.0d0))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.04877057549928599d0) - (MULTIPLE-VALUE-LIST (GAMMA-P 0.1d0 1.0d0 2.0d0))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.951229424500714d0) - (MULTIPLE-VALUE-LIST (GAMMA-Q 0.1d0 1.0d0 2.0d0))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.10000000000000006d0) - (MULTIPLE-VALUE-LIST - (GAMMA-PINV 0.048770575499286005d0 1.0d0 2.0d0))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.10000000000000003d0) - (MULTIPLE-VALUE-LIST - (GAMMA-QINV 0.951229424500714d0 1.0d0 2.0d0)))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST + (LIST 3.012983063768798 2.216796987787054 + 5.033971231985026 0.6152002566487763 + 0.1876159751197978 1.7884608326846099 + 0.30812625873110316 1.1328459017528132 + 0.7363931539298727 0.9843618987581162 + 0.06871686155296197)) + (MULTIPLE-VALUE-LIST + (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) + (LOOP FOR I FROM 0 TO 10 COLLECT + (GAMMA-RD RNG 1.0 2.0))))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST + (LIST 3.012983063768798 2.216796987787054 + 5.033971231985026 0.6152002566487763 + 0.1876159751197978 1.7884608326846099 + 0.30812625873110316 1.1328459017528132 + 0.7363931539298727 0.9843618987581162 + 0.06871686155296197)) + (MULTIPLE-VALUE-LIST + (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) + (LOOP FOR I FROM 0 TO 10 COLLECT + (GAMMA-MT RNG 1.0 2.0))))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.475614712250357) + (MULTIPLE-VALUE-LIST (GAMMA-PDF 0.1 1.0 2.0))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.04877057549928599) + (MULTIPLE-VALUE-LIST (GAMMA-P 0.1 1.0 2.0))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.951229424500714) + (MULTIPLE-VALUE-LIST (GAMMA-Q 0.1 1.0 2.0))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.10000000000000006) + (MULTIPLE-VALUE-LIST + (GAMMA-PINV 0.048770575499286005 1.0 2.0))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL + (LIST 0.10000000000000003) + (MULTIPLE-VALUE-LIST + (GAMMA-QINV 0.951229424500714 1.0 2.0)))) + diff --git a/random/gaussian.lisp b/random/gaussian.lisp index 0de8401ae5835c6ae43d7b7edc04ab4ec197d41d..b46530c6dd1927885d489cad1a41855f12cdc3bb 100644 --- a/random/gaussian.lisp +++ b/random/gaussian.lisp @@ -1,6 +1,6 @@ ;; Gaussian distribution ;; Liam Healy, Sun Jul 16 2006 - 22:09 -;; Time-stamp: <2008-02-17 12:23:52EST gaussian.lisp> +;; Time-stamp: <2008-09-20 21:28:07EDT gaussian.lisp> ;; $Id$ (in-package :gsl) @@ -148,40 +148,43 @@ (LISP-UNIT:DEFINE-TEST GAUSSIAN (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST - (LIST 1.3391860811867589d0 -0.8810099183143839d0 - 16.744084062537738d0 7.336411072925795d0 - 9.975246316020124d0 -12.775020810027664d0 - -23.967152827332075d0 -6.79280164729211d0 - -0.3909131843358723d0 8.935555455208181d0 - -0.17647794589783283d0)) + (LIST 1.3391860811867589 -0.8810099183143839 + 16.744084062537738 7.336411072925795 + 9.975246316020124 -12.775020810027664 + -23.967152827332075 -6.79280164729211 + -0.3909131843358723 8.935555455208181 + -0.17647794589783283)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) (LOOP FOR I FROM 0 TO 10 COLLECT - (GAUSSIAN RNG 10.0d0))))) + (GAUSSIAN RNG 10.0))))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.039894228040143274d0) - (MULTIPLE-VALUE-LIST (GAUSSIAN-PDF 0.0d0 10.0d0))) + (LIST 0.039894228040143274) + (MULTIPLE-VALUE-LIST (GAUSSIAN-PDF 0.0 10.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST - (LIST 6.107926637756835d0 -15.764917894916914d0 - -7.200971392533084d0 19.5115024682162d0 - 5.248202921580308d0 10.408510262302668d0 - -14.333242326151595d0 0.9455088719230575d0 - -11.120343985926329d0 -3.0791957427954d0 - -2.090680773068803d0)) + (LIST 7.648734260124924 -11.307312946196086 + 4.523361654215173 -4.5181725947577185 + 13.64676540828912 3.553650119391929 + -5.567035948404032 10.097727863788887 + 2.519120940798607 -9.024585521868676 + -9.463283369593537)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) (LOOP FOR I FROM 0 TO 10 COLLECT - (GAUSSIAN-ZIGGURAT RNG 10.0d0))))) + (GAUSSIAN-ZIGGURAT RNG 10.0))))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.9772498680518208d0) - (MULTIPLE-VALUE-LIST (UGAUSSIAN-P 2.0d0))) + (LIST 0.9772498680518208) + (MULTIPLE-VALUE-LIST (UGAUSSIAN-P 2.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.022750131948179212d0) - (MULTIPLE-VALUE-LIST (UGAUSSIAN-Q 2.0d0))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 2.0d0) - (MULTIPLE-VALUE-LIST (UGAUSSIAN-PINV 0.9772498680518208d0))) - (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 2.0d0) - (MULTIPLE-VALUE-LIST (UGAUSSIAN-QINV 0.02275013194817921d0)))) + (LIST 0.022750131948179212) + (MULTIPLE-VALUE-LIST (UGAUSSIAN-Q 2.0))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 2.0) + (MULTIPLE-VALUE-LIST + (UGAUSSIAN-PINV + 0.9772498680518208))) + (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 2.0) + (MULTIPLE-VALUE-LIST + (UGAUSSIAN-QINV + 0.02275013194817921)))) + diff --git a/random/negative-binomial.lisp b/random/negative-binomial.lisp index 42b6f38662e936cba20f806ee0404a900322728b..ffb5e9dc7dc6efeca7c9d8220559958b78d39c4d 100644 --- a/random/negative-binomial.lisp +++ b/random/negative-binomial.lisp @@ -1,6 +1,6 @@ ;; Negative binomial and Pascal distributions ;; Liam Healy, Sat Nov 25 2006 - 16:00 -;; Time-stamp: <2008-02-17 13:44:16EST negative-binomial.lisp> +;; Time-stamp: <2008-09-20 21:28:50EDT negative-binomial.lisp> ;; $Id$ (in-package :gsl) @@ -108,36 +108,35 @@ (LISP-UNIT:DEFINE-TEST NEGATIVE-BINOMIAL (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST (LIST 10 7 12 23 20 24 18 12 4 22 15)) + (LIST (LIST 15 21 19 15 8 18 23 18 33 16 10)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) (LOOP FOR I FROM 0 TO 10 COLLECT - (NEGATIVE-BINOMIAL RNG 0.4d0 12.0d0))))) + (NEGATIVE-BINOMIAL RNG 0.4 12.0))))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.0056984767089869d0) + (LIST 0.0056984767089869) (MULTIPLE-VALUE-LIST - (NEGATIVE-BINOMIAL-PDF 5 0.4d0 12.0d0))) + (NEGATIVE-BINOMIAL-PDF 5 0.4 12.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.010594202555514881d0) - (MULTIPLE-VALUE-LIST - (NEGATIVE-BINOMIAL-P 5 0.4d0 12.0d0))) + (LIST 0.010594202555514881) + (MULTIPLE-VALUE-LIST (NEGATIVE-BINOMIAL-P 5 0.4 12.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.9894057974444851d0) - (MULTIPLE-VALUE-LIST - (NEGATIVE-BINOMIAL-Q 5 0.4d0 12.0d0))) + (LIST 0.9894057974444851) + (MULTIPLE-VALUE-LIST (NEGATIVE-BINOMIAL-Q 5 0.4 12.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST (LIST 10 7 12 23 20 24 18 12 4 22 15)) + (LIST (LIST 15 21 19 15 8 18 23 18 33 16 10)) (MULTIPLE-VALUE-LIST (LETM ((RNG (RANDOM-NUMBER-GENERATOR *MT19937* 0))) (LOOP FOR I FROM 0 TO 10 COLLECT - (PASCAL RNG 0.4d0 12))))) + (PASCAL RNG 0.4 12))))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.0056984767089869d0) - (MULTIPLE-VALUE-LIST (PASCAL-PDF 5 0.4d0 12))) + (LIST 0.0056984767089869) + (MULTIPLE-VALUE-LIST (PASCAL-PDF 5 0.4 12))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.010594202555514881d0) - (MULTIPLE-VALUE-LIST (PASCAL-P 5 0.4d0 12))) + (LIST 0.010594202555514881) + (MULTIPLE-VALUE-LIST (PASCAL-P 5 0.4 12))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 0.9894057974444851d0) - (MULTIPLE-VALUE-LIST (PASCAL-Q 5 0.4d0 12)))) + (LIST 0.9894057974444851) + (MULTIPLE-VALUE-LIST (PASCAL-Q 5 0.4 12)))) + diff --git a/special-functions/exponential-functions.lisp b/special-functions/exponential-functions.lisp index 2597b4bba89bdd2438ff0068eeef9c1c88a7e9c6..80c40f492536de8cb7e5207084262664a042d345 100644 --- a/special-functions/exponential-functions.lisp +++ b/special-functions/exponential-functions.lisp @@ -1,6 +1,6 @@ ;; Exponential functions ;; Liam Healy, Tue Mar 21 2006 - 17:05 -;; Time-stamp: <2008-02-16 21:01:05EST exponential-functions.lisp> +;; Time-stamp: <2008-09-16 22:51:18EDT exponential-functions.lisp> ;; $Id$ (in-package :gsl) @@ -97,7 +97,7 @@ #| (make-tests exponential-functions (gsl-exp 3.0d0) - (exp-scaled 555.0d0) + (exp-scaled 2000.0d0) (exp-mult 101.0d0 5.0d0) (exp-mult-scaled 555.0d0 101.0d0) (expm1 0.0001d0) @@ -113,8 +113,8 @@ (LIST 20.085536923187668d0 8.91977022163267d-15) (MULTIPLE-VALUE-LIST (GSL-EXP 3.0d0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL - (LIST 1.0800340716201098d0 241 2.666751014771678d-13) - (MULTIPLE-VALUE-LIST (EXP-SCALED 555.0d0))) + (LIST 3.8811801942838993 868 3.448904081776264e-12) + (MULTIPLE-VALUE-LIST (EXP-SCALED 2000.0))) (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 3.6535299896840335d44 8.355840218353793d30) (MULTIPLE-VALUE-LIST (EXP-MULT 101.0d0 5.0d0)))