Skip to content

Commit b60888d

Browse files
committed
Moved handle_gesv_info and signature.
1 parent 07c244d commit b60888d

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

src/lapack/stdlib_linalg_lapack_aux.fypp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ module stdlib_linalg_lapack_aux
4343
public :: handle_potrf_info
4444
public :: handle_getri_info
4545
public :: handle_gesdd_info
46+
public :: handle_gesv_info
4647

4748
! SELCTG is a LOGICAL FUNCTION of three DOUBLE PRECISION arguments
4849
! used to select eigenvalues to sort to the top left of the Schur form.
@@ -1363,4 +1364,29 @@ module stdlib_linalg_lapack_aux
13631364

13641365
end subroutine handle_gesdd_info
13651366

1367+
elemental subroutine handle_gesv_info(this,info,lda,n,nrhs,err)
1368+
character(len=*), intent(in) :: this
1369+
integer(ilp), intent(in) :: info,lda,n,nrhs
1370+
type(linalg_state_type), intent(out) :: err
1371+
1372+
! Process output
1373+
select case (info)
1374+
case (0)
1375+
! Success
1376+
case (-1)
1377+
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid problem size n=',n)
1378+
case (-2)
1379+
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid rhs size n=',nrhs)
1380+
case (-4)
1381+
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size a=',[lda,n])
1382+
case (-7)
1383+
err = linalg_state_type(this,LINALG_ERROR,'invalid matrix size a=',[lda,n])
1384+
case (1:)
1385+
err = linalg_state_type(this,LINALG_ERROR,'singular matrix')
1386+
case default
1387+
err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'catastrophic error')
1388+
end select
1389+
1390+
end subroutine handle_gesv_info
1391+
13661392
end module stdlib_linalg_lapack_aux

src/stdlib_linalg_solve.fypp

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)