@@ -331,37 +331,40 @@ function leftorth!(t::TensorMap{<:RealOrComplexFloat};
331331 InnerProductStyle (t) === EuclideanInnerProduct () ||
332332 throw_invalid_innerproduct (:leftorth! )
333333
334+ VC = MatrixAlgebraKit. initialize_output (left_orth!, t)
335+
334336 if alg isa QR
335- return left_orth! (t; kind= :qr , atol, rtol)
337+ return left_orth! (t, VC ; kind= :qr , atol, rtol)
336338 elseif alg isa QRpos
337- return left_orth! (t; kind= :qrpos , atol, rtol)
339+ return left_orth! (t, VC ; kind= :qrpos , atol, rtol)
338340 elseif alg isa SDD
339- return left_orth! (t; kind= :svd , atol, rtol)
341+ return left_orth! (t, VC ; kind= :svd , atol, rtol)
340342 elseif alg isa Polar
341- return left_orth! (t; kind= :polar , atol, rtol)
343+ return left_orth! (t, VC ; kind= :polar , atol, rtol)
342344 elseif alg isa SVD
343345 kind = :svd
344346 if iszero (atol) && iszero (rtol)
345347 alg′ = LAPACK_QRIteration ()
346- return left_orth! (t; kind, alg= BlockAlgorithm (alg′, default_blockscheduler (t)),
348+ return left_orth! (t, VC; kind,
349+ alg= BlockAlgorithm (alg′, default_blockscheduler (t)),
347350 atol, rtol)
348351 else
349352 trunc = MatrixAlgebraKit. TruncationKeepAbove (atol, rtol)
350353 svd_alg = LAPACK_QRIteration ()
351354 scheduler = default_blockscheduler (t)
352355 alg′ = MatrixAlgebraKit. TruncatedAlgorithm (BlockAlgorithm (svd_alg, scheduler),
353356 trunc)
354- return left_orth! (t; kind, alg= alg′, atol, rtol)
357+ return left_orth! (t, VC ; kind, alg= alg′, atol, rtol)
355358 end
356359 elseif alg isa QL
357360 _reverse! (t; dims= 2 )
358- Q, R = left_orth! (t; kind= :qr , atol, rtol)
361+ Q, R = left_orth! (t, VC ; kind= :qr , atol, rtol)
359362 _reverse! (Q; dims= 2 )
360363 _reverse! (R)
361364 return Q, R
362365 elseif alg isa QLpos
363366 _reverse! (t; dims= 2 )
364- Q, R = left_orth! (t; kind= :qrpos , atol, rtol)
367+ Q, R = left_orth! (t, VC ; kind= :qrpos , atol, rtol)
365368 _reverse! (Q; dims= 2 )
366369 _reverse! (R)
367370 return Q, R
0 commit comments