Skip to content

Commit 611b280

Browse files
committed
Moved handle_geqrf_info
1 parent 1023129 commit 611b280

File tree

2 files changed

+28
-25
lines changed

2 files changed

+28
-25
lines changed

src/lapack/stdlib_linalg_lapack_aux.fypp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ module stdlib_linalg_lapack_aux
4545
public :: handle_gesdd_info
4646
public :: handle_gesv_info
4747
public :: handle_gees_info
48+
public :: handle_geqrf_info
4849

4950
! SELCTG is a LOGICAL FUNCTION of three DOUBLE PRECISION arguments
5051
! used to select eigenvalues to sort to the top left of the Schur form.
@@ -1433,4 +1434,27 @@ module stdlib_linalg_lapack_aux
14331434

14341435
end subroutine handle_gees_info
14351436

1437+
elemental subroutine handle_geqrf_info(this,info,m,n,lwork,err)
1438+
character(len=*), intent(in) :: this
1439+
integer(ilp), intent(in) :: info,m,n,lwork
1440+
type(linalg_state_type), intent(out) :: err
1441+
1442+
! Process output
1443+
select case (info)
1444+
case (0)
1445+
! Success
1446+
case (-1)
1447+
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size m=',m)
1448+
case (-2)
1449+
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size n=',n)
1450+
case (-4)
1451+
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size a=',[m,n])
1452+
case (-7)
1453+
err = linalg_state_type(this,LINALG_ERROR,'invalid input for lwork=',lwork)
1454+
case default
1455+
err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'catastrophic error')
1456+
end select
1457+
1458+
end subroutine handle_geqrf_info
1459+
14361460
end module stdlib_linalg_lapack_aux

src/stdlib_linalg_qr.fypp

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
submodule (stdlib_linalg) stdlib_linalg_qr
44
use stdlib_linalg_constants
55
use stdlib_linalg_lapack, only: geqrf, orgqr, ungqr
6+
use stdlib_linalg_lapack_aux, only: handle_geqrf_info
67
use stdlib_linalg_state, only: linalg_state_type, linalg_error_handling, LINALG_ERROR, &
78
LINALG_INTERNAL_ERROR, LINALG_VALUE_ERROR
89
implicit none
@@ -64,29 +65,7 @@ submodule (stdlib_linalg) stdlib_linalg_qr
6465
err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'catastrophic error')
6566
end select
6667

67-
end subroutine handle_orgqr_info
68-
69-
elemental subroutine handle_geqrf_info(info,m,n,lwork,err)
70-
integer(ilp), intent(in) :: info,m,n,lwork
71-
type(linalg_state_type), intent(out) :: err
72-
73-
! Process output
74-
select case (info)
75-
case (0)
76-
! Success
77-
case (-1)
78-
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size m=',m)
79-
case (-2)
80-
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size n=',n)
81-
case (-4)
82-
err = linalg_state_type(this,LINALG_VALUE_ERROR,'invalid matrix size a=',[m,n])
83-
case (-7)
84-
err = linalg_state_type(this,LINALG_ERROR,'invalid input for lwork=',lwork)
85-
case default
86-
err = linalg_state_type(this,LINALG_INTERNAL_ERROR,'catastrophic error')
87-
end select
88-
89-
end subroutine handle_geqrf_info
68+
end subroutine handle_orgqr_info
9069

9170
#:for rk,rt,ri in RC_KINDS_TYPES
9271

@@ -113,7 +92,7 @@ submodule (stdlib_linalg) stdlib_linalg_qr
11392
! QR space
11493
lwork_qr = -1_ilp
11594
call geqrf(m,n,a_dummy,m,tau_dummy,work_dummy,lwork_qr,info)
116-
call handle_geqrf_info(info,m,n,lwork_qr,err0)
95+
call handle_geqrf_info(this,info,m,n,lwork_qr,err0)
11796
if (err0%error()) then
11897
call linalg_error_handling(err0,err)
11998
return
@@ -224,7 +203,7 @@ submodule (stdlib_linalg) stdlib_linalg_qr
224203

225204
! Compute factorization.
226205
call geqrf(m,n,amat,m,tau,work,lwork,info)
227-
call handle_geqrf_info(info,m,n,lwork,err0)
206+
call handle_geqrf_info(this,info,m,n,lwork,err0)
228207

229208
if (err0%ok()) then
230209

0 commit comments

Comments
 (0)