@@ -8,6 +8,7 @@ submodule (stdlib_linalg) stdlib_linalg_solve
88!! Solve linear system Ax=b
99 use stdlib_linalg_constants
1010 use stdlib_linalg_lapack, only: gesv
11+ use stdlib_linalg_lapack_aux, only: handle_gesv_info
1112 use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
1213 LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR
1314 implicit none
@@ -16,29 +17,6 @@ submodule (stdlib_linalg) stdlib_linalg_solve
1617
1718 contains
1819
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
4220
4321 #:for nd,ndsuf,nde in ALL_RHS
4422 #:for rk,rt,ri in RC_KINDS_TYPES
@@ -152,7 +130,7 @@ submodule (stdlib_linalg) stdlib_linalg_solve
152130 call gesv(n,nrhs,amat,lda,ipiv,xmat,ldb,info)
153131
154132 ! Process output
155- call handle_gesv_info(info,lda,n,nrhs,err0)
133+ call handle_gesv_info(this, info,lda,n,nrhs,err0)
156134
157135 if (copy_a) deallocate(amat)
158136 if (.not.present(pivot)) deallocate(ipiv)
0 commit comments