      real function ppvalu (break, coef, l, k, x, jderiv )
c  from  * a practical guide to splines *  by c. de boor
calls  interv
calculates value at  x  of  jderiv-th derivative of pp fct from pp-repr
c
c******  i n p u t  ******
c  break, coef, l, k.....forms the pp-representation of the function  f
c        to be evaluated. specifically, the j-th derivative of  f  is
c        given by
c
c     (d**j)f(x) = coef(j+1,i) + h*(coef(j+2,i) + h*( ... (coef(k-1,i) +
c                             + h*coef(k,i)/(k-j-1))/(k-j-2) ... )/2)/1
c
c        with  h = x - break(i),  and
c
c       i  =  max( 1 , max( j ,  break(j) .le. x , 1 .le. j .le. l ) ).
c
c  x.....the point at which to evaluate.
c  jderiv.....integer giving the order of the derivative to be evaluat-
c        ed.  a s s u m e d  to be zero or positive.
c
c******  o u t p u t  ******
c  ppvalu.....the value of the (jderiv)-th derivative of  f  at  x.
c
c******  m e t h o d  ******
c     the interval index  i , appropriate for  x , is found through a
c  call to  interv . the formula above for the  jderiv-th derivative
c  of  f  is then evaluated (by nested multiplication).
c
      integer jderiv,k,l,   i,m,ndummy
      real break(l+1),coef(k,l),x,   fmmjdr,h
      ppvalu = 0.
      fmmjdr = k - jderiv
c              derivatives of order  k  or higher are identically zero.
      if (fmmjdr .le. 0.)               go to 99
c
c              find index  i  of largest breakpoint to the left of  x .
      call interv ( break, l+1, x, i, ndummy )
c
c      Evaluate  jderiv-th derivative of  i-th polynomial piece at  x .
      h = x - break(i)
      m = k
    9    ppvalu = (ppvalu/fmmjdr)*h + coef(m,i)
         m = m - 1
         fmmjdr = fmmjdr - 1.
         if (fmmjdr .gt. 0.)            go to 9
   99                                   return
      end