      PROGRAM xpcshft
C     driver for routine pcshft
      INTEGER NVAL
      REAL PIO2
      PARAMETER(NVAL=40, PIO2=1.5707963)
      INTEGER i,j,mval
      REAL a,b,func,poly,x,c(NVAL),d(NVAL)
      EXTERNAL func
      a=-PIO2
      b=PIO2
      call chebft(a,b,c,NVAL,func)
10    write(*,*) 'How many terms in Chebyshev evaluation?'
      write(*,'(1x,a,i2,a)') 'Enter n between 6 and ',NVAL,
     *     '. Enter n=0 to END.'
      read(*,*) mval
      if ((mval.le.0).or.(mval.gt.NVAL)) goto 20
      call chebpc(c,d,mval)
      call pcshft(a,b,d,mval)
C     test shifted polynomial
      write(*,'(1x,t10,a,t19,a,t29,a)') 'X','Actual','Polynomial'
      do 12 i=-8,8,1
        x=i*PIO2/10.0
        poly=d(mval)
        do 11 j=mval-1,1,-1
          poly=poly*x+d(j)
11      continue
        write(*,'(1x,3f12.6)') x,func(x),poly
12    continue
      goto 10
20    END

      REAL FUNCTION func(x)
      REAL x
      func=(x**2)*(x**2-2.0)*sin(x)
      END
