@@ -93,26 +93,26 @@ submodule (stdlib_linalg) stdlib_linalg_qr
93
93
! Get workspace size for QR operations
94
94
pure module subroutine get_qr_${ri}$_workspace(a,lwork,err)
95
95
!> Input matrix a[m,n]
96
- ${rt}$, intent(inout ), target :: a(:,:)
96
+ ${rt}$, intent(in ), target :: a(:,:)
97
97
!> Minimum workspace size for both operations
98
98
integer(ilp), intent(out) :: lwork
99
99
!> State return flag. Returns an error if the query failed
100
100
type(linalg_state_type), optional, intent(out) :: err
101
101
102
102
integer(ilp) :: m,n,k,info,lwork_qr,lwork_ord
103
- ${rt}$ :: work_dummy(1),tau_dummy(1)
103
+ ${rt}$ :: work_dummy(1),tau_dummy(1),a_dummy(1,1)
104
104
type(linalg_state_type) :: err0
105
105
106
106
lwork = -1_ilp
107
107
108
108
!> Problem sizes
109
109
m = size(a,1,kind=ilp)
110
110
n = size(a,2,kind=ilp)
111
- k = min(m,n)
111
+ k = min(m,n)
112
112
113
113
! QR space
114
114
lwork_qr = -1_ilp
115
- call geqrf(m,n,a ,m,tau_dummy,work_dummy,lwork_qr,info)
115
+ call geqrf(m,n,a_dummy ,m,tau_dummy,work_dummy,lwork_qr,info)
116
116
call handle_geqrf_info(info,m,n,lwork_qr,err0)
117
117
if (err0%error()) then
118
118
call linalg_error_handling(err0,err)
@@ -123,7 +123,7 @@ submodule (stdlib_linalg) stdlib_linalg_qr
123
123
! Ordering space (for full factorization)
124
124
lwork_ord = -1_ilp
125
125
call #{if rt.startswith('complex')}# ungqr #{else}# orgqr #{endif}# &
126
- (m,m,k,a ,m,tau_dummy,work_dummy,lwork_ord,info)
126
+ (m,m,k,a_dummy ,m,tau_dummy,work_dummy,lwork_ord,info)
127
127
call handle_orgqr_info(info,m,n,k,lwork_ord,err0)
128
128
if (err0%error()) then
129
129
call linalg_error_handling(err0,err)
0 commit comments