1 /* This file is a collection of wrappers around the
2  *  Amos Fortran library of functions that take complex
3  *  variables (see www.netlib.org) so that they can be called from
4  *  the cephes library of corresponding name but work with complex
5  *  arguments.
6  */
7 
8 #ifndef _AMOS_WRAPPERS_H
9 #define _AMOS_WRAPPERS_H
10 #include "Python.h"
11 #include "sf_error.h"
12 
13 #include <numpy/npy_math.h>
14 
15 #define DO_SFERR(name, varp)                          \
16     do {                                              \
17       if (nz !=0 || ierr != 0) {                      \
18         sf_error(name, ierr_to_sferr(nz, ierr), NULL);\
19         set_nan_if_no_computation_done(varp, ierr);   \
20       }                                               \
21     } while (0)
22 
23 int ierr_to_sferr( int nz, int ierr);
24 void set_nan_if_no_computation_done(npy_cdouble *var, int ierr);
25 int airy_wrap(double x, double *ai, double *aip, double *bi, double *bip);
26 int cairy_wrap(npy_cdouble z, npy_cdouble *ai, npy_cdouble *aip, npy_cdouble *bi, npy_cdouble *bip);
27 int cairy_wrap_e(npy_cdouble z, npy_cdouble *ai, npy_cdouble *aip, npy_cdouble *bi, npy_cdouble *bip);
28 int cairy_wrap_e_real(double z, double *ai, double *aip, double *bi, double *bip);
29 npy_cdouble cbesi_wrap( double v, npy_cdouble z);
30 npy_cdouble cbesi_wrap_e( double v, npy_cdouble z);
31 double cbesi_wrap_e_real( double v, double z);
32 npy_cdouble cbesj_wrap( double v, npy_cdouble z);
33 npy_cdouble cbesj_wrap_e( double v, npy_cdouble z);
34 double cbesj_wrap_real(double v, double z);
35 double cbesj_wrap_e_real( double v, double z);
36 npy_cdouble cbesy_wrap( double v, npy_cdouble z);
37 double cbesy_wrap_real(double v, double x);
38 npy_cdouble cbesy_wrap_e( double v, npy_cdouble z);
39 double cbesy_wrap_e_real( double v, double z);
40 npy_cdouble cbesk_wrap( double v, npy_cdouble z);
41 npy_cdouble cbesk_wrap_e( double v, npy_cdouble z);
42 double cbesk_wrap_real( double v, double z);
43 double cbesk_wrap_e_real( double v, double z);
44 double cbesk_wrap_real_int(int n, double z);
45 npy_cdouble cbesh_wrap1( double v, npy_cdouble z);
46 npy_cdouble cbesh_wrap1_e( double v, npy_cdouble z);
47 npy_cdouble cbesh_wrap2( double v, npy_cdouble z);
48 npy_cdouble cbesh_wrap2_e( double v, npy_cdouble z);
49 double sin_pi(double x);
50 /*
51 int cairy_(double *, int *, int *, doublecomplex *, int *, int *);
52 int cbiry_(doublecomplex *, int *, int *, doublecomplex *, int *, int *);
53 int cbesi_(doublecomplex *, double *, int *, int *, doublecomplex *, int *, int *);
54 int cbesj_(doublecomplex *, double *, int *, int *, doublecomplex *, int *, int *);
55 int cbesk_(doublecomplex *, double *, int *, int *, doublecomplex *, int *, int *);
56 int cbesy_(doublecomplex *, double *, int *, int *, doublecomplex *, int *, doublecomplex *, int *);
57 int cbesh_(doublecomplex *, double *, int *, int *, int *, doublecomplex *, int *, int *);
58 */
59 
60 #endif
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72