@@ -4,6 +4,7 @@ submodule (stdlib_linalg) stdlib_linalg_inverse
44!! Compute inverse of a square matrix
55 use stdlib_linalg_constants
66 use stdlib_linalg_lapack, only: getri,getrf,stdlib_ilaenv
7+ use stdlib_linalg_lapack_aux, only: handle_getri_info
78 use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
89 LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR
910 use ieee_arithmetic, only: ieee_value, ieee_quiet_nan
@@ -13,25 +14,6 @@ submodule (stdlib_linalg) stdlib_linalg_inverse
1314
1415 contains
1516
16- elemental subroutine handle_getri_info(info,lda,n,err)
17- integer(ilp), intent(in) :: info,lda,n
18- type(linalg_state_type), intent(out) :: err
19-
20- ! Process output
21- select case (info)
22- case (0)
23- ! Success
24- case (:-1)
25- err = linalg_state_type(this,LINALG_ERROR,'invalid matrix size a=',[lda,n])
26- case (1:)
27- ! Matrix is singular
28- err = linalg_state_type(this,LINALG_ERROR,'singular matrix')
29- case default
30- err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'catastrophic error')
31- end select
32-
33- end subroutine handle_getri_info
34-
3517 #:for rk,rt,ri in RC_KINDS_TYPES
3618 ! Compute the in-place square matrix inverse of a
3719 module subroutine stdlib_linalg_invert_inplace_${ri}$(a,pivot,err)
@@ -86,7 +68,7 @@ submodule (stdlib_linalg) stdlib_linalg_inverse
8668 endif
8769
8870 ! Process output
89- call handle_getri_info(info,lda,n,err0)
71+ call handle_getri_info(this, info,lda,n,err0)
9072
9173 ! Process output and return
9274 if (.not.present(pivot)) deallocate(ipiv)
0 commit comments