* C09AAF Example Program Text * Mark 22 Release. NAG Copyright 2007. * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER NMAX, NWCMAX, NWLMAX PARAMETER (NMAX=850,NWCMAX=850,NWLMAX=20) * .. Local Scalars .. INTEGER I, IFAIL, N, NF, NNZ, NWC, NWL, NY CHARACTER*10 MODE, WAVNAM, WTRANS * .. Local Arrays .. DOUBLE PRECISION C(NWCMAX), X(NMAX), Y(NMAX) INTEGER DWTLEV(NWLMAX), ICOMM(100) * .. External Subroutines .. EXTERNAL C09AAF, C09CCF, C09CDF * .. Executable Statements .. WRITE (NOUT,*) 'C09AAF Example Program Results' WRITE (NOUT,*) * Skip heading in data file READ (NIN,*) * Read problem parameters READ (NIN,*) N READ (NIN,*) WAVNAM, MODE * IF (N.LE.NMAX .AND. N.GE.2) THEN WRITE (NOUT,99999) WAVNAM, MODE, N * * Read data array and write it out * READ (NIN,*) (X(I),I=1,N) * WRITE (NOUT,*) ' Input Data X :' WRITE (NOUT,99998) (X(I),I=1,N) * * Query wavelet filter dimensions * For Multi-Resolution Analysis, decomposition, WTRANS = 'M' * IFAIL = 1 WTRANS = 'Multilevel' CALL C09AAF(WAVNAM,WTRANS,MODE,N,NWL,NF,NWC,ICOMM,IFAIL) * IF (IFAIL.NE.0) THEN WRITE (NOUT,99997) IFAIL GO TO 40 END IF * * Perform Discrete Wavelet transform * IFAIL = 1 CALL C09CCF(N,X,NWCMAX,C,NWL,DWTLEV,ICOMM,IFAIL) * IF (IFAIL.EQ.0) THEN WRITE (NOUT,*) WRITE (NOUT,99996) NF WRITE (NOUT,99995) NWL WRITE (NOUT,99994) WRITE (NOUT,99993) (DWTLEV(I),I=1,NWL+1) WRITE (NOUT,99992) NWC NNZ = 0 DO 20 I = 1, NWL + 1 NNZ = NNZ + DWTLEV(I) 20 CONTINUE WRITE (NOUT,*) WRITE (NOUT,99991) WRITE (NOUT,99998) (C(I),I=1,NNZ) * * Reconstruct original data * NY = N IFAIL = 1 CALL C09CDF(NWL,NWCMAX,C,NY,Y,ICOMM,IFAIL) * IF (IFAIL.NE.0) THEN WRITE (NOUT,99990) IFAIL ELSE WRITE (NOUT,*) WRITE (NOUT,99989) WRITE (NOUT,99998) (Y(I),I=1,NY) END IF ELSE WRITE (NOUT,99988) IFAIL END IF * 40 END IF * 99999 FORMAT (1X,' Parameters read from file :: ',/' Wavelet : ', + A10,' End mode : ',A10,' N = ',I10) 99998 FORMAT (8(F8.3,1X),:) 99997 FORMAT (1X,' ** C09AAF returned with IFAIL = ',I5) 99996 FORMAT (1X,' Length of wavelet filter : ',I10) 99995 FORMAT (1X,' Number of Levels : ',I10) 99994 FORMAT (1X,' Number of coefficients in each level : ') 99993 FORMAT (16X,8(I8,1X),:) 99992 FORMAT (1X,' Total number of wavelet coefficients : ',I10) 99991 FORMAT (1X,' Wavelet coefficients C : ') 99990 FORMAT (1X,' ** C09CDF returned with IFAIL = ',I5) 99989 FORMAT (1X,' Reconstruction Y : ') 99988 FORMAT (1X,' ** C09CCF returned with IFAIL = ',I5) END