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