119 integer,
intent(in) :: m, n, ldl, ldr
120 integer,
intent(inout) :: p(*)
121 complex(real64),
intent(inout) :: L(ldl,*), R(ldr,*)
122 complex(real64),
intent(in) :: u(*), v(*)
123 complex(real64),
intent(out) :: w(*)
124 complex(real64) one,tmp
126 parameter(one = 1d0, tau = 1d-1)
127 integer k,info,i,j,itmp
128 external zcopy,zaxpy,ztrsv,zgeru,zgemv,zswap
138 else if (ldl < m)
then
140 else if (ldr < k)
then
151 call ztrsv(
'L',
'N',
'U',k,l,ldl,w,1)
154 call zgemv(
'N',m-k,k,-one,l(k+1,1),ldl,w,1,one,w(k+1),1)
158 if (abs(w(j)) < tau * abs(l(j+1,j)*w(j) + w(j+1)))
then
168 call zswap(m-j+1,l(j,j),1,l(j,j+1),1)
169 call zswap(j+1,l(j,1),ldl,l(j+1,1),ldl)
171 call zswap(n-j+1,r(j,j),ldr,r(j+1,j),ldr)
174 call zaxpy(m-j+1,tmp,l(j,j),1,l(j,j+1),1)
176 call zaxpy(n-j+1,-tmp,r(j+1,j),ldr,r(j,j),ldr)
178 w(j) = w(j) - tmp*w(j+1)
184 call zaxpy(n-j+1,-tmp,r(j,j),ldr,r(j+1,j),ldr)
186 call zaxpy(m-j,tmp,l(j+1,j+1),1,l(j+1,j),1)
189 call zaxpy(n,w(1),v,1,r(1,1),ldr)
192 if (abs(r(j,j)) < tau * abs(l(j+1,j)*r(j,j) + r(j+1,j)))
then
199 call zswap(m-j+1,l(j,j),1,l(j,j+1),1)
200 call zswap(j+1,l(j,1),ldl,l(j+1,1),ldl)
202 call zswap(n-j+1,r(j,j),ldr,r(j+1,j),ldr)
205 call zaxpy(m-j+1,tmp,l(j,j),1,l(j,j+1),1)
207 call zaxpy(n-j+1,-tmp,r(j+1,j),ldr,r(j,j),ldr)
210 tmp = r(j+1,j)/r(j,j)
213 call zaxpy(n-j,-tmp,r(j,j+1),ldr,r(j+1,j+1),ldr)
215 call zaxpy(m-j,tmp,l(j+1,j+1),1,l(j+1,j),1)
219 call zcopy(k,v,1,w,1)
220 call ztrsv(
'U',
'T',
'N',k,r,ldr,w,1)
221 call zgeru(m-k,k,one,w(k+1),1,w,1,l(k+1,1),ldl)