@@ -4,6 +4,7 @@ submodule (stdlib_linalg) stdlib_linalg_inverse
4
4
!! Compute inverse of a square matrix
5
5
use stdlib_linalg_constants
6
6
use stdlib_linalg_lapack, only: getri,getrf,stdlib_ilaenv
7
+ use stdlib_linalg_lapack_aux, only: handle_getri_info
7
8
use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
8
9
LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR
9
10
use ieee_arithmetic, only: ieee_value, ieee_quiet_nan
@@ -13,25 +14,6 @@ submodule (stdlib_linalg) stdlib_linalg_inverse
13
14
14
15
contains
15
16
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
-
35
17
#:for rk,rt,ri in RC_KINDS_TYPES
36
18
! Compute the in-place square matrix inverse of a
37
19
module subroutine stdlib_linalg_invert_inplace_${ri}$(a,pivot,err)
@@ -86,7 +68,7 @@ submodule (stdlib_linalg) stdlib_linalg_inverse
86
68
endif
87
69
88
70
! Process output
89
- call handle_getri_info(info,lda,n,err0)
71
+ call handle_getri_info(this, info,lda,n,err0)
90
72
91
73
! Process output and return
92
74
if (.not.present(pivot)) deallocate(ipiv)
0 commit comments