1 /*/////////////////////////////////////////////////////////////////////////////////////
2 // project : sFFe ( SegFault (or Segmentation Fault :) ) formula evalutaor )
3 // author  : Mateusz Malczak ( mateusz@malczak.info )
4 // wpage   :
5 /////////////////////////////////////////////////////////////////////////////////////*/
6 #ifndef SFFE_CMPLX_GSL_H
7 #define SFFE_CMPLX_GSL_H
8 
9 #ifdef SFFE_CMPLX_GSL
10 
11 #include "sffe.h"
12 
13 #include <gsl/gsl_complex.h>
14 #include <gsl/gsl_complex_math.h>
15 
16 #define sffnctscount 43
17 #define sfvarscount 6
18 #define cmplxset(c, r, i) GSL_SET_COMPLEX(&c, r, i)
19 #define real(c) GSL_REAL((c))
20 #define imag(c) GSL_IMAG((c))
21 
22 sfarg *sfadd(sfarg *const p);   /*  +  */
23 sfarg *sfsub(sfarg *const p);   /*  -  */
24 sfarg *sfmul(sfarg *const p);   /*  *  */
25 sfarg *sfdiv(sfarg *const p);   /*  /  */
26 sfarg *sfsin(sfarg *const p);   /* sin */
27 sfarg *sfcos(sfarg *const p);   /* cos */
28 sfarg *sftan(sfarg *const p);   /* tan */
29 sfarg *sfcot(sfarg *const p);   /* ctan */
30 sfarg *sfasin(sfarg *const p);  /* asin */
31 sfarg *sfacos(sfarg *const p);  /* acos */
32 sfarg *sfatan(sfarg *const p);  /* atan */
33 sfarg *sfacot(sfarg *const p);  /* actan */
34 sfarg *sfatan2(sfarg *const p); /* atan2 */
35 sfarg *sfsinh(sfarg *const p);  /* sinh */
36 sfarg *sfcosh(sfarg *const p);  /* cosh */
37 sfarg *sftanh(sfarg *const p);  /* tanh */
38 sfarg *sfcoth(sfarg *const p);  /* ctanh */
39 sfarg *sfexp(sfarg *const p);   /* exp */
40 sfarg *sflog(sfarg *const p);   /* log */
41 sfarg *sflog10(sfarg *const p); /* log10 */
42 sfarg *sflog2(sfarg *const p);  /* log2 */
43 sfarg *sflogN(sfarg *const p);  /* logN */
44 sfarg *sfpow(sfarg *const p);   /* csflx pow */
45 sfarg *sfpowd(sfarg *const p);  /* double pow */
46 sfarg *sfpowi(sfarg *const p);  /* double pow */
47 sfarg *sfpowdc(sfarg *const p); /* double to csflx pow */
48 sfarg *sfsqr(sfarg *const p);   /* sqr */
49 sfarg *sfsqrt(sfarg *const p);  /* sqrt */
50 sfarg *sfrtni(sfarg *const p);  /* rtni */
51 sfarg *sfinv(sfarg *const p);   /* cinv */
52 sfarg *sfceil(sfarg *const p);  /* ceil */
53 sfarg *sffloor(sfarg *const p); /* floor */
54 sfarg *sfabs(sfarg *const p);   /* abs - |z| */
55 sfarg *sfre(sfarg *const p);    /* RE */
56 sfarg *sfim(sfarg *const p);    /* IM */
57 sfarg *sfrabs(sfarg *const p);  /* abs - real numbers */
58 sfarg *sfrand(sfarg *const p);  /* rand */
59 /*const eval*/
60 void sfcPI(sfNumber *cnst);
61 void sfcPI2(sfNumber *cnst);
62 void sfc2PI(sfNumber *cnst);
63 void sfcE(sfNumber *cnst);
64 void sfcI(sfNumber *cnst);
65 void sfcRND(sfNumber *cnst);
66 
67 /* all available function (function pointer, number of parameters, name )*/
68 extern const sffunction sfcmplxfunc[sffnctscount];
69 /* all available buildin variables */
70 extern const char sfcnames[sfvarscount][6];
71 /* available variables function pointers */
72 extern const cfptr sfcvals[sfvarscount];
73 
74 #endif
75 #endif
76