MODULE lu_interface
  INTERFACE
     SUBROUTINE lu(a)
       REAL(KIND(0.d0)), DIMENSION(:,:) :: a
     END SUBROUTINE lu
  END INTERFACE
  INTERFACE
     SUBROUTINE lusolve(a,b)
       REAL(KIND(0.d0)), DIMENSION(:,:):: a
       REAL(KIND(0.d0)), DIMENSION(:)  :: b
     END SUBROUTINE lusolve
  END INTERFACE
  INTERFACE
     SUBROUTINE lupp(a,r)
       REAL(KIND(0.d0)), DIMENSION(:,:) :: a
       INTEGER, DIMENSION(:)            :: r 
     END SUBROUTINE lupp
  END INTERFACE
  INTERFACE
     SUBROUTINE luppsolve(a,r,b)
       REAL(KIND(0.d0)), DIMENSION(:,:):: a
       REAL(KIND(0.d0)), DIMENSION(:)  :: b
       INTEGER, DIMENSION(:)           :: r
     END SUBROUTINE luppsolve
  END INTERFACE
  INTERFACE
     SUBROUTINE lupt(a,r,c)
       REAL(KIND(0.d0)), DIMENSION(:,:) :: a
       INTEGER, DIMENSION(:)            :: r, c
     END SUBROUTINE lupt
  END INTERFACE
  INTERFACE
     SUBROUTINE luptsolve(a,r,c,b)
       REAL(KIND(0.d0)), DIMENSION(:,:):: a
       REAL(KIND(0.d0)), DIMENSION(:)  :: b
       INTEGER, DIMENSION(:)           :: r,c
     END SUBROUTINE luptsolve
  END INTERFACE
END MODULE lu_interface
