root/trunk/special-functions/zeta.lisp

Revision 26, 3.3 kB (checked in by lhealy, 9 months ago)

Subversion version stamp.

  • Property svn:keywords set to Id
Line 
1;; Zeta functions
2;; Liam Healy, Sat May 13 2006 - 23:27
3;; Time-stamp: <2008-02-16 23:04:22EST zeta.lisp>
4;; $Id$
5
6(in-package :gsl)
7
8;;;;****************************************************************************
9;;;; Riemann Zeta Function
10;;;;****************************************************************************
11
12;;; FDL
13;;; The Riemann zeta function is defined by the infinite sum
14;;; zeta(s) = \sum_{k=1}^\infty k^{-s}. 
15
16(defgeneric zeta (x)
17  (:documentation                       ; FDL
18   "The Riemann zeta function zeta(n)."))
19
20(defmfun zeta ((n integer))
21  "gsl_sf_zeta_int_e" ((n :int) (ret sf-result))
22  :type :method
23  :export t
24  :documentation                        ; FDL
25  "The Riemann zeta function zeta(n) for integer n, n \ne 1.")
26
27(defmfun zeta ((s float))
28  "gsl_sf_zeta_e" ((s :double) (ret sf-result))
29  :type :method
30  :documentation                        ; FDL
31  "The Riemann zeta function zeta(s) for arbitrary s, s \ne 1.")
32
33;;;;****************************************************************************
34;;;; Riemann Zeta Function Minus One
35;;;;****************************************************************************
36
37(defgeneric zeta-1 (x)
38  (:documentation "zeta - 1."))
39
40(defmfun zeta-1 ((n integer))
41  "gsl_sf_zetam1_int_e" ((n :int) (ret sf-result))
42  :type :method
43  :export t
44  :documentation                        ; FDL
45  "The Riemann zeta function zeta(n) for integer n, n \ne 1.")
46
47(defmfun zeta-1 ((s float))
48  "gsl_sf_zetam1_e" ((s :double) (ret sf-result))
49  :type :method
50  :documentation                        ; FDL
51  "The Riemann zeta function zeta(s) for arbitrary s, s \ne 1.")
52
53;;;;****************************************************************************
54;;;; Hurwitz Zeta Function
55;;;;****************************************************************************
56
57(defmfun hurwitz-zeta (s q)
58  "gsl_sf_hzeta_e" ((s :double) (q :double) (ret sf-result))
59  :documentation                        ; FDL
60  "The Hurwitz zeta function zeta(s,q) for s > 1, q > 0.")
61
62;;;;****************************************************************************
63;;;; Eta Function
64;;;;****************************************************************************
65
66(defmfun eta (s)
67  "gsl_sf_eta_e" ((s :double) (ret sf-result))
68  :documentation                        ; FDL
69  "The eta function eta(s) for arbitrary s.")
70
71;;;;****************************************************************************
72;;;; Examples and unit test
73;;;;****************************************************************************
74
75#|
76(make-tests zeta
77  (zeta 2)
78  (zeta 1.5d0)
79  (zeta-1 2)
80  (zeta-1 1.5d0)
81  (hurwitz-zeta 1.5d0 2.5d0)
82  (eta 1.5d0))
83|#
84
85(LISP-UNIT:DEFINE-TEST ZETA
86  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
87   (LIST 1.6449340668482264d0 7.304974700020789d-16)
88   (MULTIPLE-VALUE-LIST (ZETA 2)))
89  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
90   (LIST 2.612375348685493d0 1.419471177334903d-14)
91   (MULTIPLE-VALUE-LIST (ZETA 1.5d0)))
92  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
93   (LIST 0.6449340668482264d0 2.8640826015201633d-16)
94   (MULTIPLE-VALUE-LIST (ZETA-1 2)))
95  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
96   (LIST 1.612375348685493d0 1.419471177334903d-14)
97   (MULTIPLE-VALUE-LIST (ZETA-1 1.5d0)))
98  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
99   (LIST 1.4037797688568256d0 8.104244828616706d-15)
100   (MULTIPLE-VALUE-LIST (HURWITZ-ZETA 1.5d0 2.5d0)))
101  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
102   (LIST 0.7651470246254092d0 1.0661276646941275d-14)
103   (MULTIPLE-VALUE-LIST (ETA 1.5d0))))
Note: See TracBrowser for help on using the browser.