1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include "../eus.h"
pointer FFT(n,argv)
int n;
pointer argv[];
{ pointer a;
int size;
float *wsave;
ckarg(1);
a=argv[0];
if (!isfltvector(a)) error(E_FLOATVECTOR);
size=vecsize(a);
wsave=(float *)malloc((size*3+15)*sizeof(float));
rffti_(&size,wsave);
rfftf_(&size,a->c.fvec.fv,wsave);
free(wsave);
return(a);}
pointer INVFFT(n,argv)
int n;
pointer argv[];
{ pointer a;
int size;
float *wsave;
ckarg(1);
a=argv[0];
if (!isfltvector(a)) error(E_FLOATVECTOR);
size=vecsize(a);
wsave=(float *)malloc((size*3+15)*sizeof(float));
rffti_(&size,wsave);
rfftb_(&size,a->c.fvec.fv,wsave);
free(wsave);
return(a);}
eusmain(mod)
pointer mod;
{
defun("FFT",mod,FFT,NULL);
defun("INVERSE-FFT",mod,INVFFT,NULL);
}
|