1 #ifndef __GSL_COMPLEX_H__
2 #define __GSL_COMPLEX_H__
3 
4 void gsl_complex_inverse  (gnm_complex const *a, gnm_complex *res);
5 void gsl_complex_arcsin   (gnm_complex const *a, gnm_complex *res);
6 void gsl_complex_arccos   (gnm_complex const *a, gnm_complex *res);
7 void gsl_complex_arctan   (gnm_complex const *a, gnm_complex *res);
8 void gsl_complex_arcsec   (gnm_complex const *a, gnm_complex *res);
9 void gsl_complex_arccsc   (gnm_complex const *a, gnm_complex *res);
10 void gsl_complex_arccot   (gnm_complex const *a, gnm_complex *res);
11 void gsl_complex_sinh     (gnm_complex const *a, gnm_complex *res);
12 void gsl_complex_cosh     (gnm_complex const *a, gnm_complex *res);
13 void gsl_complex_tanh     (gnm_complex const *a, gnm_complex *res);
14 void gsl_complex_sech     (gnm_complex const *a, gnm_complex *res);
15 void gsl_complex_csch     (gnm_complex const *a, gnm_complex *res);
16 void gsl_complex_coth     (gnm_complex const *a, gnm_complex *res);
17 void gsl_complex_arcsinh  (gnm_complex const *a, gnm_complex *res);
18 void gsl_complex_arccosh  (gnm_complex const *a, gnm_complex *res);
19 void gsl_complex_arctanh  (gnm_complex const *a, gnm_complex *res);
20 void gsl_complex_arcsech  (gnm_complex const *a, gnm_complex *res);
21 void gsl_complex_arccsch  (gnm_complex const *a, gnm_complex *res);
22 void gsl_complex_arccoth  (gnm_complex const *a, gnm_complex *res);
23 
24 static inline gnm_complex
gnm_complex_f1r_(void (* f)(gnm_complex const *,gnm_complex *),gnm_complex a1)25 gnm_complex_f1r_ (void (*f) (gnm_complex const *, gnm_complex *),
26 		  gnm_complex a1)
27 {
28 	gnm_complex res;
29 	f (&a1, &res);
30 	return res;
31 }
32 
33 #define GNM_CARCSIN(c1) (gnm_complex_f1r_ (gsl_complex_arcsin, (c1)))
34 #define GNM_CARCCOS(c1) (gnm_complex_f1r_ (gsl_complex_arccos, (c1)))
35 #define GNM_CARCTAN(c1) (gnm_complex_f1r_ (gsl_complex_arctan, (c1)))
36 #define GNM_CARCSEC(c1) (gnm_complex_f1r_ (gsl_complex_arcsec, (c1)))
37 #define GNM_CARCCSC(c1) (gnm_complex_f1r_ (gsl_complex_arccsc, (c1)))
38 #define GNM_CARCCOT(c1) (gnm_complex_f1r_ (gsl_complex_arccot, (c1)))
39 #define GNM_CSINH(c1) (gnm_complex_f1r_ (gsl_complex_sinh, (c1)))
40 #define GNM_CCOSH(c1) (gnm_complex_f1r_ (gsl_complex_cosh, (c1)))
41 #define GNM_CTANH(c1) (gnm_complex_f1r_ (gsl_complex_tanh, (c1)))
42 #define GNM_CSECH(c1) (gnm_complex_f1r_ (gsl_complex_sech, (c1)))
43 #define GNM_CCSCH(c1) (gnm_complex_f1r_ (gsl_complex_csch, (c1)))
44 #define GNM_CCOTH(c1) (gnm_complex_f1r_ (gsl_complex_coth, (c1)))
45 #define GNM_CARCSINH(c1) (gnm_complex_f1r_ (gsl_complex_arcsinh, (c1)))
46 #define GNM_CARCCOSH(c1) (gnm_complex_f1r_ (gsl_complex_arccosh, (c1)))
47 #define GNM_CARCTANH(c1) (gnm_complex_f1r_ (gsl_complex_arctanh, (c1)))
48 #define GNM_CARCSECH(c1) (gnm_complex_f1r_ (gsl_complex_arcsech, (c1)))
49 #define GNM_CARCCSCH(c1) (gnm_complex_f1r_ (gsl_complex_arccsch, (c1)))
50 #define GNM_CARCCOTH(c1) (gnm_complex_f1r_ (gsl_complex_arccoth, (c1)))
51 
52 #endif
53