********************************************************************
function: *unnormalized* fft transform
- last mod: $Id: smallft.c,v 1.8 2000/03/10 13:21:18 xiphmont Exp $
+ last mod: $Id: smallft.c,v 1.9 2000/10/12 03:12:54 xiphmont Exp $
********************************************************************/
#include "smallft.h"
#include "misc.h"
-static void drfti1(int n, double *wa, int *ifac){
+static void drfti1(int n, float *wa, int *ifac){
static int ntryh[4] = { 4,2,3,5 };
- static double tpi = 6.28318530717958647692528676655900577;
- double arg,argh,argld,fi;
+ static float tpi = 6.28318530717958647692528676655900577;
+ float arg,argh,argld,fi;
int ntry=0,i,j=-1;
int k1, l1, l2, ib;
int ld, ii, ip, is, nq, nr;
for (j=0;j<ipm;j++){
ld+=l1;
i=is;
- argld=(double)ld*argh;
+ argld=(float)ld*argh;
fi=0.;
for (ii=2;ii<ido;ii+=2){
fi+=1.;
}
}
-static void fdrffti(int n, double *wsave, int *ifac){
+static void fdrffti(int n, float *wsave, int *ifac){
if (n == 1) return;
drfti1(n, wsave+n, ifac);
}
-static void dradf2(int ido,int l1,double *cc,double *ch,double *wa1){
+static void dradf2(int ido,int l1,float *cc,float *ch,float *wa1){
int i,k;
- double ti2,tr2;
+ float ti2,tr2;
int t0,t1,t2,t3,t4,t5,t6;
t1=0;
}
}
-static void dradf4(int ido,int l1,double *cc,double *ch,double *wa1,
- double *wa2,double *wa3){
- static double hsqt2 = .70710678118654752440084436210485;
+static void dradf4(int ido,int l1,float *cc,float *ch,float *wa1,
+ float *wa2,float *wa3){
+ static float hsqt2 = .70710678118654752440084436210485;
int i,k,t0,t1,t2,t3,t4,t5,t6;
- double ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
+ float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
t0=l1*ido;
t1=t0;
}
}
-static void dradfg(int ido,int ip,int l1,int idl1,double *cc,double *c1,
- double *c2,double *ch,double *ch2,double *wa){
+static void dradfg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
+ float *c2,float *ch,float *ch2,float *wa){
- static double tpi=6.28318530717958647692528676655900577;
+ static float tpi=6.28318530717958647692528676655900577;
int idij,ipph,i,j,k,l,ic,ik,is;
int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
- double dc2,ai1,ai2,ar1,ar2,ds2;
+ float dc2,ai1,ai2,ar1,ar2,ds2;
int nbd;
- double dcp,arg,dsp,ar1h,ar2h;
+ float dcp,arg,dsp,ar1h,ar2h;
int idp2,ipp2;
- arg=tpi/(double)ip;
+ arg=tpi/(float)ip;
dcp=cos(arg);
dsp=sin(arg);
ipph=(ip+1)>>1;
}
}
-static void drftf1(int n,double *c,double *ch,double *wa,int *ifac){
+static void drftf1(int n,float *c,float *ch,float *wa,int *ifac){
int i,k1,l1,l2;
int na,kh,nf;
int ip,iw,ido,idl1,ix2,ix3;
for(i=0;i<n;i++)c[i]=ch[i];
}
-static void dradb2(int ido,int l1,double *cc,double *ch,double *wa1){
+static void dradb2(int ido,int l1,float *cc,float *ch,float *wa1){
int i,k,t0,t1,t2,t3,t4,t5,t6;
- double ti2,tr2;
+ float ti2,tr2;
t0=l1*ido;
}
}
-static void dradb3(int ido,int l1,double *cc,double *ch,double *wa1,
- double *wa2){
- static double taur = -.5;
- static double taui = .86602540378443864676372317075293618;
+static void dradb3(int ido,int l1,float *cc,float *ch,float *wa1,
+ float *wa2){
+ static float taur = -.5;
+ static float taui = .86602540378443864676372317075293618;
int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
- double ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
+ float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
t0=l1*ido;
t1=0;
}
}
-static void dradb4(int ido,int l1,double *cc,double *ch,double *wa1,
- double *wa2,double *wa3){
- static double sqrt2=1.4142135623730950488016887242097;
+static void dradb4(int ido,int l1,float *cc,float *ch,float *wa1,
+ float *wa2,float *wa3){
+ static float sqrt2=1.4142135623730950488016887242097;
int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;
- double ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
+ float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
t0=l1*ido;
t1=0;
}
}
-static void dradbg(int ido,int ip,int l1,int idl1,double *cc,double *c1,
- double *c2,double *ch,double *ch2,double *wa){
- static double tpi=6.28318530717958647692528676655900577;
+static void dradbg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
+ float *c2,float *ch,float *ch2,float *wa){
+ static float tpi=6.28318530717958647692528676655900577;
int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,
t11,t12;
- double dc2,ai1,ai2,ar1,ar2,ds2;
+ float dc2,ai1,ai2,ar1,ar2,ds2;
int nbd;
- double dcp,arg,dsp,ar1h,ar2h;
+ float dcp,arg,dsp,ar1h,ar2h;
int ipp2;
t10=ip*ido;
t0=l1*ido;
- arg=tpi/(double)ip;
+ arg=tpi/(float)ip;
dcp=cos(arg);
dsp=sin(arg);
nbd=(ido-1)>>1;
}
}
-static void drftb1(int n, double *c, double *ch, double *wa, int *ifac){
+static void drftb1(int n, float *c, float *ch, float *wa, int *ifac){
int i,k1,l1,l2;
int na;
int nf,ip,iw,ix2,ix3,ido,idl1;
for(i=0;i<n;i++)c[i]=ch[i];
}
-void drft_forward(drft_lookup *l,double *data){
+void drft_forward(drft_lookup *l,float *data){
if(l->n==1)return;
drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
}
-void drft_backward(drft_lookup *l,double *data){
+void drft_backward(drft_lookup *l,float *data){
if (l->n==1)return;
drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
}
void drft_init(drft_lookup *l,int n){
l->n=n;
- l->trigcache=calloc(3*n,sizeof(double));
+ l->trigcache=calloc(3*n,sizeof(float));
l->splitcache=calloc(32,sizeof(int));
fdrffti(n, l->trigcache, l->splitcache);
}