root/trunk/special-functions/bessel.lisp

Revision 34, 31.0 kB (checked in by lhealy, 9 months ago)

The classes/types in the different contexts are now gathered together
in one place, in *type-names* for the types and in *data-class-name*
for data classes, populated by #'add-data-class. Both defdata and
defmfun-all use the table and so mapping between various names is
consistent. The data class names are now different, *-double-float
and *-single-float replaces *-double and *-single. The regression
tests give the same results as before.

  • Property svn:keywords set to Id
Line 
1;; Bessel functions
2;; Liam Healy, Fri Mar 17 2006 - 18:42
3;; Time-stamp: <2008-03-09 19:29:18EDT bessel.lisp>
4;; $Id$
5
6(in-package :gsl)
7
8;;;;****************************************************************************
9;;;; Regular Cylindrical Bessel Functions
10;;;;****************************************************************************
11
12(defmfun cylindrical-bessel-J0 (x)
13    "gsl_sf_bessel_J0_e"
14  ((x :double) (ret sf-result))
15  :documentation                        ; FDL
16  "The regular cylindrical Bessel function of zeroth order, J_0(x).")
17
18(defmfun cylindrical-bessel-J1 (x)
19  "gsl_sf_bessel_J1_e" ((x :double) (ret sf-result))
20  :documentation                        ; FDL
21  "The regular cylindrical Bessel function of first order, J_1(x).")
22
23(defmfun cylindrical-bessel-Jn (n x)
24  "gsl_sf_bessel_Jn_e" ((n :int) (x :double) (ret sf-result))
25  :documentation                        ; FDL
26  "The regular cylindrical Bessel function of order n, J_n(x).")
27
28(defmfun cylindrical-bessel-Jn-array (x array &optional (nmin 0))
29  "gsl_sf_bessel_Jn_array"
30  ((nmin :int) ((+ nmin (dim0 array) -1) :int) (x :double)
31   ((gsl-array array) :pointer))
32  :invalidate (array)
33  :documentation                        ; FDL
34  "The values of the regular cylindrical Bessel functions J_n(x)
35   for n from nmin to nmin+length(array)-1 inclusive.
36   The values are computed using recurrence relations for efficiency,
37   and therefore may differ slightly from the exact values.")
38
39;;;;****************************************************************************
40;;;; Irregular Cylindrical Bessel Functions
41;;;;****************************************************************************
42
43(defmfun cylindrical-bessel-Y0 (x)
44  "gsl_sf_bessel_Y0_e" ((x :double) (ret sf-result))
45  :documentation                        ; FDL
46  "The irregular cylindrical Bessel function of zeroth order, Y_0(x).")
47
48(defmfun cylindrical-bessel-Y1 (x)
49  "gsl_sf_bessel_Y1_e" ((x :double) (ret sf-result))
50  :documentation                        ; FDL
51  "The irregular cylindrical Bessel function of first order, Y_1(x).")
52
53(defmfun cylindrical-bessel-Yn (n x)
54  "gsl_sf_bessel_Yn_e"
55  ((n :int) (x :double) (ret sf-result))
56  :documentation                        ; FDL
57  "The irregular cylindrical Bessel function of order n, Y_n(x).")
58
59(defmfun cylindrical-bessel-Yn-array (x array &optional (nmin 0))
60  "gsl_sf_bessel_Yn_array"
61  ((nmin :int) ((+ nmin (dim0 array) -1) :int) (x :double)
62   ((gsl-array array) :pointer))
63  :invalidate (array)
64  :documentation                        ; FDL
65  "The values of the irregular cylindrical Bessel functions
66   Y_n(x) for n from from nmin to
67   nmin+length(array)-1 inclusive.  The values are computed using
68   recurrence relations for efficiency, and therefore may differ slightly
69   from the exact values.")
70
71;;;;****************************************************************************
72;;;; Regular Modified Cylindrical Bessel Functions
73;;;;****************************************************************************
74
75(defmfun cylindrical-bessel-I0 (x)
76  "gsl_sf_bessel_I0_e" ((x :double) (ret sf-result))
77  :documentation                        ; FDL
78  "The regular modified cylindrical Bessel function of zeroth order, I_0(x).")
79
80(defmfun cylindrical-bessel-I1 (x)
81  "gsl_sf_bessel_I1_e" ((x :double) (ret sf-result))
82  :documentation                        ; FDL
83  "The regular modified cylindrical Bessel function of first order, I_1(x).")
84
85(defmfun cylindrical-bessel-In (n x)
86  "gsl_sf_bessel_In_e" ((n :int) (x :double) (ret sf-result))
87  :documentation                        ; FDL
88  "The regular modified cylindrical Bessel function of order n, I_n(x).")
89
90(defmfun cylindrical-bessel-In-array (x array &optional (nmin 0))
91  "gsl_sf_bessel_In_array"
92  ((nmin :int) ((+ nmin (dim0 array) -1) :int) (x :double)
93   ((gsl-array array) :pointer))
94  :invalidate (array)
95  :documentation                        ; FDL
96  "The values of the regular modified cylindrical Bessel functions
97   I_n(x) for n from from nmin to nmin+length(array)-1 inclusive.
98   The values are computed using recurrence relations for efficiency, and
99   therefore may differ slightly from the exact values.")
100
101(defmfun cylindrical-bessel-I0-scaled (x)
102  "gsl_sf_bessel_I0_scaled_e" ((x :double) (ret sf-result))
103  :documentation                        ; FDL
104  "The scaled regular modified cylindrical Bessel function of zeroth order,
105  \exp(-|x|) I_0(x).")
106
107(defmfun cylindrical-bessel-I1-scaled (x)
108  "gsl_sf_bessel_I1_scaled_e" ((x :double) (ret sf-result))
109  :documentation                        ; FDL
110  "The scaled regular modified cylindrical Bessel function of first order,
111  \exp(-|x|) I_1(x).")
112
113(defmfun cylindrical-bessel-In-scaled (n x)
114  "gsl_sf_bessel_In_scaled_e" ((n :int) (x :double) (ret sf-result))
115  :documentation                        ; FDL
116  "The scaled regular modified cylindrical Bessel function of order n,
117  \exp(-|x|) I_n(x)}.")
118
119(defmfun cylindrical-bessel-In-scaled-array (x array &optional (nmin 0))
120  "gsl_sf_bessel_In_scaled_array"
121  ((nmin :int) ((+ nmin (dim0 array) -1) :int) (x :double)
122   ((gsl-array array) :pointer))
123  :invalidate (array)
124  :documentation                        ; FDL
125  ;; Bug in original documentation?  doesn't say "modified"
126  "The values of the scaled regular modified cylindrical Bessel
127  functions I_n(x) for n from from nmin to nmin+length(array)-1
128  inclusive. The values are computed using recurrence
129  relations for efficiency, and therefore may differ slightly from the
130  exact values.")
131
132;;;;****************************************************************************
133;;;; Irregular Modified Cylindrical Bessel Functions
134;;;;****************************************************************************
135
136(defmfun cylindrical-bessel-K0 (x)
137  "gsl_sf_bessel_K0_e" ((x :double) (ret sf-result))
138  :documentation                        ; FDL
139  "The irregular modified cylindrical Bessel function of zeroth order,
140  K_0(x).")
141
142(defmfun cylindrical-bessel-K1 (x)
143  "gsl_sf_bessel_K1_e" ((x :double) (ret sf-result))
144  :documentation                        ; FDL
145  "The irregular modified cylindrical Bessel function of first order, K_1(x).")
146
147(defmfun cylindrical-bessel-Kn (n x)
148  "gsl_sf_bessel_Kn_e" ((n :int) (x :double) (ret sf-result))
149  :documentation                        ; FDL
150  "The irregular modified cylindrical Bessel function of order n, K_n(x).")
151
152(defmfun cylindrical-bessel-Kn-array (x array &optional (nmin 0))
153  "gsl_sf_bessel_Kn_array"
154  ((nmin :int) ((+ nmin (dim0 array) -1) :int) (x :double)
155   ((gsl-array array) :pointer))
156  :invalidate (array)
157  :documentation                        ; FDL
158  "The values of the irregular modified cylindrical Bessel functions
159   K_n(x) for n from from nmin to nmin+length(array)-1 inclusive.
160   The values are computed using recurrence relations for efficiency, and
161   therefore may differ slightly from the exact values.")
162
163(defmfun cylindrical-bessel-K0-scaled (x)
164  "gsl_sf_bessel_K0_scaled_e" ((x :double) (ret sf-result))
165  :documentation                        ; FDL
166  "The scaled irregular modified cylindrical Bessel function of zeroth order,
167  \exp(-|x|) K_0(x).")
168
169(defmfun cylindrical-bessel-K1-scaled (x)
170  "gsl_sf_bessel_K1_scaled_e" ((x :double) (ret sf-result))
171  :documentation                        ; FDL
172  "The scaled irregular modified cylindrical Bessel function of first order,
173   \exp(-|x|) K_1(x).")
174
175(defmfun cylindrical-bessel-Kn-scaled (n x)
176  "gsl_sf_bessel_Kn_scaled_e" ((n :int) (x :double) (ret sf-result))
177  :documentation                        ; FDL
178  "The scaled irregular modified cylindrical Bessel function of order n,
179  \exp(-|x|) K_n(x).")
180
181(defmfun cylindrical-bessel-Kn-scaled-array (x array &optional (nmin 0))
182  "gsl_sf_bessel_Kn_scaled_array"
183  ((nmin :int) ((+ nmin (dim0 array) -1) :int) (x :double)
184   ((gsl-array array) :pointer))
185  :invalidate (array)
186  :documentation                        ; FDL
187  "The values of the scaled irregular cylindrical
188   Bessel functions \exp(x) K_n(x) for n from from nmin to
189   nmin+length(array)-1 inclusive.
190   The start of the range nmin must be positive
191   or zero.  The domain of the function is x>0. The values are
192   computed using recurrence relations for efficiency, and therefore
193   may differ slightly from the exact values.")
194
195;;;;****************************************************************************
196;;;; Regular Spherical Bessel Functions
197;;;;****************************************************************************
198
199(defmfun spherical-bessel-j0 (x)
200  "gsl_sf_bessel_j0_e" ((x :double) (ret sf-result))
201  :documentation                        ; FDL
202  "The regular spherical Bessel function of zeroth order, j_0(x) = \sin(x)/x.")
203
204(defmfun spherical-bessel-j1 (x)
205  "gsl_sf_bessel_j1_e" ((x :double) (ret sf-result))
206  :documentation                        ; FDL
207  "The regular spherical Bessel function of first order, j_1(x)
208   = (\sin(x)/x - \cos(x))/x.")
209
210(defmfun spherical-bessel-j2 (x)
211  "gsl_sf_bessel_j2_e" ((x :double) (ret sf-result))
212  :documentation                        ; FDL
213  "The regular spherical Bessel function of second order, j_2(x)
214   = ((3/x^2 - 1)\sin(x) - 3\cos(x)/x)/x.")
215
216(defmfun spherical-bessel-jl (l x)
217  "gsl_sf_bessel_jl_e" ((l :int) (x :double) (ret sf-result))
218  :documentation                        ; FDL
219  "The regular spherical Bessel function of order
220   l, j_l(x), for l >= 0 and x >= 0.")
221
222(defmfun spherical-bessel-jl-array (x array)
223  "gsl_sf_bessel_jl_array"
224  (((1- (dim0 array)) :int) (x :double) ((gsl-array array) :pointer))
225  :invalidate (array)
226  :documentation                        ; FDL
227  "The values of the regular spherical Bessel
228  functions j_l(x) for l from 0 to length(array)-1 and x >= 0.
229  The values are computed using recurrence relations for
230  efficiency, and therefore may differ slightly from the exact values.")
231
232(defmfun spherical-bessel-jl-steed-array (x array)
233  "gsl_sf_bessel_jl_steed_array"
234  (((1- (dim0 array)) :int) (x :double) ((gsl-array array) :pointer))
235  :invalidate (array)
236  :documentation                        ; FDL
237  "Uses Steed's method to compute the values of the regular spherical
238  Bessel functions j_l(x) for l from 0 to length(array)-1
239  inclusive for x >= 0. The Steed/Barnett algorithm is described in
240  Comp. Phys. Comm. 21, 297 (1981).  Steed's method is more
241  stable than the recurrence used in the other functions but is also
242  slower.")
243
244;;;;****************************************************************************
245;;;; Irregular Spherical Bessel Functions
246;;;;****************************************************************************
247
248(defmfun spherical-bessel-y0 (x)
249  "gsl_sf_bessel_y0_e" ((x :double) (ret sf-result))
250  :documentation                        ; FDL
251  "The irregular spherical Bessel function of zeroth order,
252  y_0(x) = -\cos(x)/x.")
253
254(defmfun spherical-bessel-y1 (x)
255  "gsl_sf_bessel_y1_e" ((x :double) (ret sf-result))
256  :documentation                        ; FDL
257  "The irregular spherical Bessel function of first order,
258  y_1(x) = -(\cos(x)/x + \sin(x))/x.")
259
260(defmfun spherical-bessel-y2 (x)
261  "gsl_sf_bessel_y2_e" ((x :double) (ret sf-result))
262  :documentation                        ; FDL
263  "The irregular spherical Bessel function of second order,
264  y_2(x) = (-3/x^3 + 1/x)\cos(x) - (3/x^2)\sin(x).")
265
266(defmfun spherical-bessel-yl (l x)
267  "gsl_sf_bessel_yl_e" ((l :int) (x :double) (ret sf-result))
268  :documentation                        ; FDL
269  "The irregular spherical Bessel function of order l, y_l(x), for l >= 0.")
270
271(defmfun spherical-bessel-yl-array (x array)
272  "gsl_sf_bessel_yl_array"
273  (((1- (dim0 array)) :int) (x :double) ((gsl-array array) :pointer))
274  :invalidate (array)
275  :documentation                        ; FDL
276  "The irregular spherical Bessel functions y_l(x) for l
277  from 0 to length(array)-1.  The values are computed using
278  recurrence relations for efficiency,
279  and therefore may differ slightly from the exact values.")
280
281;;;;****************************************************************************
282;;;; Regular Modified Spherical Bessel Functions
283;;;;****************************************************************************
284
285(defmfun spherical-bessel-i0-scaled (x)
286  "gsl_sf_bessel_i0_scaled_e" ((x :double) (ret sf-result))
287  :documentation                        ; FDL
288  "The scaled regular modified spherical Bessel function of zeroth
289  order, \exp(-|x|) i_0(x).")
290
291(defmfun spherical-bessel-i1-scaled (x)
292  "gsl_sf_bessel_i1_scaled_e" ((x :double) (ret sf-result))
293  :documentation                        ; FDL
294  "The scaled regular modified spherical Bessel function of first order,
295  \exp(-|x|) i_1(x).")
296
297(defmfun spherical-bessel-i2-scaled (x)
298  "gsl_sf_bessel_i2_scaled_e" ((x :double) (ret sf-result))
299  :documentation                        ; FDL
300  "The scaled regular modified spherical Bessel function of second order,
301   \exp(-|x|) i_2(x).")
302
303(defmfun spherical-bessel-il-scaled (n x)
304  "gsl_sf_bessel_il_scaled_e" ((n :int) (x :double) (ret sf-result))
305  :documentation                        ; FDL
306  "The scaled regular modified spherical Bessel function of order l,
307   \exp(-|x|) i_l(x).")
308
309(defmfun spherical-bessel-il-scaled-array (x array)
310  "gsl_sf_bessel_il_scaled_array"
311  (((1- (dim0 array)) :int) (x :double) ((gsl-array array) :pointer))
312  :invalidate (array)
313  :documentation                        ; FDL
314  "The values of the scaled regular modified cylindrical Bessel
315  functions \exp(-|x|) i_l(x) for l from 0 to length(array)-1
316  inclusive.  The values are computed using recurrence relations
317  for efficiency, and therefore may differ slightly from the exact values.")
318
319;;;;****************************************************************************
320;;;; Irregular Modified Spherical Bessel Functions
321;;;;****************************************************************************
322
323(defmfun spherical-bessel-k0-scaled (x)
324  "gsl_sf_bessel_k0_scaled_e" ((x :double) (ret sf-result))
325  :documentation                        ; FDL
326  "The scaled irregular modified spherical Bessel function of zeroth
327  order, \exp(x) k_0(x), for x>0.")
328
329(defmfun spherical-bessel-k1-scaled (x)
330  "gsl_sf_bessel_k1_scaled_e" ((x :double) (ret sf-result))
331  :documentation                        ; FDL
332  "The scaled irregular modified spherical Bessel function of first order,
333   \exp(x) k_1(x), for x>0.")
334
335(defmfun spherical-bessel-k2-scaled (x)
336  "gsl_sf_bessel_k2_scaled_e" ((x :double) (ret sf-result))
337  :documentation                        ; FDL
338  "The scaled irregular modified spherical Bessel function of second order,
339  \exp(x) k_2(x), for x>0.")
340
341(defmfun spherical-bessel-kl-scaled (n x)
342  "gsl_sf_bessel_il_scaled_e" ((n :int) (x :double) (ret sf-result))
343  :documentation                        ; FDL
344  "The scaled irregular modified spherical Bessel function of order l,
345   \exp(x) k_l(x), for x>0.")
346
347(defmfun spherical-bessel-kl-scaled-array (x array)
348  "gsl_sf_bessel_kl_scaled_array"
349  (((1- (dim0 array)) :int) (x :double) ((gsl-array array) :pointer))
350  :invalidate (array)
351  :documentation                        ; FDL
352  "The values of the scaled irregular modified spherical Bessel
353  functions \exp(x) k_l(x) for l from 0 to length(array)-1
354  inclusive x>0.  The values are computed using recurrence
355  relations for efficiency, and therefore may differ slightly
356  from the exact values.")
357
358;;;;****************************************************************************
359;;;; Regular Bessel Function - Fractional Order
360;;;;****************************************************************************
361
362(defmfun bessel-Jnu (nu x)
363  "gsl_sf_bessel_Jnu_e" ((nu :double) (x :double) (ret sf-result))
364  :documentation                        ; FDL
365  "The regular cylindrical Bessel function of fractional order
366  \nu, J_\nu(x).")
367
368(defmfun spherical-Jnu-array (nu v)
369  "gsl_sf_bessel_sequence_Jnu_e"
370  ((nu :double) :mode ((dim0 v) :int) ((gsl-array v) :pointer))
371  :invalidate (v)
372  :documentation                        ; FDL
373  "The regular cylindrical Bessel function of
374  fractional order \nu, J_\nu(x), evaluated at a series of
375  x values.  The array v contains the x values.
376  They are assumed to be strictly ordered and positive.
377  The array is over-written with the values of J_\nu(x_i).")
378
379;;;;****************************************************************************
380;;;; Irregular Bessel Function - Fractional Order
381;;;;****************************************************************************
382
383(defmfun bessel-Ynu (nu x)
384  "gsl_sf_bessel_Ynu_e" ((nu :double) (x :double) (ret sf-result))
385  :documentation                        ; FDL
386  "The irregular cylindrical Bessel function of fractional order
387  \nu, Y_\nu(x).")
388
389;;;;****************************************************************************
390;;;; Regular Modified Bessel Functions - Fractional Order
391;;;;****************************************************************************
392
393(defmfun bessel-Inu (nu x)
394  "gsl_sf_bessel_Inu_e" ((nu :double) (x :double) (ret sf-result))
395  :documentation                        ; FDL
396  "The regular modified Bessel function of fractional order
397  \nu, I_\nu(x) for x>0, \nu>0.")
398
399(defmfun bessel-Inu-scaled (nu x)
400  "gsl_sf_bessel_Inu_scaled_e" ((nu :double) (x :double) (ret sf-result))
401  :documentation                        ; FDL
402  "The scaled regular modified Bessel function of fractional order
403  \nu, \exp(-|x|)I_\nu(x) for x>0, \nu>0.")
404
405;;;;****************************************************************************
406;;;; Irregular Modified Bessel Functions - Fractional Order
407;;;;****************************************************************************
408
409(defmfun bessel-Knu (nu x)
410  "gsl_sf_bessel_Knu_e" ((nu :double) (x :double) (ret sf-result))
411  :documentation                        ; FDL
412  "The irregular modified Bessel function of fractional order \nu,
413   K_\nu(x) for x>0, \nu>0.")
414
415(defmfun bessel-lnKnu (nu x)
416  "gsl_sf_bessel_lnKnu_e" ((nu :double) (x :double) (ret sf-result))
417  :documentation                        ; FDL
418  "The logarithm of the irregular modified Bessel function of fractional
419   order \nu, \ln(K_\nu(x)) for x>0, \nu>0.")
420
421(defmfun bessel-Knu-scaled (nu x)
422  "gsl_sf_bessel_Knu_scaled_e" ((nu :double) (x :double) (ret sf-result))
423  :documentation                        ; FDL
424  "The scaled irregular modified Bessel function of fractional order
425   \nu, \exp(+|x|) K_\nu(x) for x>0, \nu>0.")
426
427;;;;****************************************************************************
428;;;; Zeros of Regular Bessel Functions
429;;;;****************************************************************************
430
431(defmfun bessel-zero-J0 (s)
432  "gsl_sf_bessel_zero_J0_e" ((s :int) (ret sf-result))
433  :documentation                        ; FDL
434  "The location of the s-th positive zero of the Bessel function
435  J_0(x).")
436
437(defmfun bessel-zero-J1 (s)
438  "gsl_sf_bessel_zero_J1_e" ((s :int) (ret sf-result))
439  :documentation                        ; FDL
440  "The location of the s-th positive zero of the Bessel function
441  J_1(x).")
442
443(defmfun bessel-zero-Jnu (nu s)
444  "gsl_sf_bessel_zero_Jnu_e" ((nu :double) (s :int) (ret sf-result))
445  :documentation                        ; FDL
446  "These routines compute the location of the s-th positive zero
447  of the Bessel function J_\nu(x).  The current implementation
448  does not support negative values of nu.")
449
450;;;;****************************************************************************
451;;;; Examples and unit test
452;;;;****************************************************************************
453
454#|
455
456;; This bizarrely causes a division-by-zero error
457;;          (bessel-jnu 3.0d0 4.0d0)
458;; in macroexpansion the form from within SLIME using SBCL (expands
459;; fine from shell)
460
461(make-tests bessel
462            (cylindrical-bessel-J0 4.0d0)
463            (cylindrical-bessel-J1 4.0d0)
464            (cylindrical-bessel-Jn 2 4.0d0)
465            (letm ((besarr (vector-double-float 4)))
466              (cylindrical-bessel-Jn-array 2.0d0 besarr 2)
467              (data besarr))
468            (cylindrical-bessel-Y0 4.0d0)
469            (cylindrical-bessel-Y1 4.0d0)
470            (cylindrical-bessel-Yn 3 4.0d0)
471            (letm ((besarr (vector-double-float 4)))
472              (cylindrical-bessel-Yn-array 2.0d0 besarr 2)
473              (data besarr))
474            (cylindrical-bessel-I0 4.0d0)
475            (cylindrical-bessel-I1 4.0d0)
476            (cylindrical-bessel-In 3 4.0d0)
477            (letm ((besarr (vector-double-float 4)))
478              (cylindrical-bessel-In-array 2.0d0 besarr 2)
479              (data besarr))
480            (cylindrical-bessel-I0-scaled 4.0d0)
481            (cylindrical-bessel-I1-scaled 4.0d0)
482            (cylindrical-bessel-In-scaled 3 4.0d0)
483            (letm ((besarr (vector-double-float 4)))
484              (cylindrical-bessel-In-scaled-array 2.0d0 besarr 2)
485              (data besarr))
486            (cylindrical-bessel-K0 4.0d0)
487            (cylindrical-bessel-K1 4.0d0)
488            (cylindrical-bessel-Kn 2 4.0d0)
489            (letm ((besarr (vector-double-float 4)))
490              (cylindrical-bessel-Kn-array 2.0d0 besarr 2)
491              (data besarr))
492            (cylindrical-bessel-K0-scaled 4.0d0)
493            (cylindrical-bessel-K1-scaled 4.0d0)
494            (cylindrical-bessel-Kn-scaled 2 4.0d0)
495            (letm ((besarr (vector-double-float 4)))
496              (cylindrical-bessel-Kn-array 2.0d0 besarr 2)
497              (data besarr))
498            (spherical-bessel-j0 4.0d0)
499            (spherical-bessel-j1 4.0d0)
500            (spherical-bessel-j2 4.0d0)
501            (spherical-bessel-jl 3 4.0d0)
502            (letm ((besarr (vector-double-float 4)))
503              (spherical-bessel-jl-array 4.0d0 besarr)
504              (data besarr))
505            (letm ((besarr (vector-double-float 4)))
506              (spherical-bessel-jl-steed-array 4.0d0 besarr)
507              (data besarr))
508            (spherical-bessel-y0 4.0d0)
509            (spherical-bessel-y1 4.0d0)
510            (spherical-bessel-y2 4.0d0)
511            (spherical-bessel-yl 2 4.0d0)
512            (letm ((besarr (vector-double-float 4)))
513              (spherical-bessel-yl-array 4.0d0 besarr)
514              (data besarr))
515            (spherical-bessel-i0-scaled 4.0d0)
516            (spherical-bessel-i1-scaled 4.0d0)
517            (spherical-bessel-i2-scaled 4.0d0)
518            (spherical-bessel-il-scaled 3 4.0d0)
519            (letm ((besarr (vector-double-float 4)))
520              (spherical-bessel-il-scaled-array 4.0d0 besarr)
521              (data besarr))
522            (spherical-bessel-k0-scaled 4.0d0)
523            (spherical-bessel-k1-scaled 4.0d0)
524
525            (spherical-bessel-k2-scaled 4.0d0)
526            (spherical-bessel-kl-scaled 3 4.0d0)
527            (letm ((besarr (vector-double-float 4)))
528              (spherical-bessel-kl-scaled-array 4.0d0 besarr)
529              (data besarr))
530            (bessel-jnu 3.0d0 4.0d0)
531            (letm ((besarr (vector-double-float #(1.0d0 2.0d0 3.0d0))))
532              (spherical-Jnu-array 0.5d0 besarr)
533              (data besarr))
534            (bessel-Ynu 3.0d0 4.0d0)
535            (bessel-Inu 3.0d0 4.0d0)
536            (bessel-Inu-scaled 3.0d0 4.0d0)
537            (bessel-Knu 3.0d0 4.0d0)
538            (bessel-lnKnu 3.0d0 4.0d0)
539            (bessel-Knu-scaled 3.0d0 4.0d0)
540            (bessel-zero-J0 5)
541            (bessel-zero-J1 5)
542            (bessel-zero-Jnu 2.0d0 5))
543
544|#
545
546(LISP-UNIT:DEFINE-TEST BESSEL
547  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
548   (LIST -0.3971498098638474d0 4.334456411751256d-16)
549   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-J0 4.0d0)))
550  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
551   (LIST -0.0660433280235491d0 2.1409770694795335d-16)
552   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-J1 4.0d0)))
553  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
554   (LIST 0.3641281458520729d0 3.974061014982464d-16)
555   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-JN 2 4.0d0)))
556  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
557   (LIST
558    #(0.35283402861563773d0 0.12894324947440206d0
559      0.033995719807568436d0 0.007039629755871686d0))
560   (MULTIPLE-VALUE-LIST
561    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
562      (CYLINDRICAL-BESSEL-JN-ARRAY 2.0d0 BESARR 2)
563      (DATA BESARR))))
564  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
565   (LIST -0.016940739325064968d0 1.8993556609468549d-16)
566   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-Y0 4.0d0)))
567  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
568   (LIST 0.3979257105570999d0 3.1396236150465943d-16)
569   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-Y1 4.0d0)))
570  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
571   (LIST -0.18202211595348539d0 3.355735727760045d-16)
572   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-YN 3 4.0d0)))
573  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
574   (LIST
575    #(-0.6174081041906827d0 -1.127783776840428d0
576      -2.7659432263306014d0 -9.935989128481978d0))
577   (MULTIPLE-VALUE-LIST
578    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
579      (CYLINDRICAL-BESSEL-YN-ARRAY 2.0d0 BESARR 2)
580      (DATA BESARR))))
581  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
582   (LIST 11.301921952136329d0 2.7297681442535893d-14)
583   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-I0 4.0d0)))
584  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
585   (LIST 9.759465153704449d0 1.9210136786427457d-14)
586   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-I1 4.0d0)))
587  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
588   (LIST 3.3372757784203446d0 8.06056628872663d-15)
589   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-IN 3 4.0d0)))
590  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
591   (LIST
592    #(0.6889484476987382d0 0.21273995923985267d0
593      0.05072856997918024d0 0.009825679323131702d0))
594   (MULTIPLE-VALUE-LIST
595    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
596      (CYLINDRICAL-BESSEL-IN-ARRAY 2.0d0 BESARR 2)
597      (DATA BESARR))))
598  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
599   (LIST 0.2070019212239867d0 2.241925168997723d-16)
600   (MULTIPLE-VALUE-LIST
601    (CYLINDRICAL-BESSEL-I0-SCALED 4.0d0)))
602  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
603   (LIST 0.1787508395024353d0 1.1370197115937822d-16)
604   (MULTIPLE-VALUE-LIST
605    (CYLINDRICAL-BESSEL-I1-SCALED 4.0d0)))
606  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
607   (LIST 0.0611243380296663d0 9.334510342661594d-17)
608   (MULTIPLE-VALUE-LIST
609    (CYLINDRICAL-BESSEL-IN-SCALED 3 4.0d0)))
610  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
611   (LIST
612    #(0.09323903330473338d0 0.028791222639470898d0
613      0.006865365386320685d0 0.0013297610941881578d0))
614   (MULTIPLE-VALUE-LIST
615    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
616      (CYLINDRICAL-BESSEL-IN-SCALED-ARRAY 2.0d0 BESARR
617                                          2)
618      (DATA BESARR))))
619  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
620   (LIST 0.011159676085853023d0 2.0424662435034432d-17)
621   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-K0 4.0d0)))
622  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
623   (LIST 0.01248349888726843d0 1.767412161819488d-17)
624   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-K1 4.0d0)))
625  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
626   (LIST 0.017401425529487143d0 2.257461693414273d-16)
627   (MULTIPLE-VALUE-LIST (CYLINDRICAL-BESSEL-KN 2 4.0d0)))
628  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
629   (LIST
630    #(0.2537597545660558d0 0.6473853909486341d0
631      2.1959159274119586d0 9.431049100596468d0))
632   (MULTIPLE-VALUE-LIST
633    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
634      (CYLINDRICAL-BESSEL-KN-ARRAY 2.0d0 BESARR 2)
635      (DATA BESARR))))
636  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
637   (LIST 0.6092976692566953d0 3.0340122249326356d-16)
638   (MULTIPLE-VALUE-LIST
639    (CYLINDRICAL-BESSEL-K0-SCALED 4.0d0)))
640  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
641   (LIST 0.681575945185671d0 3.596132979136138d-16)
642   (MULTIPLE-VALUE-LIST
643    (CYLINDRICAL-BESSEL-K1-SCALED 4.0d0)))
644  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
645   (LIST 0.9500856418495256d0 1.1481477659153143d-14)
646   (MULTIPLE-VALUE-LIST
647    (CYLINDRICAL-BESSEL-KN-SCALED 2 4.0d0)))
648  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
649   (LIST
650    #(0.2537597545660558d0 0.6473853909486341d0
651      2.1959159274119586d0 9.431049100596468d0))
652   (MULTIPLE-VALUE-LIST
653    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
654      (CYLINDRICAL-BESSEL-KN-ARRAY 2.0d0 BESARR 2)
655      (DATA BESARR))))
656  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
657   (LIST -0.18920062382698205d0 1.6804391107692678d-16)
658   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-J0 4.0d0)))
659  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
660   (LIST 0.11611074925915747d0 2.387125482192573d-16)
661   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-J1 4.0d0)))
662  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
663   (LIST 0.27628368577135015d0 3.680838111259856d-16)
664   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-J2 4.0d0)))
665  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
666   (LIST 0.22924385795503022d0 4.581212568400321d-16)
667   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-JL 3 4.0d0)))
668  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
669   (LIST
670    #(-0.18920062382698202d0 0.11611074925915743d0
671      0.2762836857713501d0 0.22924385795503022d0))
672   (MULTIPLE-VALUE-LIST
673    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
674      (SPHERICAL-BESSEL-JL-ARRAY 4.0d0 BESARR)
675      (DATA BESARR))))
676  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
677   (LIST
678    #(-0.18920062382698208d0 0.11611074925915742d0
679      0.27628368577135015d0 0.22924385795503024d0))
680   (MULTIPLE-VALUE-LIST
681    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
682      (SPHERICAL-BESSEL-JL-STEED-ARRAY 4.0d0 BESARR)
683      (DATA BESARR))))
684  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
685   (LIST 0.16341090521590299d0 1.4513803955642766d-16)
686   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-Y0 4.0d0)))
687  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
688   (LIST 0.2300533501309578d0 1.5324631572452525d-16)
689   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-Y1 4.0d0)))
690  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
691   (LIST 0.009129107382315343d0 1.6876604955506113d-16)
692   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-Y2 4.0d0)))
693  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
694   (LIST 0.009129107382315343d0 1.6876604955506113d-16)
695   (MULTIPLE-VALUE-LIST (SPHERICAL-BESSEL-YL 2 4.0d0)))
696  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
697   (LIST
698    #(0.16341090521590299d0 0.2300533501309578d0
699      0.009129107382315343d0 -0.21864196590306362d0))
700   (MULTIPLE-VALUE-LIST
701    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
702      (SPHERICAL-BESSEL-YL-ARRAY 4.0d0 BESARR)
703      (DATA BESARR))))
704  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
705   (LIST 0.12495806717151219d0 5.5492529314587895d-17)
706   (MULTIPLE-VALUE-LIST
707    (SPHERICAL-BESSEL-I0-SCALED 4.0d0)))
708  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
709   (LIST 0.09380241603560975d0 4.165664081928078d-17)
710   (MULTIPLE-VALUE-LIST
711    (SPHERICAL-BESSEL-I1-SCALED 4.0d0)))
712  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
713   (LIST 0.05460625514480487d0 2.425004870012731d-17)
714   (MULTIPLE-VALUE-LIST
715    (SPHERICAL-BESSEL-I2-SCALED 4.0d0)))
716  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
717   (LIST 0.02554459710460367d0 5.842201171222646d-16)
718   (MULTIPLE-VALUE-LIST
719    (SPHERICAL-BESSEL-IL-SCALED 3 4.0d0)))
720  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
721   (LIST
722    #(0.12495806717151212d0 0.09380241603560971d0
723      0.05460625514480483d0 0.02554459710460367d0))
724   (MULTIPLE-VALUE-LIST
725    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
726      (SPHERICAL-BESSEL-IL-SCALED-ARRAY 4.0d0 BESARR)
727      (DATA BESARR))))
728  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
729   (LIST 0.39269908169872414d0 1.743934249004316d-16)
730   (MULTIPLE-VALUE-LIST
731    (SPHERICAL-BESSEL-K0-SCALED 4.0d0)))
732  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
733   (LIST 0.4908738521234052d0 2.1799178112553949d-16)
734   (MULTIPLE-VALUE-LIST
735    (SPHERICAL-BESSEL-K1-SCALED 4.0d0)))
736  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
737   (LIST 0.760854470791278d0 3.378872607445862d-16)
738   (MULTIPLE-VALUE-LIST
739    (SPHERICAL-BESSEL-K2-SCALED 4.0d0)))
740  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
741   (LIST 0.02554459710460367d0 5.842201171222646d-16)
742   (MULTIPLE-VALUE-LIST
743    (SPHERICAL-BESSEL-KL-SCALED 3 4.0d0)))
744  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
745   (LIST
746    #(0.39269908169872414d0 0.4908738521234052d0
747      0.760854470791278d0 1.4419419406125027d0))
748   (MULTIPLE-VALUE-LIST
749    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT 4)))
750      (SPHERICAL-BESSEL-KL-SCALED-ARRAY 4.0d0 BESARR)
751      (DATA BESARR))))
752  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
753   (LIST 0.43017147387562193d0 7.641380397338472d-16)
754   (MULTIPLE-VALUE-LIST (BESSEL-JNU 3.0d0 4.0d0)))
755  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
756   (LIST
757    #(0.6713967071418024d0 0.5130161365618323d0
758      0.06500818287738516d0))
759   (MULTIPLE-VALUE-LIST
760    (LETM ((BESARR (VECTOR-DOUBLE-FLOAT #(1.0d0 2.0d0 3.0d0))))
761      (SPHERICAL-JNU-ARRAY 0.5d0 BESARR)
762      (DATA BESARR))))
763  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
764   (LIST -0.1820221159534852d0 2.020851441225493d-15)
765   (MULTIPLE-VALUE-LIST (BESSEL-YNU 3.0d0 4.0d0)))
766  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
767   (LIST 3.3372757784203437d0 1.1856385307923545d-14)
768   (MULTIPLE-VALUE-LIST (BESSEL-INU 3.0d0 4.0d0)))
769  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
770   (LIST 0.061124338029666284d0 1.3572329489101316d-16)
771   (MULTIPLE-VALUE-LIST (BESSEL-INU-SCALED 3.0d0 4.0d0)))
772  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
773   (LIST 0.029884924416755682d0 1.0617257976532701d-16)
774   (MULTIPLE-VALUE-LIST (BESSEL-KNU 3.0d0 4.0d0)))
775  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
776   (LIST -3.5104011258456183d0 4.776268519767339d-15)
777   (MULTIPLE-VALUE-LIST (BESSEL-LNKNU 3.0d0 4.0d0)))
778  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
779   (LIST 1.6316615870352025d0 5.072223134504136d-15)
780   (MULTIPLE-VALUE-LIST (BESSEL-KNU-SCALED 3.0d0 4.0d0)))
781  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
782   (LIST 14.930917708487813d0 4.4792753125463437d-14)
783   (MULTIPLE-VALUE-LIST (BESSEL-ZERO-J0 5)))
784  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
785   (LIST 16.470630050877624d0 3.2941260101755246d-13)
786   (MULTIPLE-VALUE-LIST (BESSEL-ZERO-J1 5)))
787  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
788   (LIST 17.95981949498783d0 3.591963898997566d-14)
789   (MULTIPLE-VALUE-LIST (BESSEL-ZERO-JNU 2.0d0 5))))
790
791
Note: See TracBrowser for help on using the browser.