PROGRAM xsavgol
C     driver for routine savgol
      INTEGER NMAX,NTEST
      PARAMETER(NMAX=1000,NTEST=6)
      INTEGER i,j,m,nl,np,nr,nltest(NTEST),nrtest(NTEST),mtest(NTEST)
      REAL c(NMAX),sum
      CHARACTER*39 ans(2*NTEST)
      DATA mtest /2,2,2,2,4,4/
      DATA nltest /2,3,4,5,4,5/
      DATA nrtest /2,1,0,5,4,5/
      DATA ans /'                         -0.086  0.343 ',
     *     ' 0.486  0.343 -0.086',
     *     '                 -0.143  0.171  0.343  ','0.371  0.257',
     *     '          0.086 -0.143 -0.086  0.257  0','.886',
     *     ' -0.084  0.021  0.103  0.161  0.196  0.',
     *     '207  0.196  0.161  0.103  0.021 -0.084',
     *     '          0.035 -0.128  0.070  0.315  0',
     *     '.417  0.315  0.070 -0.128  0.035',
     *     '  0.042 -0.105 -0.023  0.140  0.280  0.',
     *     '333  0.280  0.140 -0.023 -0.105  0.042'/
      write(*,*) 'M nl nr'
      write(*,'(t24,a)') 'Sample Savitzky-Golay Coefficients'
      do 13 i=1,NTEST
        m=mtest(i)
        nl=nltest(i)
        nr=nrtest(i)
        np=nl+nr+1
        call savgol(c,np,nl,nr,0,m)
        sum=0.
        do 11 j=1,np
          sum=sum+c(j)
11      continue
        write(*,'(1x,3i2)') m,nl,nr
        write(*,'(1x,a2,$)') '  '
        do 12 j=nl,4
          write(*,'(1x,a7,$)') ' '
12      continue
        write(*,'(11f7.3)') (c(j),j=nl+1,1,-1),(c(np-j+1),j=1,nr)
        write(*,'(1x,a6,f7.3)') 'Sum = ',sum
        write(*,'(1x,a12,/,4x,t4,a39,t43,a39)') 'Compare ans:',
     *       ans(2*i-1),ans(2*i)
13    continue
      END