      SUBROUTINE SPL1 ( X,Y,Y1,N,F,G )                                          
C                                                                               
C        CIVEN A SET OF FUNCTIONAL VALUES (Y) CORRESPONDING TO A SET OF MESH    
C        POINTS (X) TOGETHER WITH THE FIRST DERIVATIVES AT THE END POINTS       
C        Y1(1) , Y1(N) SUBROUTINE  SPL1  COMPUTES THE FIRST DERIVATIVES         
C        (SLOPES) AT ALL OTHER POINTS.                                          
C                                                                               
C        DESCRIPTION OF PARAMETERS                                              
C            X - VECTOR OF ARGUMENTS                                            
C           Y1 - VECTOR OF FIRST DERIVATIVES                                    
C            N - NUMBER OF MESH POINTS                                          
C         F,G - AUXILIARY VECTORS                                               
C                                                                               
      IMPLICIT REAL *8(A-H,O-Z)                                                 
      DIMENSION X(N),Y(N),Y1(N),F(N),G(N)                                       
C                                                                               
      F(1) = 1.0                                                                
      G(1) =  .0                                                                
      NM1 = N - 1                                                               
      DO 1 M = 2,N                                                              
      G(M) = X(M) - X(M-1)                                                      
    1 F(M) = (Y(M) - Y(M-1))/G(M)                                               
      DO 2 M = 2,NM1                                                            
      Y1(M) = 3.0*(G(M)*F(M+1) + G(M+1)*F(M))                                   
    2 F(M) =  2.0*(G(M)+G(M+1))                                                 
      DO 3 M = 2,NM1                                                            
      H = -G(M+1) / F(M-1)                                                      
      F(M) = F(M) + H*G(M-1)                                                    
    3 Y1(M) = Y1(M) + H*Y1(M-1)                                                 
      NJ = N                                                                    
      DO  4 M = 2,NM1                                                           
      NJ = NJ - 1                                                               
    4 Y1(NJ) = (Y1(NJ) - G(NJ)*Y1(NJ+1))/F(NJ)                                  
      RETURN                                                                    
      END                                                                       
