mkfilter/complex.h

00001 struct c_complex
00002 {
00003     double re, im;
00004 };
00005 
00006 struct complex
00007 {
00008     double re;
00009     double im;
00010     complex(double r, double i = 0.0) { re = r; im = i; }
00011     complex() { }                                       /* uninitialized complex */
00012     complex(c_complex z) { re = z.re; im = z.im; }      /* init from denotation */
00013 };
00014 
00015 extern complex csqrt(complex);
00016 extern complex cexp(complex);
00017 extern complex expj(double);        /* from complex.C */
00018 extern complex evaluate(complex[], int, complex[], int, complex);   /* from complex.C */
00019 
00020 inline double hypot(complex z) { return ::hypot(z.im, z.re); }
00021 inline double atan2(complex z) { return ::atan2(z.im, z.re); }
00022 
00023 inline complex cconj(complex z)
00024 {
00025     z.im = -z.im;
00026     return z;
00027 }
00028 
00029 inline complex operator * (double a, complex z)
00030 {
00031     z.re *= a; z.im *= a;
00032     return z;
00033 }
00034 
00035 inline complex operator / (complex z, double a)
00036 {
00037     z.re /= a; z.im /= a;
00038     return z;
00039 }
00040 
00041 inline void operator /= (complex &z, double a)
00042 {
00043     z = z / a;
00044 }
00045 
00046 extern complex operator * (complex, complex);
00047 extern complex operator / (complex, complex);
00048 
00049 inline complex operator + (complex z1, complex z2)
00050 {
00051     z1.re += z2.re;
00052     z1.im += z2.im;
00053     return z1;
00054 }
00055 
00056 inline complex operator - (complex z1, complex z2)
00057 {
00058     z1.re -= z2.re;
00059     z1.im -= z2.im;
00060     return z1;
00061 }
00062 
00063 inline complex operator - (complex z)
00064 {
00065     return 0.0 - z;
00066 }
00067 
00068 inline bool operator == (complex z1, complex z2)
00069 {
00070     return (z1.re == z2.re)  &&  (z1.im == z2.im);
00071 }
00072 
00073 inline complex sqr(complex z)
00074 {
00075     return z*z;
00076 }

Generated on Tue Oct 7 20:25:45 2008 for spandsp by  doxygen 1.5.6