@@ -8,6 +8,7 @@ submodule (stdlib_linalg) stdlib_linalg_solve
8
8
!! Solve linear system Ax=b
9
9
use stdlib_linalg_constants
10
10
use stdlib_linalg_lapack, only: gesv
11
+ use stdlib_linalg_lapack_aux, only: handle_gesv_info
11
12
use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
12
13
LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR
13
14
implicit none
@@ -16,29 +17,6 @@ submodule (stdlib_linalg) stdlib_linalg_solve
16
17
17
18
contains
18
19
19
- elemental subroutine handle_gesv_info(info,lda,n,nrhs,err)
20
- integer(ilp), intent(in) :: info,lda,n,nrhs
21
- type(linalg_state_type), intent(out) :: err
22
-
23
- ! Process output
24
- select case (info)
25
- case (0)
26
- ! Success
27
- case (-1)
28
- err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid problem size n=',n)
29
- case (-2)
30
- err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid rhs size n=',nrhs)
31
- case (-4)
32
- err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size a=',[lda,n])
33
- case (-7)
34
- err = linalg_state_type(this,LINALG_ERROR,'invalid matrix size a=',[lda,n])
35
- case (1:)
36
- err = linalg_state_type(this,LINALG_ERROR,'singular matrix')
37
- case default
38
- err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'catastrophic error')
39
- end select
40
-
41
- end subroutine handle_gesv_info
42
20
43
21
#:for nd,ndsuf,nde in ALL_RHS
44
22
#:for rk,rt,ri in RC_KINDS_TYPES
@@ -152,7 +130,7 @@ submodule (stdlib_linalg) stdlib_linalg_solve
152
130
call gesv(n,nrhs,amat,lda,ipiv,xmat,ldb,info)
153
131
154
132
! Process output
155
- call handle_gesv_info(info,lda,n,nrhs,err0)
133
+ call handle_gesv_info(this, info,lda,n,nrhs,err0)
156
134
157
135
if (copy_a) deallocate(amat)
158
136
if (.not.present(pivot)) deallocate(ipiv)
0 commit comments