PROGRAM D12R6 C Driver for routine CONVLV PARAMETER(N=16,N2P2=34,M=9,PI=3.14159265) DIMENSION DATA(N),RESPNS(M),RESP(N),ANS(N2P2) DO 11 I=1,N DATA(I)=0.0 IF ((I.GE.(N/2-N/8)).AND.(I.LE.(N/2+N/8))) DATA(I)=1.0 11 CONTINUE DO 12 I=1,M RESPNS(I)=0.0 IF (I.GT.2 .AND. I.LT.7) RESPNS(I)=1.0 RESP(I)=RESPNS(I) 12 CONTINUE ISIGN=1 CALL CONVLV(DATA,N,RESP,M,ISIGN,ANS) C Compare with a direct convolution WRITE(*,'(/1X,T4,A,T13,A,T24,A)') 'I','CONVLV','Expected' DO 14 I=1,N CMP=0.0 DO 13 J=1,M/2 CMP=CMP+DATA(MOD(I-J-1+N,N)+1)*RESPNS(J+1) CMP=CMP+DATA(MOD(I+J-1,N)+1)*RESPNS(M-J+1) 13 CONTINUE CMP=CMP+DATA(I)*RESPNS(1) WRITE(*,'(1X,I3,3X,2F12.6)') I,ANS(I),CMP 14 CONTINUE END