Program c06rdfe ! C06RDF Example Program Text ! Mark 24 Release. NAG Copyright 2012. ! .. Use Statements .. Use nag_library, Only: c06rdf, nag_wp ! .. Implicit None Statement .. Implicit None ! .. Parameters .. Integer, Parameter :: nin = 5, nout = 6 ! .. Local Scalars .. Integer :: i, ieof, ifail, j, m, n ! .. Local Arrays .. Real (Kind=nag_wp), Allocatable :: work(:), x(:) ! .. Executable Statements .. Write (nout,*) 'C06RDF Example Program Results' ! Skip heading in data file Read (nin,*) loop: Do Read (nin,*,Iostat=ieof) m, n If (ieof<0) Exit loop Allocate (x(m*(n+2)),work(m*n+2*n+15)) Do j = 1, m Read (nin,*)(x(i*m+j),i=0,n-1) End Do Write (nout,*) Write (nout,*) 'Original data values' Write (nout,*) Do j = 1, m Write (nout,99999)(x(i*m+j),i=0,n-1) End Do ! ifail: behaviour on error exit ! =0 for hard exit, =1 for quiet-soft, =-1 for noisy-soft ifail = 0 ! -- Compute transform Call c06rdf('Forward',m,n,x,work,ifail) Write (nout,*) Write (nout,*) 'Discrete quarter-wave Fourier cosine transforms' Write (nout,*) Do j = 1, m Write (nout,99999)(x(i*m+j),i=0,n-1) End Do ! -- Compute inverse transform Call c06rdf('Backward',m,n,x,work,ifail) Write (nout,*) Write (nout,*) 'Original data as restored by inverse transform' Write (nout,*) Do j = 1, m Write (nout,99999)(x(i*m+j),i=0,n-1) End Do Deallocate (x,work) End Do loop 99999 Format (6X,7F10.4) End Program c06rdfe