1! { dg-do compile } 2! 3! PR fortran/48588 4! 5! Contributed by Andres Legarra. 6! 7 8MODULE LA_PRECISION 9IMPLICIT NONE 10INTEGER, PARAMETER :: dp = KIND(1.0D0) 11END MODULE LA_PRECISION 12 13module lapack90 14INTERFACE 15 SUBROUTINE DGESV_F90( A, B, IPIV, INFO ) 16 USE la_precision, ONLY: wp => dp 17 IMPLICIT NONE 18 INTEGER, INTENT(OUT), OPTIONAL :: INFO 19 INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:) 20 REAL(WP), INTENT(IN OUT) :: A(:,:), B(:,:) 21 END SUBROUTINE DGESV_F90 22END INTERFACE 23end module 24 25SUBROUTINE DGESV_F90( A, B, IPIV, INFO ) 26 USE la_precision, ONLY: wp => dp 27 IMPLICIT NONE 28 INTEGER, INTENT(OUT), OPTIONAL :: INFO 29 INTEGER, INTENT(OUT), OPTIONAL, TARGET :: IPIV(:) 30 REAL(WP), INTENT(IN OUT) :: A(:,:), B(:,:) 31END SUBROUTINE DGESV_F90 32 33MODULE DENSEOP 34 USE LAPACK90 35 implicit none 36 integer, parameter :: r8 = SELECTED_REAL_KIND( 15, 307 ) 37 real(r8)::denseop_tol=1.d-50 38 39 CONTAINS 40 41 SUBROUTINE GEINV8 (x) 42 real(r8)::x(:,:) 43 real(r8),allocatable::x_o(:,:) 44 allocate(x_o(size(x,1),size(x,1))) 45 CALL dgesv_f90(x,x_o) 46 x=x_o 47 END SUBROUTINE GEINV8 48END MODULE DENSEOP 49