/[cl-gsl]/cl-gsl/sf.lisp
ViewVC logotype

Contents of /cl-gsl/sf.lisp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations)
Wed Mar 9 03:10:28 2005 UTC (9 years, 1 month ago) by edenny
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +9 -3 lines
Fix bugs detected by unit tests.
1 edenny 1.1 ;;;; -*- Mode: Lisp; Synatx: ANSI-Common-Lisp; Base: 10 -*-
2     ;;;;
3     ;;;; Copyright (C) 2005 Edgar Denny <edgardenny@comcast.net>
4     ;;;; This file is part of CL-GSL.
5     ;;;;
6     ;;;; This program is free software; you can redistribute it and/or modify
7     ;;;; it under the terms of the GNU General Public License as published by
8     ;;;; the Free Software Foundation; either version 2 of the License, or
9     ;;;; (at your option) any later version.
10     ;;;;
11     ;;;; This program is distributed in the hope that it will be useful,
12     ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13     ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     ;;;; GNU General Public License for more details.
15     ;;;;
16     ;;;; You should have received a copy of the GNU General Public License
17     ;;;; along with this program; if not, write to the Free Software
18     ;;;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19    
20     (in-package #:cl-gsl-sf)
21    
22     (def-foreign-struct gsl-sf-result
23     (val :double)
24     (err :double))
25    
26     (def-foreign-struct gsl-sf-result-e10
27     (val :double)
28     (err :double)
29     (e10 :int))
30    
31     (define-foreign-type gsl-sf-result-ptr (* gsl-sf-result))
32     (define-foreign-type gsl-sf-result-e10-ptr (* gsl-sf-result-e10))
33    
34     (defmacro defun-wrapper% (str+symb params+types ret-type)
35     (let ((c-func-str+symb)
36     (c-func-symb)
37     (lisp-func-symb)
38     (let-params)
39     (c-func-params)
40     (lisp-func-params)
41     (cleanup)
42     (declare-params)
43     (ret))
44    
45     (if (consp str+symb)
46     (progn
47     (setq c-func-symb (kmrcl:concat-symbol "gsl-sf-" (cadr str+symb)))
48     (setq c-func-str+symb
49     (list (concatenate 'string "gsl_sf_" (car str+symb))
50     c-func-symb))
51     (setq lisp-func-symb (cadr str+symb)))
52     (progn
53     (setq c-func-symb (kmrcl:concat-symbol
54     "gsl-sf-" (string_->string- str+symb)))
55     (setq c-func-str+symb (concatenate 'string "gsl_sf_" str+symb))
56     (setq lisp-func-symb (kmrcl:concat-symbol
57     (string_->string- str+symb)))))
58    
59     (dolist (elm params+types)
60     (let ((p (car elm))
61     (p-type (cadr elm)))
62     (cond
63     ((eq p-type 'gsl-sf-result-ptr)
64     (let ((val (gensym)))
65     (push `(,val (uffi:allocate-foreign-object 'gsl-sf-result))
66     let-params)
67     (push val c-func-params)
68     (push `(uffi:get-slot-value ,val :double 'val) ret)
69     (push `(uffi:get-slot-value ,val :double 'err) ret)
70     (push `(uffi:free-foreign-object ,val) cleanup)))
71     ((eq p-type 'gsl-sf-result-e10-ptr)
72     (let ((val (gensym)))
73     (push `(,val (uffi:allocate-foreign-object 'gsl-sf-result-e10))
74     let-params)
75     (push val c-func-params)
76     (push `(uffi:get-slot-value ,val :double 'val) ret)
77     (push `(uffi:get-slot-value ,val :double 'err) ret)
78     (push `(uffi:get-slot-value ,val :int 'e10) ret)
79     (push `(uffi:free-foreign-object ,val) cleanup)))
80     (t
81     (push p lisp-func-params)
82     (push (ecase p-type
83     (:double `(double-float ,p))
84     (:int `(integer ,p))
85     (:unsigned-int `(unsigned-byte ,p))
86     (gsl-mode-t `(unsigned-byte ,p)))
87     declare-params)
88     (push p c-func-params)))))
89    
90     (push '(ret-val) let-params)
91    
92     ;; no need to reverse cleanup or let-params
93     (setq c-func-params (nreverse c-func-params))
94     (setq lisp-func-params (nreverse lisp-func-params))
95     (setq ret (nreverse ret))
96    
97     `(progn
98     (defun-foreign ,c-func-str+symb
99     ,params+types
100     ,ret-type)
101    
102     (defun ,lisp-func-symb ,lisp-func-params
103     (declare ,@declare-params)
104     ,(if ret
105     `(let ,let-params
106     (setq ret-val (,c-func-symb ,@c-func-params))
107     (multiple-value-prog1
108     (values ,@ret ret-val)
109     ,@cleanup))
110     `(,c-func-symb ,@c-func-params)))
111    
112     (export '(,lisp-func-symb)))))
113    
114    
115     ;;; Airy Functions
116    
117     (defun-wrapper% "airy_Ai"
118     ((x :double)
119     (mode gsl-mode-t))
120     :double)
121    
122     (defun-wrapper% "airy_Ai_e"
123     ((x :double)
124     (mode gsl-mode-t)
125     (result gsl-sf-result-ptr))
126 edenny 1.2 :int)
127 edenny 1.1
128     (defun-wrapper% "airy_Bi"
129     ((x :double)
130     (mode gsl-mode-t))
131     :double)
132    
133     (defun-wrapper% "airy_Bi_e"
134     ((x :double)
135     (mode gsl-mode-t)
136     (result gsl-sf-result-ptr))
137 edenny 1.2 :int)
138 edenny 1.1
139     (defun-wrapper% "airy_Ai_scaled"
140     ((x :double)
141     (mode gsl-mode-t))
142     :double)
143    
144     (defun-wrapper% "airy_Ai_scaled_e"
145     ((x :double)
146     (mode gsl-mode-t)
147     (result gsl-sf-result-ptr))
148 edenny 1.2 :int)
149 edenny 1.1
150     (defun-wrapper% "airy_Bi_scaled"
151     ((x :double)
152     (mode gsl-mode-t))
153     :double)
154    
155     (defun-wrapper% "airy_Bi_scaled_e"
156     ((x :double)
157     (mode gsl-mode-t)
158     (result gsl-sf-result-ptr))
159 edenny 1.2 :int)
160 edenny 1.1
161     (defun-wrapper% "airy_Ai_deriv"
162     ((x :double)
163     (mode gsl-mode-t))
164     :double)
165    
166     (defun-wrapper% "airy_Ai_deriv_e"
167     ((x :double)
168     (mode gsl-mode-t)
169     (result gsl-sf-result-ptr))
170 edenny 1.2 :int)
171 edenny 1.1
172     (defun-wrapper% "airy_Bi_deriv"
173     ((x :double)
174     (mode gsl-mode-t))
175     :double)
176    
177     (defun-wrapper% "airy_Bi_deriv_e"
178     ((x :double)
179     (mode gsl-mode-t)
180     (result gsl-sf-result-ptr))
181 edenny 1.2 :int)
182 edenny 1.1
183     (defun-wrapper% "airy_Ai_deriv_scaled"
184     ((x :double)
185     (mode gsl-mode-t))
186     :double)
187    
188     (defun-wrapper% "airy_Ai_deriv_scaled_e"
189     ((x :double)
190     (mode gsl-mode-t)
191     (result gsl-sf-result-ptr))
192 edenny 1.2 :int)
193 edenny 1.1
194     (defun-wrapper% "airy_Bi_deriv_scaled"
195     ((x :double)
196     (mode gsl-mode-t))
197     :double)
198    
199     (defun-wrapper% "airy_Bi_deriv_scaled_e"
200     ((x :double)
201     (mode gsl-mode-t)
202     (result gsl-sf-result-ptr))
203 edenny 1.2 :int)
204 edenny 1.1
205     (defun-wrapper% "airy_zero_Ai"
206 edenny 1.2 ((x :unsigned-int))
207 edenny 1.1 :double)
208    
209     (defun-wrapper% "airy_zero_Ai_e"
210 edenny 1.2 ((x :unsigned-int)
211 edenny 1.1 (result gsl-sf-result-ptr))
212 edenny 1.2 :int)
213 edenny 1.1
214     (defun-wrapper% "airy_zero_Bi"
215 edenny 1.2 ((x :unsigned-int))
216 edenny 1.1 :double)
217    
218     (defun-wrapper% "airy_zero_Bi_e"
219 edenny 1.2 ((x :unsigned-int)
220 edenny 1.1 (result gsl-sf-result-ptr))
221 edenny 1.2 :int)
222 edenny 1.1
223     (defun-wrapper% "airy_zero_Ai_deriv"
224 edenny 1.2 ((x :unsigned-int))
225 edenny 1.1 :double)
226    
227     (defun-wrapper% "airy_zero_Ai_deriv_e"
228 edenny 1.2 ((x :unsigned-int)
229 edenny 1.1 (result gsl-sf-result-ptr))
230 edenny 1.2 :int)
231 edenny 1.1
232     (defun-wrapper% "airy_zero_Bi_deriv"
233 edenny 1.2 ((x :unsigned-int))
234 edenny 1.1 :double)
235    
236     (defun-wrapper% "airy_zero_Bi_deriv_e"
237 edenny 1.2 ((x :unsigned-int)
238 edenny 1.1 (result gsl-sf-result-ptr))
239 edenny 1.2 :int)
240 edenny 1.1
241     ;;; Bessel Functions
242    
243     (defun-wrapper% ("bessel_J0" bessel-c-j0)
244     ((x :double))
245     :double)
246    
247     (defun-wrapper% ("bessel_J0_e" bessel-c-j0-e)
248     ((x :double)
249     (result gsl-sf-result-ptr))
250     :int)
251    
252     (defun-wrapper% ("bessel_J1" bessel-c-j1)
253     ((x :double))
254     :double)
255    
256     (defun-wrapper% ("bessel_J1_e" bessel-c-j1-e)
257     ((x :double)
258     (result gsl-sf-result-ptr))
259     :int)
260    
261     (defun-wrapper% ("bessel_Jn" bessel-c-jn)
262     ((n :int)
263     (x :double))
264     :double)
265    
266     (defun-wrapper% ("bessel_Jn_e" bessel-c-jn-e)
267     ((n :int)
268     (x :double)
269     (result gsl-sf-result-ptr))
270     :int)
271    
272     ;; ----------------------------------------------------------------------
273    
274     (defun-foreign "gsl_sf_bessel_Jn_array"
275     ((nmin :int)
276     (nmax :int)
277     (x :double)
278     (result double-ptr))
279     :int)
280    
281     (defun bessel-c-jn-array (nmin nmax x)
282     (declare (integer nmin) (integer nmax) (double-float x))
283     (assert (> nmax nmin))
284     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ (- nmax nmin))))
285     (status (gsl-sf-bessel-jn-array nmin nmax x array-ptr)))
286     (multiple-value-prog1
287     (values (c-array->lisp-vec array-ptr (1+ (- nmax nmin))) status)
288     (uffi:free-foreign-object array-ptr))))
289    
290     ;; ----------------------------------------------------------------------
291    
292     (defun-wrapper% ("bessel_Y0" bessel-c-y0)
293     ((x :double))
294     :double)
295    
296     (defun-wrapper% ("bessel_Y0_e" bessel-c-y0-e)
297     ((x :double)
298     (result gsl-sf-result-ptr))
299     :int)
300    
301     (defun-wrapper% ("bessel_Y1" bessel-c-y1)
302     ((x :double))
303     :double)
304    
305     (defun-wrapper% ("bessel_Y1_e" bessel-c-y1-e)
306     ((x :double)
307     (result gsl-sf-result-ptr))
308     :int)
309    
310     (defun-wrapper% ("bessel_Yn" bessel-c-yn)
311     ((n :int)
312     (x :double))
313     :double)
314    
315     (defun-wrapper% ("bessel_Yn_e" bessel-c-yn-e)
316     ((n :int)
317     (x :double)
318     (result gsl-sf-result-ptr))
319     :int)
320    
321     ;; ----------------------------------------------------------------------
322    
323     (defun-foreign "gsl_sf_bessel_Yn_array"
324     ((nmin :int)
325     (nmax :int)
326     (x :double)
327     (result double-ptr))
328     :int)
329    
330     (defun bessel-c-yn-array (nmin nmax x)
331     (declare (integer nmin) (integer nmax) (double-float x))
332     (assert (> nmax nmin))
333     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ (- nmax nmin))))
334     (status (gsl-sf-bessel-yn-array nmin nmax x array-ptr)))
335     (multiple-value-prog1
336     (values (c-array->lisp-vec array-ptr (1+ (- nmax nmin))) status)
337     (uffi:free-foreign-object array-ptr))))
338    
339     ;; ----------------------------------------------------------------------
340    
341     (defun-wrapper% ("bessel_I0" bessel-c-i0)
342     ((x :double))
343     :double)
344    
345     (defun-wrapper% ("bessel_I0_e" bessel-c-i0-e)
346     ((x :double)
347     (result gsl-sf-result-ptr))
348     :int)
349    
350     (defun-wrapper% ("bessel_I1" bessel-c-i1)
351     ((x :double))
352     :double)
353    
354     (defun-wrapper% ("bessel_I1_e" bessel-c-i1-e)
355     ((x :double)
356     (result gsl-sf-result-ptr))
357     :int)
358    
359     (defun-wrapper% ("bessel_In" bessel-c-in)
360     ((n :int)
361     (x :double))
362     :double)
363    
364     (defun-wrapper% ("bessel_In_e" bessel-c-in-e)
365     ((n :int)
366     (x :double)
367     (result gsl-sf-result-ptr))
368     :int)
369    
370     ;; ----------------------------------------------------------------------
371    
372     (defun-foreign "gsl_sf_bessel_In_array"
373     ((nmin :int)
374     (nmax :int)
375     (x :double)
376     (result double-ptr))
377     :int)
378    
379     (defun bessel-c-in-array (nmin nmax x)
380     (declare (integer nmin) (integer nmax) (double-float x))
381     (assert (> nmax nmin))
382     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ (- nmax nmin))))
383     (status (gsl-sf-bessel-in-array nmin nmax x array-ptr)))
384     (multiple-value-prog1
385     (values (c-array->lisp-vec array-ptr (1+ (- nmax nmin))) status)
386     (uffi:free-foreign-object array-ptr))))
387    
388     ;; ----------------------------------------------------------------------
389    
390     (defun-wrapper% ("bessel_I0_scaled" bessel-c-i0-scaled)
391     ((x :double))
392     :double)
393    
394     (defun-wrapper% ("bessel_I0_scaled_e" bessel-c-i0-scaled-e)
395     ((x :double)
396     (result gsl-sf-result-ptr))
397     :int)
398    
399     (defun-wrapper% ("bessel_I1_scaled" bessel-c-i1-scaled)
400     ((x :double))
401     :double)
402    
403     (defun-wrapper% ("bessel_I1_scaled_e" bessel-c-i1-scaled-e)
404     ((x :double)
405     (result gsl-sf-result-ptr))
406     :int)
407    
408     (defun-wrapper% ("bessel_In_scaled" bessel-c-in-scaled)
409     ((n :int)
410     (x :double))
411     :double)
412    
413     (defun-wrapper% ("bessel_In_scaled_e" bessel-c-in-scaled-e)
414     ((n :int)
415     (x :double)
416     (result gsl-sf-result-ptr))
417     :int)
418    
419    
420     ;; ----------------------------------------------------------------------
421    
422     (defun-foreign "gsl_sf_bessel_In_scaled_array"
423     ((nmin :int)
424     (nmax :int)
425     (x :double)
426     (result double-ptr))
427     :int)
428    
429     (defun bessel-c-in-scaled-array (nmin nmax x)
430     (declare (integer nmin) (integer nmax) (double-float x))
431     (assert (> nmax nmin))
432     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ (- nmax nmin))))
433     (status (gsl-sf-bessel-in-scaled-array nmin nmax x array-ptr)))
434     (multiple-value-prog1
435     (values (c-array->lisp-vec array-ptr (1+ (- nmax nmin))) status)
436     (uffi:free-foreign-object array-ptr))))
437    
438     ;; ----------------------------------------------------------------------
439    
440     (defun-wrapper% ("bessel_K0" bessel-c-k0)
441     ((x :double))
442     :double)
443    
444     (defun-wrapper% ("bessel_K0_e" bessel-c-k0-e)
445     ((x :double)
446     (result gsl-sf-result-ptr))
447     :int)
448    
449     (defun-wrapper% ("bessel_K1" bessel-c-k1)
450     ((x :double))
451     :double)
452    
453     (defun-wrapper% ("bessel_K1_e" bessel-c-k1-e)
454     ((x :double)
455     (result gsl-sf-result-ptr))
456     :int)
457    
458     (defun-wrapper% ("bessel_Kn" bessel-c-kn)
459     ((n :int)
460     (x :double))
461     :double)
462    
463     (defun-wrapper% ("bessel_Kn_e" bessel-c-kn-e)
464     ((n :int)
465     (x :double)
466     (result gsl-sf-result-ptr))
467     :int)
468    
469     ;; ----------------------------------------------------------------------
470    
471     (defun-foreign "gsl_sf_bessel_Kn_array"
472     ((nmin :int)
473     (nmax :int)
474     (x :double)
475     (result double-ptr))
476     :int)
477    
478     (defun bessel-c-kn-array (nmin nmax x)
479     (declare (integer nmin) (integer nmax) (double-float x))
480     (assert (> nmax nmin))
481     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ (- nmax nmin))))
482     (status (gsl-sf-bessel-kn-array nmin nmax x array-ptr)))
483     (multiple-value-prog1
484     (values (c-array->lisp-vec array-ptr (1+ (- nmax nmin))) status)
485     (uffi:free-foreign-object array-ptr))))
486    
487     ;; ----------------------------------------------------------------------
488    
489     (defun-wrapper% ("bessel_K0_scaled" bessel-c-k0-scaled)
490     ((x :double))
491     :double)
492    
493     (defun-wrapper% ("bessel_K0_scaled_e" bessel-c-k0-scaled-e)
494     ((x :double)
495     (result gsl-sf-result-ptr))
496     :int)
497    
498     (defun-wrapper% ("bessel_K1_scaled" bessel-c-k1-scaled)
499     ((x :double))
500     :double)
501    
502     (defun-wrapper% ("bessel_K1_scaled_e" bessel-c-k1-scaled-e)
503     ((x :double)
504     (result gsl-sf-result-ptr))
505     :int)
506    
507     (defun-wrapper% ("bessel_Kn_scaled" bessel-c-kn-scaled)
508     ((n :int)
509     (x :double))
510     :double)
511    
512     (defun-wrapper% ("bessel_Kn_scaled_e" bessel-c-kn-scaled-e)
513     ((n :int)
514     (x :double)
515     (result gsl-sf-result-ptr))
516     :int)
517    
518     ;; ----------------------------------------------------------------------
519    
520     (defun-foreign "gsl_sf_bessel_Kn_scaled_array"
521     ((nmin :int)
522     (nmax :int)
523     (x :double)
524     (result double-ptr))
525     :int)
526    
527     (defun bessel-c-kn-scaled-array (nmin nmax x)
528     (declare (integer nmin) (integer nmax) (double-float x))
529     (assert (> nmax nmin))
530     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ (- nmax nmin))))
531     (status (gsl-sf-bessel-kn-scaled-array nmin nmax x array-ptr)))
532     (multiple-value-prog1
533     (values (c-array->lisp-vec array-ptr (1+ (- nmax nmin))) status)
534     (uffi:free-foreign-object array-ptr))))
535    
536     ;; ----------------------------------------------------------------------
537    
538     (defun-wrapper% ("bessel_j0" bessel-s-j0)
539     ((x :double))
540     :double)
541    
542     (defun-wrapper% ("bessel_j0_e" bessel-s-j0-e)
543     ((x :double)
544     (result gsl-sf-result-ptr))
545     :int)
546    
547     (defun-wrapper% ("bessel_j1" bessel-s-j1)
548     ((x :double))
549     :double)
550    
551     (defun-wrapper% ("bessel_j1_e" bessel-s-j1-e)
552     ((x :double)
553     (result gsl-sf-result-ptr))
554     :int)
555    
556     (defun-wrapper% ("bessel_j2" bessel-s-j2)
557     ((x :double))
558     :double)
559    
560     (defun-wrapper% ("bessel_j2_e" bessel-s-j2-e)
561     ((x :double)
562     (result gsl-sf-result-ptr))
563     :int)
564    
565     (defun-wrapper% ("bessel_jl" bessel-s-jl)
566     ((l :int)
567     (x :double))
568     :double)
569    
570 edenny 1.3 (defun-wrapper% ("bessel_jl_e" bessel-s-jl-e)
571 edenny 1.1 ((l :int)
572     (x :double)
573     (result gsl-sf-result-ptr))
574     :int)
575    
576     ;; ----------------------------------------------------------------------
577    
578     (defun-foreign "gsl_sf_bessel_jl_array"
579     ((lmax :int)
580     (x :double)
581     (result double-ptr))
582     :int)
583    
584     (defun bessel-s-jl-array (lmax x)
585     (declare (integer lmax) (double-float x))
586     (assert (>= lmax 0))
587     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ lmax)))
588     (status (gsl-sf-bessel-jl-array lmax x array-ptr)))
589     (multiple-value-prog1
590     (values (c-array->lisp-vec array-ptr (1+ lmax)) status)
591     (uffi:free-foreign-object array-ptr))))
592    
593     ;; ----------------------------------------------------------------------
594    
595    
596    
597     ;; Function: int gsl_sf_bessel_jl_steed_array (int lmax, double x, double * jl_x_array)
598    
599     (defun-wrapper% ("bessel_y0" bessel-s-y0)
600     ((x :double))
601     :double)
602    
603     (defun-wrapper% ("bessel_y0_e" bessel-s-y0-e)
604     ((x :double)
605     (result gsl-sf-result-ptr))
606     :int)
607    
608     (defun-wrapper% ("bessel_y1" bessel-s-y1)
609     ((x :double))
610     :double)
611    
612     (defun-wrapper% ("bessel_y1_e" bessel-s-y1-e)
613     ((x :double)
614     (result gsl-sf-result-ptr))
615     :int)
616    
617     (defun-wrapper% ("bessel_y2" bessel-s-y2)
618     ((x :double))
619     :double)
620    
621     (defun-wrapper% ("bessel_y2_e" bessel-s-y2-e)
622     ((x :double)
623     (result gsl-sf-result-ptr))
624     :int)
625    
626     (defun-wrapper% ("bessel_yl" bessel-s-yl)
627     ((l :int)
628     (x :double))
629     :double)
630    
631     (defun-wrapper% ("bessel_yl_e" bessel-s-yl-e)
632     ((l :int)
633     (x :double)
634     (result gsl-sf-result-ptr))
635     :int)
636    
637     ;; ----------------------------------------------------------------------
638    
639     (defun-foreign "gsl_sf_bessel_yl_array"
640     ((lmax :int)
641     (x :double)
642     (result double-ptr))
643     :int)
644    
645     (defun bessel-s-yl-array (lmax x)
646     (declare (integer lmax) (double-float x))
647     (assert (>= lmax 0))
648     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ lmax)))
649     (status (gsl-sf-bessel-yl-array lmax x array-ptr)))
650     (multiple-value-prog1
651     (values (c-array->lisp-vec array-ptr (1+ lmax)) status)
652     (uffi:free-foreign-object array-ptr))))
653    
654     ;; ----------------------------------------------------------------------
655    
656     (defun-wrapper% ("bessel_i0_scaled" bessel-s-i0-scaled)
657     ((x :double))
658     :double)
659    
660     (defun-wrapper% ("bessel_i0_scaled_e" bessel-s-i0-scaled-e)
661     ((x :double)
662     (result gsl-sf-result-ptr))
663     :int)
664    
665     (defun-wrapper% ("bessel_i1_scaled" bessel-s-i1-scaled)
666     ((x :double))
667     :double)
668    
669     (defun-wrapper% ("bessel_i1_scaled_e" bessel-s-i1-scaled-e)
670     ((x :double)
671     (result gsl-sf-result-ptr))
672     :int)
673    
674     (defun-wrapper% ("bessel_i2_scaled" bessel-s-i2-scaled)
675     ((x :double))
676     :double)
677    
678     (defun-wrapper% ("bessel_i2_scaled_e" bessel-s-i2-scaled-e)
679     ((x :double)
680     (result gsl-sf-result-ptr))
681     :int)
682    
683     (defun-wrapper% ("bessel_il_scaled" bessel-s-il-scaled)
684     ((l :int)
685     (x :double))
686     :double)
687    
688     (defun-wrapper% ("bessel_il_scaled_e" bessel-s-il-scaled-e)
689     ((l :int)
690     (x :double)
691     (result gsl-sf-result-ptr))
692     :int)
693    
694     ;; ----------------------------------------------------------------------
695    
696     (defun-foreign "gsl_sf_bessel_il_scaled_array"
697     ((lmax :int)
698     (x :double)
699     (result double-ptr))
700     :int)
701    
702     (defun bessel-s-il-scaled-array (lmax x)
703     (declare (integer lmax) (double-float x))
704     (assert (>= lmax 0))
705     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ lmax)))
706     (status (gsl-sf-bessel-il-scaled-array lmax x array-ptr)))
707     (multiple-value-prog1
708     (values (c-array->lisp-vec array-ptr (1+ lmax)) status)
709     (uffi:free-foreign-object array-ptr))))
710    
711     ;; ----------------------------------------------------------------------
712    
713     (defun-wrapper% ("bessel_k0_scaled" bessel-s-k0-scaled)
714     ((x :double))
715     :double)
716    
717     (defun-wrapper% ("bessel_k0_scaled_e" bessel-s-k0-scaled-e)
718     ((x :double)
719     (result gsl-sf-result-ptr))
720     :int)
721    
722     (defun-wrapper% ("bessel_k1_scaled" bessel-s-k1-scaled)
723     ((x :double))
724     :double)
725    
726     (defun-wrapper% ("bessel_k1_scaled_e" bessel-s-k1-scaled-e)
727     ((x :double)
728     (result gsl-sf-result-ptr))
729     :int)
730    
731     (defun-wrapper% ("bessel_k2_scaled" bessel-s-k2-scaled)
732     ((x :double))
733     :double)
734    
735     (defun-wrapper% ("bessel_k2_scaled_e" bessel-s-k2-scaled-e)
736     ((x :double)
737     (result gsl-sf-result-ptr))
738     :int)
739    
740     (defun-wrapper% ("bessel_kl_scaled" bessel-s-kl-scaled)
741     ((l :int)
742     (x :double))
743     :double)
744    
745     (defun-wrapper% ("bessel_kl_scaled_e" bessel-s-kl-scaled-e)
746     ((l :int)
747     (x :double)
748     (result gsl-sf-result-ptr))
749     :int)
750    
751     ;; ----------------------------------------------------------------------
752    
753     (defun-foreign "gsl_sf_bessel_kl_scaled_array"
754     ((lmax :int)
755     (x :double)
756     (result double-ptr))
757     :int)
758    
759     (defun bessel-s-kl-scaled-array (lmax x)
760     (declare (integer lmax) (double-float x))
761     (assert (>= lmax 0))
762     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ lmax)))
763     (status (gsl-sf-bessel-kl-scaled-array lmax x array-ptr)))
764     (multiple-value-prog1
765     (values (c-array->lisp-vec array-ptr (1+ lmax)) status)
766     (uffi:free-foreign-object array-ptr))))
767    
768     ;; ----------------------------------------------------------------------
769    
770     (defun-wrapper% ("bessel_Jnu" bessel-c-jnu)
771     ((nu :double)
772     (x :double))
773     :double)
774    
775     (defun-wrapper% ("bessel_Jnu_e" bessel-c-jnu-e)
776     ((nu :double)
777     (x :double)
778     (result gsl-sf-result-ptr))
779     :int)
780    
781     ;; Function: int gsl_sf_bessel_sequence_Jnu_e (double nu, gsl_mode_t mode, size_t size, double v[])
782    
783     (defun-wrapper% ("bessel_Ynu" bessel-c-ynu)
784     ((nu :double)
785     (x :double))
786     :double)
787    
788     (defun-wrapper% ("bessel_Ynu_e" bessel-c-ynu-e)
789     ((nu :double)
790     (x :double)
791     (result gsl-sf-result-ptr))
792     :int)
793    
794     (defun-wrapper% ("bessel_Inu" bessel-c-inu)
795     ((nu :double)
796     (x :double))
797     :double)
798    
799     (defun-wrapper% ("bessel_Inu_e" bessel-c-inu-e)
800     ((nu :double)
801     (x :double)
802     (result gsl-sf-result-ptr))
803     :int)
804    
805     (defun-wrapper% ("bessel_Inu_scaled" bessel-c-inu-scaled)
806     ((nu :double)
807     (x :double))
808     :double)
809    
810     (defun-wrapper% ("bessel_Inu_scaled_e" bessel-c-inu-scaled-e)
811     ((nu :double)
812     (x :double)
813     (result gsl-sf-result-ptr))
814     :int)
815    
816     (defun-wrapper% ("bessel_Knu" bessel-c-knu)
817     ((nu :double)
818     (x :double))
819     :double)
820    
821     (defun-wrapper% ("bessel_Knu_e" bessel-c-knu-e)
822     ((nu :double)
823     (x :double)
824     (result gsl-sf-result-ptr))
825     :int)
826    
827     (defun-wrapper% ("bessel_lnKnu" bessel-c-lnknu)
828     ((nu :double)
829     (x :double))
830     :double)
831    
832     (defun-wrapper% ("bessel_lnKnu_e" bessel-c-lnknu-e)
833     ((nu :double)
834     (x :double)
835     (result gsl-sf-result-ptr))
836     :int)
837    
838     (defun-wrapper% ("bessel_Knu_scaled" bessel-c-knu-scaled)
839     ((nu :double)
840     (x :double))
841     :double)
842    
843     (defun-wrapper% ("bessel_Knu_scaled_e" bessel-c-knu-scaled-e)
844     ((nu :double)
845     (x :double)
846     (result gsl-sf-result-ptr))
847     :int)
848    
849     (defun-wrapper% ("bessel_zero_J0" bessel-c-zero-j0)
850     ((s :unsigned-int))
851     :double)
852    
853     (defun-wrapper% ("bessel_zero_J0_e" bessel-c-zero-j0-e)
854     ((s :unsigned-int)
855     (result gsl-sf-result-ptr))
856     :int)
857    
858     (defun-wrapper% ("bessel_zero_J1" bessel-c-zero-j1)
859     ((s :unsigned-int))
860     :double)
861    
862     (defun-wrapper% ("bessel_zero_J1_e" bessel-c-zero-j1-e)
863     ((s :unsigned-int)
864     (result gsl-sf-result-ptr))
865     :int)
866    
867     (defun-wrapper% ("bessel_zero_Jnu" bessel-c-zero-jnu)
868     ((nu :double)
869     (s :unsigned-int))
870     :double)
871    
872     (defun-wrapper% ("bessel_zero_Jnu_e" bessel-c-zero-jnu-e)
873     ((nu :double)
874     (s :unsigned-int)
875     (result gsl-sf-result-ptr))
876     :int)
877    
878     ;;; Clausen Functions
879    
880     (defun-wrapper% "clausen"
881     ((x :double))
882     :double)
883    
884     (defun-wrapper% "clausen_e"
885     ((x :double)
886     (result gsl-sf-result-ptr))
887     :int)
888    
889     ;;; Coulomb Functions
890    
891     (defun-wrapper% ("hydrogenicR_1" hydrogenic-r-1)
892     ((z :double)
893     (r :double))
894     :double)
895    
896     (defun-wrapper% ("hydrogenicR_1_e" hydrogenic-r-1-e)
897     ((z :double)
898     (r :double)
899     (result gsl-sf-result-ptr))
900     :int)
901    
902     (defun-wrapper% ("hydrogenicR" hydrogenic-r)
903 edenny 1.4 ((n :int)
904     (l :int)
905     (z :double)
906 edenny 1.1 (r :double))
907     :double)
908    
909     (defun-wrapper% ("hydrogenicR_e" hydrogenic-r-e)
910 edenny 1.4 ((n :int)
911     (l :int)
912     (z :double)
913 edenny 1.1 (r :double)
914     (result gsl-sf-result-ptr))
915     :int)
916    
917     ;; (defun-wrapper% "coulomb_wave_FG_e"
918     ;; ((eta :double)
919     ;; (x :double)
920     ;; (l-f :double)
921     ;; (k :int)
922     ;; (f gsl-sf-result-ptr)
923     ;; (fp gsl-sf-result-ptr)
924     ;; (g gsl-sf-result-ptr)
925     ;; (gp gsl-sf-result-ptr)
926     ;; (exp-f double-ptr)
927     ;; (exp-g double-ptr))
928     ;; :int)
929    
930     ;; Function: int gsl_sf_coulomb_wave_F_array (double L_min, int kmax, double eta, double x, double fc_array[], double * F_exponent)
931    
932     ;; Function: int gsl_sf_coulomb_wave_FG_array (double L_min, int kmax, double eta, double x, double fc_array[], double gc_array[], double * F_exponent, double *
933    
934     ;; Function: int gsl_sf_coulomb_wave_FGp_array (double L_min, int kmax, double eta, double x, double fc_array[], double fcp_array[], double gc_array[], double
935    
936     ;; Function: int gsl_sf_coulomb_wave_sphF_array (double L_min, int kmax, double eta, double x, double fc_array[], double F_exponent[])
937    
938     (defun-wrapper% "coulomb_CL_e"
939     ((l :double)
940     (eta :double)
941     (result gsl-sf-result-ptr))
942     :int)
943    
944     ;; Function: int gsl_sf_coulomb_CL_array (double Lmin, int kmax, double eta, double cl[])
945    
946     ;;; Coupling Coefficients
947    
948     (defun-wrapper% "coupling_3j"
949     ((two-ja :int)
950     (two-jb :int)
951     (two-jc :int)
952     (two-ma :int)
953     (two-mb :int)
954     (two-mc :int))
955     :double)
956    
957     (defun-wrapper% "coupling_3j_e"
958     ((two-ja :int)
959     (two-jb :int)
960     (two-jc :int)
961     (two-ma :int)
962     (two-mb :int)
963     (two-mc :int)
964     (result gsl-sf-result-ptr))
965     :int)
966    
967     (defun-wrapper% "coupling_6j"
968     ((two-ja :int)
969     (two-jb :int)
970     (two-jc :int)
971     (two-jd :int)
972     (two-je :int)
973     (two-jf :int))
974     :double)
975    
976     (defun-wrapper% "coupling_6j_e"
977     ((two-ja :int)
978     (two-jb :int)
979     (two-jc :int)
980     (two-jd :int)
981     (two-je :int)
982     (two-jf :int)
983     (result gsl-sf-result-ptr))
984     :int)
985    
986     (defun-wrapper% "coupling_9j"
987     ((two-ja :int)
988     (two-jb :int)
989     (two-jc :int)
990     (two-jd :int)
991     (two-je :int)
992     (two-jf :int)
993     (two-jg :int)
994     (two-jh :int)
995     (two-ji :int))
996     :double)
997    
998     (defun-wrapper% "coupling_9j_e"
999     ((two-ja :int)
1000     (two-jb :int)
1001     (two-jc :int)
1002     (two-jd :int)
1003     (two-je :int)
1004     (two-jf :int)
1005     (two-jg :int)
1006     (two-jh :int)
1007     (two-ji :int)
1008     (result gsl-sf-result-ptr))
1009     :int)
1010    
1011     ;;; Dawson Function
1012    
1013     (defun-wrapper% "dawson"
1014     ((x :double))
1015     :double)
1016    
1017     (defun-wrapper% "dawson_e"
1018     ((x :double)
1019     (result gsl-sf-result-ptr))
1020     :int)
1021    
1022     ;;; Debye Function
1023    
1024     (defun-wrapper% "debye_1"
1025     ((x :double))
1026     :double)
1027    
1028     (defun-wrapper% "debye_1_e"
1029     ((x :double)
1030     (result gsl-sf-result-ptr))
1031     :int)
1032    
1033     (defun-wrapper% "debye_2"
1034     ((x :double))
1035     :double)
1036    
1037     (defun-wrapper% "debye_2_e"
1038     ((x :double)
1039     (result gsl-sf-result-ptr))
1040     :int)
1041    
1042     (defun-wrapper% "debye_3"
1043     ((x :double))
1044     :double)
1045    
1046     (defun-wrapper% "debye_3_e"
1047     ((x :double)
1048     (result gsl-sf-result-ptr))
1049     :int)
1050    
1051     (defun-wrapper% "debye_4"
1052     ((x :double))
1053     :double)
1054    
1055     (defun-wrapper% "debye_4_e"
1056     ((x :double)
1057     (result gsl-sf-result-ptr))
1058     :int)
1059    
1060     (defun-wrapper% "dilog"
1061     ((x :double))
1062     :double)
1063    
1064     (defun-wrapper% "dilog_e"
1065     ((x :double)
1066     (result gsl-sf-result-ptr))
1067     :int)
1068    
1069    
1070     ;; Function: int gsl_sf_complex_dilog_e (double r, double theta, gsl_sf_result * result_re, gsl_sf_result * result_im)
1071    
1072     (defun-wrapper% "multiply_e"
1073     ((x :double)
1074     (y :double)
1075     (result gsl-sf-result-ptr))
1076     :int)
1077    
1078     (defun-wrapper% "multiply_err_e"
1079     ((x :double)
1080     (dx :double)
1081     (y :double)
1082     (dy :double)
1083     (result gsl-sf-result-ptr))
1084     :int)
1085    
1086     ;;; Elliptic Integrals
1087    
1088     (defun-wrapper% "ellint_Kcomp"
1089     ((k :double)
1090     (mode gsl-mode-t))
1091     :double)
1092    
1093     (defun-wrapper% "ellint_Kcomp_e"
1094     ((k :double)
1095     (mode gsl-mode-t)
1096     (result gsl-sf-result-ptr))
1097     :int)
1098    
1099     (defun-wrapper% "ellint_Ecomp"
1100     ((k :double)
1101     (mode gsl-mode-t))
1102     :double)
1103    
1104     (defun-wrapper% "ellint_Ecomp_e"
1105     ((k :double)
1106     (mode gsl-mode-t)
1107     (result gsl-sf-result-ptr))
1108     :int)
1109    
1110     (defun-wrapper% "ellint_F"
1111     ((phi :double)
1112     (k :double)
1113     (mode gsl-mode-t))
1114     :double)
1115    
1116     (defun-wrapper% "ellint_F_e"
1117     ((phi :double)
1118     (k :double)
1119     (mode gsl-mode-t)
1120     (result gsl-sf-result-ptr))
1121     :int)
1122    
1123     (defun-wrapper% "ellint_E"
1124     ((phi :double)
1125     (k :double)
1126     (mode gsl-mode-t))
1127     :double)
1128    
1129     (defun-wrapper% "ellint_E_e"
1130     ((phi :double)
1131     (k :double)
1132     (mode gsl-mode-t)
1133     (result gsl-sf-result-ptr))
1134     :int)
1135    
1136     (defun-wrapper% "ellint_P"
1137     ((phi :double)
1138     (k :double)
1139     (n :double)
1140     (mode gsl-mode-t))
1141     :double)
1142    
1143     (defun-wrapper% "ellint_P_e"
1144     ((phi :double)
1145     (k :double)
1146     (n :double)
1147     (mode gsl-mode-t)
1148     (result gsl-sf-result-ptr))
1149     :int)
1150    
1151     (defun-wrapper% "ellint_D"
1152     ((phi :double)
1153     (k :double)
1154     (n :double)
1155     (mode gsl-mode-t))
1156     :double)
1157    
1158     (defun-wrapper% "ellint_D_e"
1159     ((phi :double)
1160     (k :double)
1161     (n :double)
1162     (mode gsl-mode-t)
1163     (result gsl-sf-result-ptr))
1164     :int)
1165    
1166     (defun-wrapper% "ellint_RC"
1167     ((x :double)
1168     (y :double)
1169     (mode gsl-mode-t))
1170     :double)
1171    
1172     (defun-wrapper% "ellint_RC_e"
1173     ((x :double)
1174     (y :double)
1175     (mode gsl-mode-t)
1176     (result gsl-sf-result-ptr))
1177     :int)
1178    
1179     (defun-wrapper% "ellint_RD"
1180     ((x :double)
1181     (y :double)
1182     (z :double)
1183     (mode gsl-mode-t))
1184     :double)
1185    
1186     (defun-wrapper% "ellint_RD_e"
1187     ((x :double)
1188     (y :double)
1189     (z :double)
1190     (mode gsl-mode-t)
1191     (result gsl-sf-result-ptr))
1192     :int)
1193    
1194     (defun-wrapper% "ellint_RF"
1195     ((x :double)
1196     (y :double)
1197     (z :double)
1198     (mode gsl-mode-t))
1199     :double)
1200    
1201     (defun-wrapper% "ellint_RF_e"
1202     ((x :double)
1203     (y :double)
1204     (z :double)
1205     (mode gsl-mode-t)
1206     (result gsl-sf-result-ptr))
1207     :int)
1208    
1209     (defun-wrapper% "ellint_RJ"
1210     ((x :double)
1211     (y :double)
1212     (z :double)
1213     (p :double)
1214     (mode gsl-mode-t))
1215     :double)
1216    
1217     (defun-wrapper% "ellint_RJ_e"
1218     ((x :double)
1219     (y :double)
1220     (z :double)
1221     (p :double)
1222     (mode gsl-mode-t)
1223     (result gsl-sf-result-ptr))
1224     :int)
1225    
1226     ;; Function: int gsl_sf_elljac_e (double u, double m, double * sn, double * cn, double * dn)
1227    
1228     (defun-wrapper% "erf"
1229     ((x :double))
1230     :double)
1231    
1232     (defun-wrapper% "erf_e"
1233     ((x :double)
1234     (result gsl-sf-result-ptr))
1235     :int)
1236    
1237     (defun-wrapper% "erfc"
1238     ((x :double))
1239     :double)
1240    
1241     (defun-wrapper% "erfc_e"
1242     ((x :double)
1243     (result gsl-sf-result-ptr))
1244     :int)
1245    
1246     (defun-wrapper% "log_erfc"
1247     ((x :double))
1248     :double)
1249    
1250     (defun-wrapper% "log_erfc_e"
1251     ((x :double)
1252     (result gsl-sf-result-ptr))
1253     :int)
1254    
1255     (defun-wrapper% "erf_Z"
1256     ((x :double))
1257     :double)
1258    
1259     (defun-wrapper% "erf_Z_e"
1260     ((x :double)
1261     (result gsl-sf-result-ptr))
1262     :int)
1263    
1264     (defun-wrapper% "erf_Q"
1265     ((x :double))
1266     :double)
1267    
1268     (defun-wrapper% "erf_Q_e"
1269     ((x :double)
1270     (result gsl-sf-result-ptr))
1271     :int)
1272    
1273     (defun-wrapper% "hazard"
1274     ((x :double))
1275     :double)
1276    
1277     (defun-wrapper% "hazard_e"
1278     ((x :double)
1279     (result gsl-sf-result-ptr))
1280     :int)
1281    
1282    
1283     ;; Function: double gsl_sf_exp (double x)
1284    
1285     (defun-wrapper% "exp_e"
1286     ((x :double)
1287     (result gsl-sf-result-ptr))
1288     :int)
1289    
1290     ;; Function: int gsl_sf_exp_e10_e (double x, gsl_sf_result_e10 * result)
1291    
1292     (defun-wrapper% "exp_mult"
1293     ((x :double)
1294     (y :double))
1295     :double)
1296    
1297     (defun-wrapper% "exp_mult_e"
1298     ((x :double)
1299     (y :double)
1300     (result gsl-sf-result-ptr))
1301     :int)
1302    
1303     ;; Function: int gsl_sf_exp_mult_e10_e (const double x, const double y, gsl_sf_result_e10 * result)
1304    
1305     (defun-wrapper% "expm1"
1306     ((x :double))
1307     :double)
1308    
1309     (defun-wrapper% "expm1_e"
1310     ((x :double)
1311     (result gsl-sf-result-ptr))
1312     :int)
1313    
1314     (defun-wrapper% "exprel"
1315     ((x :double))
1316     :double)
1317    
1318     (defun-wrapper% "exprel_e"
1319     ((x :double)
1320     (result gsl-sf-result-ptr))
1321     :int)
1322    
1323     (defun-wrapper% "exprel_2"
1324     ((x :double))
1325     :double)
1326    
1327     (defun-wrapper% "exprel_2_e"
1328     ((x :double)
1329     (result gsl-sf-result-ptr))
1330     :int)
1331    
1332     (defun-wrapper% "exprel_n"
1333     ((n :int)
1334     (x :double))
1335     :double)
1336    
1337     (defun-wrapper% "exprel_n_e"
1338     ((n :int)
1339     (x :double)
1340     (result gsl-sf-result-ptr))
1341     :int)
1342    
1343     (defun-wrapper% "exp_err_e"
1344     ((x :double)
1345     (dx :double)
1346     (result gsl-sf-result-ptr))
1347     :int)
1348    
1349    
1350     ;; Function: int gsl_sf_exp_err_e10_e (double x, double dx, gsl_sf_result_e10 * result)
1351    
1352     (defun-wrapper% "exp_mult_err_e"
1353     ((x :double)
1354     (dx :double)
1355     (y :double)
1356     (dy :double)
1357     (result gsl-sf-result-ptr))
1358     :int)
1359    
1360     ;; Function: int gsl_sf_exp_mult_err_e10_e (double x, double dx, double y, double dy, gsl_sf_result_e10 * result)
1361    
1362     (defun-wrapper% "expint_E1"
1363     ((x :double))
1364     :double)
1365    
1366     (defun-wrapper% "expint_E1_e"
1367     ((x :double)
1368     (result gsl-sf-result-ptr))
1369     :int)
1370    
1371     (defun-wrapper% "expint_E2"
1372     ((x :double))
1373     :double)
1374    
1375     (defun-wrapper% "expint_E2_e"
1376     ((x :double)
1377     (result gsl-sf-result-ptr))
1378     :int)
1379    
1380     (defun-wrapper% "expint_Ei"
1381     ((x :double))
1382     :double)
1383    
1384     (defun-wrapper% "expint_Ei_e"
1385     ((x :double)
1386     (result gsl-sf-result-ptr))
1387     :int)
1388    
1389     (defun-wrapper% "Shi"
1390     ((x :double))
1391     :double)
1392    
1393     (defun-wrapper% "Shi_e"
1394     ((x :double)
1395     (result gsl-sf-result-ptr))
1396     :int)
1397    
1398     (defun-wrapper% "Chi"
1399     ((x :double))
1400     :double)
1401    
1402     (defun-wrapper% "Chi_e"
1403     ((x :double)
1404     (result gsl-sf-result-ptr))
1405     :int)
1406    
1407     (defun-wrapper% "expint_3"
1408     ((x :double))
1409     :double)
1410    
1411     (defun-wrapper% "expint_3_e"
1412     ((x :double)
1413     (result gsl-sf-result-ptr))
1414     :int)
1415    
1416     (defun-wrapper% "Si"
1417     ((x :double))
1418     :double)
1419    
1420     (defun-wrapper% "Si_e"
1421     ((x :double)
1422     (result gsl-sf-result-ptr))
1423     :int)
1424    
1425     (defun-wrapper% "Ci"
1426     ((x :double))
1427     :double)
1428    
1429     (defun-wrapper% "Ci_e"
1430     ((x :double)
1431     (result gsl-sf-result-ptr))
1432     :int)
1433    
1434     (defun-wrapper% "atanint"
1435     ((x :double))
1436     :double)
1437    
1438     (defun-wrapper% "atanint_e"
1439     ((x :double)
1440     (result gsl-sf-result-ptr))
1441     :int)
1442    
1443     ;;; Fermi Dirac Functions
1444    
1445     (defun-wrapper% "fermi_dirac_m1"
1446     ((x :double))
1447     :double)
1448    
1449     (defun-wrapper% "fermi_dirac_m1_e"
1450     ((x :double)
1451     (result gsl-sf-result-ptr))
1452     :int)
1453    
1454     (defun-wrapper% "fermi_dirac_0"
1455     ((x :double))
1456     :double)
1457    
1458     (defun-wrapper% "fermi_dirac_0_e"
1459     ((x :double)
1460     (result gsl-sf-result-ptr))
1461     :int)
1462    
1463     (defun-wrapper% "fermi_dirac_1"
1464     ((x :double))
1465     :double)
1466    
1467     (defun-wrapper% "fermi_dirac_1_e"
1468     ((x :double)
1469     (result gsl-sf-result-ptr))
1470     :int)
1471    
1472     (defun-wrapper% "fermi_dirac_2"
1473     ((x :double))
1474     :double)
1475    
1476     (defun-wrapper% "fermi_dirac_2_e"
1477     ((x :double)
1478     (result gsl-sf-result-ptr))
1479     :int)
1480    
1481     (defun-wrapper% "fermi_dirac_int"
1482     ((j :int)
1483     (x :double))
1484     :double)
1485    
1486     (defun-wrapper% "fermi_dirac_int_e"
1487     ((j :int)
1488     (x :double)
1489     (result gsl-sf-result-ptr))
1490     :int)
1491    
1492     (defun-wrapper% "fermi_dirac_mhalf"
1493     ((x :double))
1494     :double)
1495    
1496     (defun-wrapper% "fermi_dirac_mhalf_e"
1497     ((x :double)
1498     (result gsl-sf-result-ptr))
1499     :int)
1500    
1501     (defun-wrapper% "fermi_dirac_half"
1502     ((x :double))
1503     :double)
1504    
1505     (defun-wrapper% "fermi_dirac_half_e"
1506     ((x :double)
1507     (result gsl-sf-result-ptr))
1508     :int)
1509    
1510     (defun-wrapper% "fermi_dirac_3half"
1511     ((x :double))
1512     :double)
1513    
1514     (defun-wrapper% "fermi_dirac_3half_e"
1515     ((x :double)
1516     (result gsl-sf-result-ptr))
1517     :int)
1518    
1519     (defun-wrapper% "fermi_dirac_inc_0"
1520     ((x :double)
1521     (b :double))
1522     :double)
1523    
1524     (defun-wrapper% "fermi_dirac_inc_0_e"
1525     ((x :double)
1526     (b :double)
1527     (result gsl-sf-result-ptr))
1528     :int)
1529    
1530     ;;; Gamma Function
1531    
1532     (defun-wrapper% "gamma"
1533     ((x :double))
1534     :double)
1535    
1536     (defun-wrapper% "gamma_e"
1537     ((x :double)
1538     (result gsl-sf-result-ptr))
1539     :int)
1540    
1541     (defun-wrapper% "lngamma"
1542     ((x :double))
1543     :double)
1544    
1545     (defun-wrapper% "lngamma_e"
1546     ((x :double)
1547     (result gsl-sf-result-ptr))
1548     :int)
1549    
1550     ;; Function: int gsl_sf_lngamma_sgn_e (double x, gsl_sf_result * result_lg, double * sgn)
1551    
1552     (defun-wrapper% "gammastar"
1553     ((x :double))
1554     :double)
1555    
1556     (defun-wrapper% "gammastar_e"
1557     ((x :double)
1558     (result gsl-sf-result-ptr))
1559     :int)
1560    
1561     (defun-wrapper% "gammainv"
1562     ((x :double))
1563     :double)
1564    
1565     (defun-wrapper% "gammainv_e"
1566     ((x :double)
1567     (result gsl-sf-result-ptr))
1568     :int)
1569    
1570    
1571     ;; Function: int gsl_sf_lngamma_complex_e (double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * arg)
1572    
1573    
1574     (defun-wrapper% "taylorcoeff"
1575     ((n :int)
1576     (x :double))
1577     :double)
1578    
1579     (defun-wrapper% "taylorcoeff_e"
1580     ((n :int)
1581     (x :double)
1582     (result gsl-sf-result-ptr))
1583     :int)
1584    
1585     (defun-wrapper% "fact"
1586     ((n :unsigned-int))
1587     :double)
1588    
1589     (defun-wrapper% "fact_e"
1590     ((n :unsigned-int)
1591     (result gsl-sf-result-ptr))
1592     :int)
1593    
1594     (defun-wrapper% "doublefact"
1595     ((n :unsigned-int))
1596     :double)
1597    
1598     (defun-wrapper% "doublefact_e"
1599     ((n :unsigned-int)
1600     (result gsl-sf-result-ptr))
1601     :int)
1602    
1603     (defun-wrapper% "lnfact"
1604     ((n :unsigned-int))
1605     :double)
1606    
1607     (defun-wrapper% "lnfact_e"
1608     ((n :unsigned-int)
1609     (result gsl-sf-result-ptr))
1610     :int)
1611    
1612     (defun-wrapper% "lndoublefact"
1613     ((n :unsigned-int))
1614     :double)
1615    
1616     (defun-wrapper% "lndoublefact_e"
1617     ((n :unsigned-int)
1618     (result gsl-sf-result-ptr))
1619     :int)
1620    
1621     (defun-wrapper% "choose"
1622     ((n :unsigned-int)
1623     (m :unsigned-int))
1624     :double)
1625    
1626     (defun-wrapper% "choose_e"
1627     ((n :unsigned-int)
1628     (m :unsigned-int)
1629     (result gsl-sf-result-ptr))
1630     :int)
1631    
1632     (defun-wrapper% "lnchoose"
1633     ((n :unsigned-int)
1634     (m :unsigned-int))
1635     :double)
1636    
1637     (defun-wrapper% "lnchoose_e"
1638     ((n :unsigned-int)
1639     (m :unsigned-int)
1640     (result gsl-sf-result-ptr))
1641     :int)
1642    
1643     (defun-wrapper% "poch"
1644     ((a :double)
1645     (x :double))
1646     :double)
1647    
1648     (defun-wrapper% "poch_e"
1649     ((a :double)
1650     (x :double)
1651     (result gsl-sf-result-ptr))
1652     :int)
1653    
1654     (defun-wrapper% "lnpoch"
1655     ((a :double)
1656     (x :double))
1657     :double)
1658    
1659     (defun-wrapper% "lnpoch_e"
1660     ((a :double)
1661     (x :double)
1662     (result gsl-sf-result-ptr))
1663     :int)
1664    
1665     ;; Function: int gsl_sf_lnpoch_sgn_e (double a, double x, gsl_sf_result * result, double * sgn)
1666    
1667     (defun-wrapper% "pochrel"
1668     ((a :double)
1669     (x :double))
1670     :double)
1671    
1672     (defun-wrapper% "pochrel_e"
1673     ((a :double)
1674     (x :double)
1675     (result gsl-sf-result-ptr))
1676     :int)
1677    
1678     (defun-wrapper% "gamma_inc_Q"
1679     ((a :double)
1680     (x :double))
1681     :double)
1682    
1683     (defun-wrapper% "gamma_inc_Q_e"
1684     ((a :double)
1685     (x :double)
1686     (result gsl-sf-result-ptr))
1687     :int)
1688    
1689     (defun-wrapper% "gamma_inc_P"
1690     ((a :double)
1691     (x :double))
1692     :double)
1693    
1694     (defun-wrapper% "gamma_inc_P_e"
1695     ((a :double)
1696     (x :double)
1697     (result gsl-sf-result-ptr))
1698     :int)
1699    
1700     (defun-wrapper% "gamma_inc"
1701     ((a :double)
1702     (x :double))
1703     :double)
1704    
1705     (defun-wrapper% "gamma_inc_e"
1706     ((a :double)
1707     (x :double)
1708     (result gsl-sf-result-ptr))
1709     :int)
1710    
1711     (defun-wrapper% "beta"
1712     ((a :double)
1713     (b :double))
1714     :double)
1715    
1716     (defun-wrapper% "beta_e"
1717     ((a :double)
1718     (b :double)
1719     (result gsl-sf-result-ptr))
1720     :int)
1721    
1722     (defun-wrapper% "lnbeta"
1723     ((a :double)
1724     (b :double))
1725     :double)
1726    
1727     (defun-wrapper% "lnbeta_e"
1728     ((a :double)
1729     (b :double)
1730     (result gsl-sf-result-ptr))
1731     :int)
1732    
1733     (defun-wrapper% "beta_inc"
1734     ((a :double)
1735 edenny 1.4 (b :double)
1736     (x :double))
1737 edenny 1.1 :double)
1738    
1739     (defun-wrapper% "beta_inc_e"
1740     ((a :double)
1741     (b :double)
1742 edenny 1.4 (x :double)
1743 edenny 1.1 (result gsl-sf-result-ptr))
1744     :int)
1745    
1746     ;;; Gegenbauer Functions
1747    
1748     (defun-wrapper% "gegenpoly_1"
1749     ((l :double)
1750     (x :double))
1751     :double)
1752    
1753     (defun-wrapper% "gegenpoly_2"
1754     ((l :double)
1755     (x :double))
1756     :double)
1757    
1758     (defun-wrapper% "gegenpoly_3"
1759     ((l :double)
1760     (x :double))
1761     :double)
1762    
1763     (defun-wrapper% "gegenpoly_1_e"
1764     ((l :double)
1765     (x :double)
1766     (result gsl-sf-result-ptr))
1767     :int)
1768    
1769     (defun-wrapper% "gegenpoly_2_e"
1770     ((l :double)
1771     (x :double)
1772     (result gsl-sf-result-ptr))
1773     :int)
1774    
1775     (defun-wrapper% "gegenpoly_3_e"
1776     ((l :double)
1777     (x :double)
1778     (result gsl-sf-result-ptr))
1779     :int)
1780    
1781     (defun-wrapper% "gegenpoly_n"
1782     ((n :int)
1783     (l :double)
1784     (x :double))
1785     :double)
1786    
1787     (defun-wrapper% "gegenpoly_n_e"
1788     ((n :int)
1789     (l :double)
1790     (x :double)
1791     (result gsl-sf-result-ptr))
1792     :int)
1793    
1794     ;; ----------------------------------------------------------------------
1795    
1796     (defun-foreign "gsl_sf_gegenpoly_array"
1797     ((nmax :int)
1798     (l :double)
1799     (x :double)
1800     (result double-ptr))
1801     :int)
1802    
1803     (defun gegenpoly-array (nmax l x)
1804     (declare (integer nmax) (double-float l) (double-float x))
1805     (assert (and (>= nmax 0) (> l -0.5d0)))
1806     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ nmax)))
1807     (status (gsl-sf-gegenpoly-array nmax l x array-ptr)))
1808     (multiple-value-prog1
1809     (values (c-array->lisp-vec array-ptr (1+ nmax)) status)
1810     (uffi:free-foreign-object array-ptr))))
1811    
1812     ;; ----------------------------------------------------------------------
1813    
1814     ;;; Hypergeometric Functions
1815    
1816     (defun-wrapper% "hyperg_0F1"
1817     ((c :double)
1818     (x :double))
1819     :double)
1820    
1821     (defun-wrapper% "hyperg_0F1_e"
1822     ((c :double)
1823     (x :double)
1824     (result gsl-sf-result-ptr))
1825     :int)
1826    
1827     (defun-wrapper% "hyperg_1F1_int"
1828     ((m :int)
1829     (n :int)
1830     (x :double))
1831     :double)
1832    
1833     (defun-wrapper% "hyperg_1F1_int_e"
1834     ((m :int)
1835     (n :int)
1836     (x :double)
1837     (result gsl-sf-result-ptr))
1838     :int)
1839    
1840     (defun-wrapper% "hyperg_1F1"
1841     ((a :double)
1842     (b :double)
1843     (x :double))
1844     :double)
1845    
1846     (defun-wrapper% "hyperg_1F1_e"
1847     ((a :double)
1848     (b :double)
1849     (x :double)
1850     (result gsl-sf-result-ptr))
1851     :int)
1852    
1853     (defun-wrapper% "hyperg_U_int"
1854     ((m :int)
1855     (n :int)
1856     (x :double))
1857     :double)
1858    
1859     (defun-wrapper% "hyperg_U_int_e"
1860     ((m :int)
1861     (n :int)
1862     (x :double)
1863     (result gsl-sf-result-ptr))
1864     :int)
1865    
1866     (defun-wrapper% "hyperg_U_int_e10_e"
1867     ((m :int)
1868     (n :int)
1869     (x :double)
1870     (result gsl-sf-result-e10-ptr))
1871     :int)
1872    
1873     (defun-wrapper% "hyperg_U"
1874     ((a :double)
1875     (b :double)
1876     (x :double))
1877     :double)
1878    
1879     (defun-wrapper% "hyperg_U_e"
1880     ((a :double)
1881     (b :double)
1882     (x :double)
1883     (result gsl-sf-result-ptr))
1884     :int)
1885    
1886     (defun-wrapper% "hyperg_U_e10_e"
1887     ((a :double)
1888     (b :double)
1889     (x :double)
1890     (result gsl-sf-result-e10-ptr))
1891     :int)
1892    
1893     (defun-wrapper% "hyperg_2F1"
1894     ((a :double)
1895     (b :double)
1896     (c :double)
1897     (x :double))
1898     :double)
1899    
1900     (defun-wrapper% "hyperg_2F1_e"
1901     ((a :double)
1902     (b :double)
1903     (c :double)
1904     (x :double)
1905     (result gsl-sf-result-ptr))
1906     :int)
1907    
1908     (defun-wrapper% "hyperg_2F1_conj"
1909     ((ar :double)
1910     (ai :double)
1911     (c :double)
1912     (x :double))
1913     :double)
1914    
1915     (defun-wrapper% "hyperg_2F1_conj_e"
1916     ((ar :double)
1917     (ai :double)
1918     (c :double)
1919     (x :double)
1920     (result gsl-sf-result-ptr))
1921     :int)
1922    
1923     (defun-wrapper% "hyperg_2F1_renorm"
1924     ((a :double)
1925     (b :double)
1926     (c :double)
1927     (x :double))
1928     :double)
1929    
1930     (defun-wrapper% "hyperg_2F1_renorm_e"
1931     ((a :double)
1932     (b :double)
1933     (c :double)
1934     (x :double)
1935     (result gsl-sf-result-ptr))
1936     :int)
1937    
1938     (defun-wrapper% "hyperg_2F1_conj_renorm"
1939     ((ar :double)
1940     (ai :double)
1941     (c :double)
1942     (x :double))
1943     :double)
1944    
1945     (defun-wrapper% "hyperg_2F1_conj_renorm_e"
1946     ((ar :double)
1947     (ai :double)
1948     (c :double)
1949     (x :double)
1950     (result gsl-sf-result-ptr))
1951     :int)
1952    
1953     (defun-wrapper% "hyperg_2F0"
1954     ((a :double)
1955     (b :double)
1956     (x :double))
1957     :double)
1958    
1959     (defun-wrapper% "hyperg_2F0_e"
1960     ((a :double)
1961     (b :double)
1962     (x :double)
1963     (result gsl-sf-result-ptr))
1964     :int)
1965    
1966     ;;; Laguerre Functions
1967    
1968     (defun-wrapper% "laguerre_1"
1969     ((a :double)
1970     (x :double))
1971     :double)
1972    
1973     (defun-wrapper% "laguerre_2"
1974     ((a :double)
1975     (x :double))
1976     :double)
1977    
1978     (defun-wrapper% "laguerre_3"
1979     ((a :double)
1980     (x :double))
1981     :double)
1982    
1983     (defun-wrapper% "laguerre_1_e"
1984     ((a :double)
1985     (x :double)
1986     (result gsl-sf-result-ptr))
1987     :int)
1988    
1989     (defun-wrapper% "laguerre_2_e"
1990     ((a :double)
1991     (x :double)
1992     (result gsl-sf-result-ptr))
1993     :int)
1994    
1995     (defun-wrapper% "laguerre_3_e"
1996     ((a :double)
1997     (x :double)
1998     (result gsl-sf-result-ptr))
1999     :int)
2000    
2001     (defun-wrapper% "laguerre_n"
2002     ((n :int)
2003     (a :double)
2004     (x :double))
2005     :double)
2006    
2007     (defun-wrapper% "laguerre_n_e"
2008     ((n :int)
2009     (a :double)
2010     (x :double)
2011     (result gsl-sf-result-ptr))
2012     :int)
2013    
2014     ;;; Lambert W Functions
2015    
2016     (defun-wrapper% "lambert_W0"
2017     ((x :double))
2018     :double)
2019    
2020     (defun-wrapper% "lambert_W0_e"
2021     ((x :double)
2022     (result gsl-sf-result-ptr))
2023     :int)
2024    
2025     (defun-wrapper% "lambert_Wm1"
2026     ((x :double))
2027     :double)
2028    
2029     (defun-wrapper% "lambert_Wm1_e"
2030     ((x :double)
2031     (result gsl-sf-result-ptr))
2032     :int)
2033    
2034     ;;; Legendre Functions
2035    
2036     (defun-wrapper% "legendre_P1"
2037     ((x :double))
2038     :double)
2039    
2040     (defun-wrapper% "legendre_P2"
2041     ((x :double))
2042     :double)
2043    
2044     (defun-wrapper% "legendre_P3"
2045     ((x :double))
2046     :double)
2047    
2048     (defun-wrapper% "legendre_P1_e"
2049     ((x :double)
2050     (result gsl-sf-result-ptr))
2051     :int)
2052    
2053     (defun-wrapper% "legendre_P2_e"
2054     ((x :double)
2055     (result gsl-sf-result-ptr))
2056     :int)
2057    
2058     (defun-wrapper% "legendre_P3_e"
2059     ((x :double)
2060     (result gsl-sf-result-ptr))
2061     :int)
2062    
2063     (defun-wrapper% "legendre_Pl"
2064     ((l :int)
2065     (x :double))
2066     :double)
2067    
2068     (defun-wrapper% "legendre_Pl_e"
2069     ((l :int)
2070     (x :double)
2071     (result gsl-sf-result-ptr))
2072     :int)
2073    
2074     ;; ----------------------------------------------------------------------
2075    
2076     (defun-foreign "gsl_sf_legendre_Pl_array"
2077     ((lmax :int)
2078     (x :double)
2079     (result double-ptr))
2080     :int)
2081    
2082     (defun legendre-pl-array (lmax x)
2083     (declare (integer lmax) (double-float x))
2084     (assert (>= lmax 0))
2085     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ lmax)))
2086     (status (gsl-sf-legendre-pl-array lmax x array-ptr)))
2087     (multiple-value-prog1
2088     (values (c-array->lisp-vec array-ptr (1+ lmax)) status)
2089     (uffi:free-foreign-object array-ptr))))
2090    
2091     ;; ----------------------------------------------------------------------
2092    
2093     (defun-wrapper% "legendre_Q0"
2094     ((x :double))
2095     :double)
2096    
2097     (defun-wrapper% "legendre_Q0_e"
2098     ((x :double)
2099     (result gsl-sf-result-ptr))
2100     :int)
2101    
2102     (defun-wrapper% "legendre_Q1"
2103     ((x :double))
2104     :double)
2105    
2106     (defun-wrapper% "legendre_Q1_e"
2107     ((x :double)
2108     (result gsl-sf-result-ptr))
2109     :int)
2110    
2111     (defun-wrapper% "legendre_Ql"
2112     ((l :int)
2113     (x :double))
2114     :double)
2115    
2116     (defun-wrapper% "legendre_Ql_e"
2117     ((l :int)
2118     (x :double)
2119     (result gsl-sf-result-ptr))
2120     :int)
2121    
2122     (defun-wrapper% "legendre_Plm"
2123     ((l :int)
2124     (m :int)
2125     (x :double))
2126     :double)
2127    
2128     (defun-wrapper% "legendre_Plm_e"
2129     ((l :int)
2130     (m :int)
2131     (x :double)
2132     (result gsl-sf-result-ptr))
2133     :int)
2134    
2135    
2136     ;; Function: int gsl_sf_legendre_Plm_array (int lmax, int m, double x, double result_array[])
2137    
2138     (defun-wrapper% "legendre_sphPlm"
2139     ((l :int)
2140     (m :int)
2141     (x :double))
2142     :double)
2143    
2144     (defun-wrapper% "legendre_sphPlm_e"
2145     ((l :int)
2146     (m :int)
2147     (x :double)
2148     (result gsl-sf-result-ptr))
2149     :int)
2150    
2151     ;; Function: int gsl_sf_legendre_sphPlm_array (int lmax, int m, double x, double result_array[])
2152    
2153     (defun-wrapper% "legendre_array_size"
2154     ((l :int)
2155     (m :int))
2156     :int)
2157    
2158     (defun-wrapper% "conicalP_half"
2159     ((l :double)
2160     (x :double))
2161     :double)
2162    
2163     (defun-wrapper% "conicalP_half_e"
2164     ((l :double)
2165     (x :double)
2166     (result gsl-sf-result-ptr))
2167     :int)
2168    
2169     (defun-wrapper% "conicalP_mhalf"
2170     ((l :double)
2171     (x :double))
2172     :double)
2173    
2174     (defun-wrapper% "conicalP_mhalf_e"
2175     ((l :double)
2176     (x :double)
2177     (result gsl-sf-result-ptr))
2178     :int)
2179    
2180     (defun-wrapper% "conicalP_0"
2181     ((l :double)
2182     (x :double))
2183     :double)
2184    
2185     (defun-wrapper% "conicalP_0_e"
2186     ((l :double)
2187     (x :double)
2188     (result gsl-sf-result-ptr))
2189     :int)
2190    
2191     (defun-wrapper% "conicalP_1"
2192     ((l :double)
2193     (x :double))
2194     :double)
2195    
2196     (defun-wrapper% "conicalP_1_e"
2197     ((l :double)
2198     (x :double)
2199     (result gsl-sf-result-ptr))
2200     :int)
2201    
2202     (defun-wrapper% "conicalP_sph_reg"
2203     ((l :int)
2204     (lmbd :double)
2205     (x :double))
2206     :double)
2207    
2208     (defun-wrapper% "conicalP_sph_reg_e"
2209     ((l :int)
2210     (lmbd :double)
2211     (x :double)
2212     (result gsl-sf-result-ptr))
2213     :int)
2214    
2215     (defun-wrapper% "conicalP_cyl_reg"
2216     ((m :int)
2217     (lmbd :double)
2218     (x :double))
2219     :double)
2220    
2221     (defun-wrapper% "conicalP_cyl_reg_e"
2222     ((m :int)
2223     (lmbd :double)
2224     (x :double)
2225     (result gsl-sf-result-ptr))
2226     :int)
2227    
2228     (defun-wrapper% "legendre_H3d_0"
2229     ((l :double)
2230     (eta :double))
2231     :double)
2232    
2233     (defun-wrapper% "legendre_H3d_0_e"
2234     ((l :double)
2235     (eta :double)
2236     (result gsl-sf-result-ptr))
2237     :int)
2238    
2239     (defun-wrapper% "legendre_H3d_1"
2240     ((l :double)
2241     (eta :double))
2242     :double)
2243    
2244     (defun-wrapper% "legendre_H3d_1_e"
2245     ((l :double)
2246     (eta :double)
2247     (result gsl-sf-result-ptr))
2248     :int)
2249    
2250     (defun-wrapper% "legendre_H3d"
2251     ((l :int)
2252     (lmbd :double)
2253     (eta :double))
2254     :double)
2255    
2256     (defun-wrapper% "legendre_H3d_e"
2257     ((l :int)
2258     (lmbd :double)
2259     (eta :double)
2260     (result gsl-sf-result-ptr))
2261     :int)
2262    
2263     ;; ----------------------------------------------------------------------
2264    
2265     (defun-foreign "gsl_sf_legendre_H3d_array"
2266     ((lmax :int)
2267     (l :double)
2268     (eta :double)
2269     (result double-ptr))
2270     :int)
2271    
2272     (defun legendre-h3d-array (lmax l eta)
2273     (declare (integer lmax) (double-float l) (double-float eta))
2274     (assert (>= lmax 0))
2275     (let* ((array-ptr (uffi:allocate-foreign-object :double (1+ lmax)))
2276     (status (gsl-sf-legendre-h3d-array lmax l eta array-ptr)))
2277     (multiple-value-prog1
2278     (values (c-array->lisp-vec array-ptr (1+ lmax)) status)
2279     (uffi:free-foreign-object array-ptr))))
2280    
2281     ;; ----------------------------------------------------------------------
2282    
2283     ;; Function: double gsl_sf_log (double x)
2284    
2285     (defun-wrapper% "log_e"
2286     ((x :double)
2287     (result gsl-sf-result-ptr))
2288     :int)
2289    
2290     (defun-wrapper% "log_abs"
2291     ((x :double))
2292     :double)
2293    
2294     (defun-wrapper% "log_abs_e"
2295     ((x :double)
2296     (result gsl-sf-result-ptr))
2297     :int)
2298    
2299     ;; Function: int gsl_sf_complex_log_e (double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * theta)
2300    
2301     (defun-wrapper% "log_1plusx"
2302     ((x :double))
2303     :double)
2304    
2305     (defun-wrapper% "log_1plusx_e"
2306     ((x :double)
2307     (result gsl-sf-result-ptr))
2308     :int)
2309    
2310     (defun-wrapper% "log_1plusx_mx"
2311     ((x :double))
2312     :double)
2313    
2314     (defun-wrapper% "log_1plusx_mx_e"
2315     ((x :double)
2316     (result gsl-sf-result-ptr))
2317     :int)
2318    
2319     (defun-wrapper% "pow_int"
2320     ((x :double)
2321     (n :int))
2322     :double)
2323    
2324     (defun-wrapper% "pow_int_e"
2325     ((x :double)
2326     (n :int)
2327     (result gsl-sf-result-ptr))
2328     :int)
2329    
2330     (defun-wrapper% "psi_int"
2331     ((n :int))
2332     :double)
2333    
2334     (defun-wrapper% "psi_int_e"
2335     ((n :int)
2336     (result gsl-sf-result-ptr))
2337     :int)
2338    
2339     (defun-wrapper% "psi"
2340     ((x :double))
2341     :double)
2342    
2343     (defun-wrapper% "psi_e"
2344     ((x :double)
2345     (result gsl-sf-result-ptr))
2346     :int)
2347    
2348     (defun-wrapper% "psi_1piy"
2349     ((y :double))
2350     :double)
2351    
2352     (defun-wrapper% "psi_1piy_e"
2353     ((y :double)
2354     (result gsl-sf-result-ptr))
2355     :int)
2356    
2357     (defun-wrapper% "psi_1_int"
2358     ((n :int))
2359     :double)
2360    
2361     (defun-wrapper% "psi_1_int_e"
2362     ((n :int)
2363     (result gsl-sf-result-ptr))
2364     :int)
2365    
2366     (defun-wrapper% "psi_1"
2367     ((x :double))
2368     :double)
2369    
2370     (defun-wrapper% "psi_1_e"
2371     ((x :double)
2372     (result gsl-sf-result-ptr))
2373     :int)
2374    
2375     (defun-wrapper% "psi_n"
2376     ((m :int)
2377     (x :double))
2378     :double)
2379    
2380     (defun-wrapper% "psi_n_e"
2381     ((m :int)
2382     (x :double)
2383     (result gsl-sf-result-ptr))
2384     :int)
2385    
2386     (defun-wrapper% "synchrotron_1"
2387     ((x :double))
2388     :double)
2389    
2390     (defun-wrapper% "synchrotron_1_e"
2391     ((x :double)
2392     (result gsl-sf-result-ptr))
2393     :int)
2394    
2395     (defun-wrapper% "synchrotron_2"
2396     ((x :double))
2397     :double)
2398    
2399     (defun-wrapper% "synchrotron_2_e"
2400     ((x :double)
2401     (result gsl-sf-result-ptr))
2402     :int)
2403    
2404     (defun-wrapper% "transport_2"
2405     ((x :double))
2406     :double)
2407    
2408     (defun-wrapper% "transport_2_e"
2409     ((x :double)
2410     (result gsl-sf-result-ptr))
2411     :int)
2412    
2413     (defun-wrapper% "transport_3"
2414     ((x :double))
2415     :double)
2416    
2417     (defun-wrapper% "transport_3_e"
2418     ((x :double)
2419     (result gsl-sf-result-ptr))
2420     :int)
2421    
2422     (defun-wrapper% "transport_4"
2423     ((x :double))
2424     :double)
2425    
2426     (defun-wrapper% "transport_4_e"
2427     ((x :double)
2428     (result gsl-sf-result-ptr))
2429     :int)
2430    
2431     (defun-wrapper% "transport_5"
2432     ((x :double))
2433     :double)
2434    
2435     (defun-wrapper% "transport_5_e"
2436     ((x :double)
2437     (result gsl-sf-result-ptr))
2438     :int)
2439    
2440     ;; Function: double gsl_sf_sin (double x)
2441    
2442     (defun-wrapper% "sin_e"
2443     ((x :double)
2444     (result gsl-sf-result-ptr))
2445     :int)
2446    
2447     ;; Function: double gsl_sf_cos (double x)
2448    
2449     (defun-wrapper% "cos_e"
2450     ((x :double)
2451     (result gsl-sf-result-ptr))
2452     :int)
2453    
2454     (defun-wrapper% "hypot"
2455     ((x :double)
2456     (y :double))
2457     :double)
2458    
2459     (defun-wrapper% "hypot_e"
2460     ((x :double)
2461     (y :double)
2462     (result gsl-sf-result-ptr))
2463     :int)
2464    
2465     (defun-wrapper% "sinc"
2466     ((x :double))
2467     :double)
2468    
2469     (defun-wrapper% "sinc_e"
2470     ((x :double)
2471     (result gsl-sf-result-ptr))
2472     :int)
2473    
2474     ;; Function: int gsl_sf_complex_sin_e (double zr, double zi, gsl_sf_result * szr, gsl_sf_result * szi)
2475    
2476     ;; Function: int gsl_sf_complex_cos_e (double zr, double zi, gsl_sf_result * czr, gsl_sf_result * czi)
2477    
2478     ;; Function: int gsl_sf_complex_logsin_e (double zr, double zi, gsl_sf_result * lszr, gsl_sf_result * lszi)
2479    
2480     (defun-wrapper% "lnsinh"
2481     ((x :double))
2482     :double)
2483    
2484     (defun-wrapper% "lnsinh_e"
2485     ((x :double)
2486     (result gsl-sf-result-ptr))
2487     :int)
2488    
2489     (defun-wrapper% "lncosh"
2490     ((x :double))
2491     :double)
2492    
2493     (defun-wrapper% "lncosh_e"
2494     ((x :double)
2495     (result gsl-sf-result-ptr))
2496     :int)
2497    
2498     ;; Function: int gsl_sf_polar_to_rect (double r, double theta, gsl_sf_result * x, gsl_sf_result * y);
2499    
2500     ;; Function: int gsl_sf_rect_to_polar (double x, double y, gsl_sf_result * r, gsl_sf_result * theta)
2501    
2502     (defun-wrapper% "angle_restrict_symm"
2503     ((theta :double))
2504     :double)
2505    
2506     (defun-wrapper% "angle_restrict_symm_e"
2507     ((theta :double)
2508     (result gsl-sf-result-ptr))
2509     :int)
2510    
2511     (defun-wrapper% "angle_restrict_pos"
2512     ((theta :double))
2513     :double)
2514    
2515     (defun-wrapper% "angle_restrict_pos_e"
2516     ((theta :double)
2517     (result gsl-sf-result-ptr))
2518     :int)
2519    
2520     ;; (defun-wrapper% "sin_err"
2521     ;; ((x :double)
2522     ;; (dx :double))
2523     ;; :double)
2524    
2525     (defun-wrapper% "sin_err_e"
2526     ((x :double)
2527     (dx :double)
2528     (result gsl-sf-result-ptr))
2529     :int)
2530    
2531     ;; (defun-wrapper% "cos_err"
2532     ;; ((x :double)
2533     ;; (dx :double))
2534     ;; :double)
2535    
2536     (defun-wrapper% "cos_err_e"
2537     ((x :double)
2538     (dx :double)
2539     (result gsl-sf-result-ptr))
2540     :int)
2541    
2542     (defun-wrapper% "zeta_int"
2543     ((n :int))
2544     :double)
2545    
2546     (defun-wrapper% "zeta_int_e"
2547     ((n :int)
2548     (result gsl-sf-result-ptr))
2549     :int)
2550    
2551     (defun-wrapper% "zeta"
2552     ((s :double))
2553     :double)
2554    
2555     (defun-wrapper% "zeta_e"
2556     ((s :double)
2557     (result gsl-sf-result-ptr))
2558     :int)
2559    
2560     (defun-wrapper% "zetam1_int"
2561     ((n :int))
2562     :double)
2563    
2564     (defun-wrapper% "zetam1_int_e"
2565     ((n :int)
2566     (result gsl-sf-result-ptr))
2567     :int)
2568    
2569     (defun-wrapper% "zetam1"
2570     ((s :double))
2571     :double)
2572    
2573     (defun-wrapper% "zetam1_e"
2574     ((s :double)
2575     (result gsl-sf-result-ptr))
2576     :int)
2577    
2578     (defun-wrapper% "hzeta"
2579     ((s :double)
2580     (q :double))
2581     :double)
2582    
2583     (defun-wrapper% "hzeta_e"
2584     ((s :double)
2585     (q :double)
2586     (result gsl-sf-result-ptr))
2587     :int)
2588    
2589     (defun-wrapper% "eta_int"
2590     ((n :int))
2591     :double)
2592    
2593     (defun-wrapper% "eta_int_e"
2594     ((n :int)
2595     (result gsl-sf-result-ptr))
2596     :int)
2597    
2598     (defun-wrapper% "eta"
2599     ((s :double))
2600     :double)
2601    
2602     (defun-wrapper% "eta_e"
2603     ((s :double)
2604     (result gsl-sf-result-ptr))
2605     :int)

  ViewVC Help
Powered by ViewVC 1.1.5