mkfilter/xxx/complex.h

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

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