/* Steven Andrews, 5/99 */ /* See documentation called Cn doc */ /* Copyright 2003 by Steven Andrews. Permission is granted for non-commercial use of and modifications to the code. */ #ifndef __Cn_h #define __Cn_h #include #define CMPXmag(a,b) (sqrt((a)*(a)+(b)*(b))) #define CMPXang(a,b) ((b)?((a)?atan((b)/(a)):((b)>0?1.57079632679:4.71238898037)):((a)<0?3.14159265358:0)) typedef struct {float r;float i;} complex; float *makecmplx(float *ar,float *ai,float *c,int n); float *real(float *a,float *cr,int n); float *imag(float *a,float *ci,int n); float *magnitude(float *a,float *cr,int n); float *cmplxphase(float *a,float *cr,int n); float *CompConj(float *a,float *c,int n); float *rotateCV(float *a,float *c,int n,int p); float *rotate2CV(float *a,float *c,int n,float phi); float *multeikx(float *xr,float *a,float *c,int n,float k); float *multCV(float *a,float *b,float *c,int n); float *deriv2CV(float *a,float *c,int n,int p); float *integCV(float *a,float *c,int n); float FTStartDflt(float *xr,int n); float *fourier(float *xr,float *a,float *kr,float *c,int nx,int nk,int isign); float *realcosft(float *xr,float *ar,float *kr,float *cr,int nx,int nk); float *hankel(float *xr,float *ar,float *kr,float *cr,int nx,int nk,int samp); float *fft(float *xr,float *a,float *kr,float *c,int nn,int isign); #endif