@@ -93,26 +93,26 @@ submodule (stdlib_linalg) stdlib_linalg_qr
9393 ! Get workspace size for QR operations
9494 pure module subroutine get_qr_${ri}$_workspace(a,lwork,err)
9595 !> Input matrix a[m,n]
96- ${rt}$, intent(inout ), target :: a(:,:)
96+ ${rt}$, intent(in ), target :: a(:,:)
9797 !> Minimum workspace size for both operations
9898 integer(ilp), intent(out) :: lwork
9999 !> State return flag. Returns an error if the query failed
100100 type(linalg_state_type), optional, intent(out) :: err
101101
102102 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)
104104 type(linalg_state_type) :: err0
105105
106106 lwork = -1_ilp
107107
108108 !> Problem sizes
109109 m = size(a,1,kind=ilp)
110110 n = size(a,2,kind=ilp)
111- k = min(m,n)
111+ k = min(m,n)
112112
113113 ! QR space
114114 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)
116116 call handle_geqrf_info(info,m,n,lwork_qr,err0)
117117 if (err0%error()) then
118118 call linalg_error_handling(err0,err)
@@ -123,7 +123,7 @@ submodule (stdlib_linalg) stdlib_linalg_qr
123123 ! Ordering space (for full factorization)
124124 lwork_ord = -1_ilp
125125 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)
127127 call handle_orgqr_info(info,m,n,k,lwork_ord,err0)
128128 if (err0%error()) then
129129 call linalg_error_handling(err0,err)
0 commit comments