Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:03:47

0001 /* complex/gsl_complex_math.h
0002  * 
0003  * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Jorma Olavi Tähtinen, Brian Gough
0004  * 
0005  * This program is free software; you can redistribute it and/or modify
0006  * it under the terms of the GNU General Public License as published by
0007  * the Free Software Foundation; either version 3 of the License, or (at
0008  * your option) any later version.
0009  * 
0010  * This program is distributed in the hope that it will be useful, but
0011  * WITHOUT ANY WARRANTY; without even the implied warranty of
0012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013  * General Public License for more details.
0014  * 
0015  * You should have received a copy of the GNU General Public License
0016  * along with this program; if not, write to the Free Software
0017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0018  */
0019 
0020 #ifndef __GSL_COMPLEX_MATH_H__
0021 #define __GSL_COMPLEX_MATH_H__
0022 #include <gsl/gsl_inline.h>
0023 #include <gsl/gsl_complex.h>
0024 
0025 #undef __BEGIN_DECLS
0026 #undef __END_DECLS
0027 #ifdef __cplusplus
0028 #define __BEGIN_DECLS extern "C" {
0029 #define __END_DECLS }
0030 #else
0031 #define __BEGIN_DECLS           /* empty */
0032 #define __END_DECLS             /* empty */
0033 #endif
0034 
0035 __BEGIN_DECLS
0036 
0037 /* Complex numbers */
0038 
0039 gsl_complex gsl_complex_polar (double r, double theta); /* r= r e^(i theta) */
0040 
0041 INLINE_DECL gsl_complex gsl_complex_rect (double x, double y);  /* r= real+i*imag */
0042 
0043 #ifdef HAVE_INLINE
0044 INLINE_FUN gsl_complex
0045 gsl_complex_rect (double x, double y)
0046 {                               /* return z = x + i y */
0047   gsl_complex z;
0048   GSL_SET_COMPLEX (&z, x, y);
0049   return z;
0050 }
0051 #endif
0052 
0053 #define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))
0054 #define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0))
0055 #define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0))
0056 
0057 /* Properties of complex numbers */
0058 
0059 double gsl_complex_arg (gsl_complex z); /* return arg(z), -pi< arg(z) <=+pi */
0060 double gsl_complex_abs (gsl_complex z);   /* return |z|   */
0061 double gsl_complex_abs2 (gsl_complex z);  /* return |z|^2 */
0062 double gsl_complex_logabs (gsl_complex z); /* return log|z| */
0063 
0064 /* Complex arithmetic operators */
0065 
0066 gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b);  /* r=a+b */
0067 gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b);  /* r=a-b */
0068 gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b);  /* r=a*b */
0069 gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b);  /* r=a/b */
0070                                                            
0071 gsl_complex gsl_complex_add_real (gsl_complex a, double x);  /* r=a+x */
0072 gsl_complex gsl_complex_sub_real (gsl_complex a, double x);  /* r=a-x */
0073 gsl_complex gsl_complex_mul_real (gsl_complex a, double x);  /* r=a*x */
0074 gsl_complex gsl_complex_div_real (gsl_complex a, double x);  /* r=a/x */
0075 
0076 gsl_complex gsl_complex_add_imag (gsl_complex a, double y);  /* r=a+iy */
0077 gsl_complex gsl_complex_sub_imag (gsl_complex a, double y);  /* r=a-iy */
0078 gsl_complex gsl_complex_mul_imag (gsl_complex a, double y);  /* r=a*iy */
0079 gsl_complex gsl_complex_div_imag (gsl_complex a, double y);  /* r=a/iy */
0080 
0081 gsl_complex gsl_complex_conjugate (gsl_complex z);  /* r=conj(z) */
0082 gsl_complex gsl_complex_inverse (gsl_complex a);    /* r=1/a */
0083 gsl_complex gsl_complex_negative (gsl_complex a);    /* r=-a */
0084 
0085 /* Elementary Complex Functions */
0086 
0087 gsl_complex gsl_complex_sqrt (gsl_complex z);  /* r=sqrt(z) */
0088 gsl_complex gsl_complex_sqrt_real (double x);  /* r=sqrt(x) (x<0 ok) */
0089 
0090 gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b);  /* r=a^b */
0091 gsl_complex gsl_complex_pow_real (gsl_complex a, double b);  /* r=a^b */
0092 
0093 gsl_complex gsl_complex_exp (gsl_complex a);    /* r=exp(a) */
0094 gsl_complex gsl_complex_log (gsl_complex a);    /* r=log(a) (base e) */
0095 gsl_complex gsl_complex_log10 (gsl_complex a);  /* r=log10(a) (base 10) */
0096 gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b);   /* r=log_b(a) (base=b) */
0097 
0098 /* Complex Trigonometric Functions */
0099 
0100 gsl_complex gsl_complex_sin (gsl_complex a);  /* r=sin(a) */
0101 gsl_complex gsl_complex_cos (gsl_complex a);  /* r=cos(a) */
0102 gsl_complex gsl_complex_sec (gsl_complex a);  /* r=sec(a) */
0103 gsl_complex gsl_complex_csc (gsl_complex a);  /* r=csc(a) */
0104 gsl_complex gsl_complex_tan (gsl_complex a);  /* r=tan(a) */
0105 gsl_complex gsl_complex_cot (gsl_complex a);  /* r=cot(a) */
0106 
0107 /* Inverse Complex Trigonometric Functions */
0108 
0109 gsl_complex gsl_complex_arcsin (gsl_complex a);  /* r=arcsin(a) */
0110 gsl_complex gsl_complex_arcsin_real (double a);  /* r=arcsin(a) */
0111 gsl_complex gsl_complex_arccos (gsl_complex a);  /* r=arccos(a) */
0112 gsl_complex gsl_complex_arccos_real (double a);  /* r=arccos(a) */
0113 gsl_complex gsl_complex_arcsec (gsl_complex a);  /* r=arcsec(a) */
0114 gsl_complex gsl_complex_arcsec_real (double a);  /* r=arcsec(a) */
0115 gsl_complex gsl_complex_arccsc (gsl_complex a);  /* r=arccsc(a) */
0116 gsl_complex gsl_complex_arccsc_real (double a);  /* r=arccsc(a) */
0117 gsl_complex gsl_complex_arctan (gsl_complex a);  /* r=arctan(a) */
0118 gsl_complex gsl_complex_arccot (gsl_complex a);  /* r=arccot(a) */
0119 
0120 /* Complex Hyperbolic Functions */
0121 
0122 gsl_complex gsl_complex_sinh (gsl_complex a);  /* r=sinh(a) */
0123 gsl_complex gsl_complex_cosh (gsl_complex a);  /* r=coshh(a) */
0124 gsl_complex gsl_complex_sech (gsl_complex a);  /* r=sech(a) */
0125 gsl_complex gsl_complex_csch (gsl_complex a);  /* r=csch(a) */
0126 gsl_complex gsl_complex_tanh (gsl_complex a);  /* r=tanh(a) */
0127 gsl_complex gsl_complex_coth (gsl_complex a);  /* r=coth(a) */
0128 
0129 /* Inverse Complex Hyperbolic Functions */
0130 
0131 gsl_complex gsl_complex_arcsinh (gsl_complex a);  /* r=arcsinh(a) */
0132 gsl_complex gsl_complex_arccosh (gsl_complex a);  /* r=arccosh(a) */
0133 gsl_complex gsl_complex_arccosh_real (double a);  /* r=arccosh(a) */
0134 gsl_complex gsl_complex_arcsech (gsl_complex a);  /* r=arcsech(a) */
0135 gsl_complex gsl_complex_arccsch (gsl_complex a);  /* r=arccsch(a) */
0136 gsl_complex gsl_complex_arctanh (gsl_complex a);  /* r=arctanh(a) */
0137 gsl_complex gsl_complex_arctanh_real (double a);  /* r=arctanh(a) */
0138 gsl_complex gsl_complex_arccoth (gsl_complex a);  /* r=arccoth(a) */
0139 
0140 __END_DECLS
0141 
0142 #endif /* __GSL_COMPLEX_MATH_H__ */