      subroutine GINTRP(TOUT,YOUT,YPOUT,Y)
      common/GEDATA/T,HOLD,RVAR(10),NEQN,K,IVAR(5),LVAR
      double precision T,HOLD,RVAR,TOUT,YOUT,YPOUT,Y,S,FACT,
     &                 TEMP1,TEMP2
      integer NEQN,KP1,K,KP2,J,I,JBACK,IVAR
      logical LVAR
      dimension YOUT(NEQN),YPOUT(NEQN),Y(NEQN,7),FACT(7)
      S = (TOUT-T)/HOLD
      KP1 = K+1
      KP2 = K+2
      do 100 J = 2, KP1
         FACT(J) = float(J-1)/HOLD
100   continue
      do 120 I = 1, NEQN
         TEMP1 = 0.0
         TEMP2 = 0.0
         do 110 JBACK = 1, K
            J = KP2-JBACK
            TEMP1 = TEMP1*S+Y(I,J)
            TEMP2 = TEMP2*S+Y(I,J)*FACT(J)
110      continue
         YOUT(I) = TEMP1*S+Y(I,1)
         YPOUT(I) = TEMP2
120   continue
      return
      end
