#define NPOLE 6 #define NPOLEM1 5 float cq,outold; main() { float z,sig[100],past[100],d,c[100],out[100],x; float bwarppol(),past4[100],out2[100],ballpole(),allpole(); float warpset(),cl,warppol(),zz,past2[100],past3[100]; int i,npoles,nvals,j,jcount; jcount = 0; for(j=0; j<100; j++) { sig[j] = past[j] = out[j]= past2[j] = past3[j] = past4[j] = out2[j]; c[j] = 1./(float)((j+1)*100); } z=d=0; warpinit(); cl=warpset(d,c); x=1; sig[0]=1; ballpole(sig,&jcount,NPOLE,past3,c,out,30); bwarppol(sig,NPOLE,past4,d,c,out2,30); warpinit(); cl=warpset(d,c); jcount=0; for(i=0; i<30; i++) { z=allpole(x,&jcount,NPOLE,past,c); zz=warppol(x,past2,d,c); printf("%d %e %e %e %e %e\n",i,z,zz,cl,out[i],out2[i]); x=0; } } float allpole(x,jcount,npoles,past,c) float x,*past,*c; long *jcount,npoles; { int j,nfint; for(j= *jcount, nfint=0; nfint=0; n--) { temp2 = past[n]; past[n] = d * (past[n+1] - past[n]) + temp1; temp1 = temp2; } for(n=0;n=0; n--) { temp2 = past[n]; past[n] = d * (past[n+1] - past[n]) + temp1; temp1 = temp2; } for(n=0;n