test_camac16() { int ext; short buff[SIZE]; int cb[4] = {SIZE,0,0,0}; int i; /* QSTP transfers */ cdreg(&ext, BRANCH, CRATE, SLOT, SUBADDRESS); for (i=0; i<MAX_LOOPS; i++) { csubc(FUNCTION, ext, buff, cb); if (cb[0] != cb[1]) { printf("Error - loop=%d, desired transfer size=%d, actual=%d\n", i,cb[0],cb[1]); } } }
void psychfft(int n,int mode,float t,int nexp,Complex *w,Complex *x) { Complex c1,c2; int k,mm,ll,j,jj,kk,i,nn,nv2,nm1; float s; mm=1; ll=n; for(k=1;k<=nexp;k++) { nn=ll/2; jj=mm+1; for(i=1;i<=n;i=i+ll) { kk=i+nn; c1=caddc(x[i],x[kk]); x[kk]=csubc(x[i],x[kk]); x[i]=c1; } if(nn==1) continue; else { for(j=2;j<=nn;j++) { c2=w[jj]; for(i=j;i<=n;i=i+ll) { kk=i+nn; c1=caddc(x[i],x[kk]); x[kk]=cmulc(csubc(x[i],x[kk]),c2); x[i]=c1; } jj=jj+mm; } ll=nn; mm=mm*2; } } nv2=n/2; nm1=n-1; j=1; for(i=1;i<nm1;i++) { if(i>=j); else { c1=x[j]; x[j]=x[i]; x[i]=c1; } k=nv2; do { if(k>=j) break; else { j=j-k; k=k/2; } }while(1); j=j+k; } if(mode==0) s=t; else s=1./(t*(float)n); for(i=1;i<=n;i++) x[i]=cmulf(x[i],s); }