@@ -177,28 +177,35 @@ function \(U::UnitUpperTriangular, H::UpperHessenberg)
177177 UpperHessenberg (HH)
178178end
179179
180- function (\ )(H:: Union{UpperHessenberg,AdjOrTrans{<:Any,<:UpperHessenberg}} , B:: AbstractVecOrMat )
180+ AdjUpperHessenberg{T,S<: UpperHessenberg{T} } = Adjoint{T, S}
181+ TransUpperHessenberg{T,S<: UpperHessenberg{T} } = Transpose{T, S}
182+ AdjOrTransUpperHessenberg{T,S<: UpperHessenberg{T} } = AdjOrTrans{T, S}
183+
184+ function (\ )(H:: Union{UpperHessenberg,AdjOrTransUpperHessenberg} , B:: AbstractVecOrMat )
181185 TFB = typeof (oneunit (eltype (H)) \ oneunit (eltype (B)))
182186 return ldiv! (H, copy_similar (B, TFB))
183187end
184188
185- function (/ )(B:: AbstractMatrix , H:: Union{UpperHessenberg,AdjOrTrans{<:Any,<:UpperHessenberg}} )
189+ (/ )(B:: AbstractMatrix , H:: UpperHessenberg ) = _rdiv (B, H)
190+ (/ )(B:: AbstractMatrix , H:: AdjUpperHessenberg ) = _rdiv (B, H)
191+ (/ )(B:: AbstractMatrix , H:: TransUpperHessenberg ) = _rdiv (B, H)
192+ function _rdiv (B, H)
186193 TFB = typeof (oneunit (eltype (B)) / oneunit (eltype (H)))
187194 return rdiv! (copy_similar (B, TFB), H)
188195end
189196
190- ldiv! (H:: AdjOrTrans{<:Any,<:UpperHessenberg} , B:: AbstractVecOrMat ) =
197+ ldiv! (H:: AdjOrTransUpperHessenberg , B:: AbstractVecOrMat ) =
191198 (rdiv! (wrapperop (H)(B), parent (H)); B)
192- rdiv! (B:: AbstractVecOrMat , H:: AdjOrTrans{<:Any,<:UpperHessenberg} ) =
199+ rdiv! (B:: AbstractVecOrMat , H:: AdjOrTransUpperHessenberg ) =
193200 (ldiv! (parent (H), wrapperop (H)(B)); B)
194201
195202# fix method ambiguities for right division, from adjtrans.jl:
196203/ (u:: AdjointAbsVec , A:: UpperHessenberg ) = adjoint (adjoint (A) \ u. parent)
197204/ (u:: TransposeAbsVec , A:: UpperHessenberg ) = transpose (transpose (A) \ u. parent)
198- / (u:: AdjointAbsVec , A:: Adjoint{<:Any,<:UpperHessenberg} ) = adjoint (adjoint (A) \ u. parent)
199- / (u:: TransposeAbsVec , A:: Transpose{<:Any,<:UpperHessenberg} ) = transpose (transpose (A) \ u. parent)
200- / (u:: AdjointAbsVec , A:: Transpose{<:Any,<:UpperHessenberg} ) = adjoint (conj (A. parent) \ u. parent) # technically should be adjoint(copy(adjoint(copy(A))) \ u.parent)
201- / (u:: TransposeAbsVec , A:: Adjoint{<:Any,<:UpperHessenberg} ) = transpose (conj (A. parent) \ u. parent)
205+ / (u:: AdjointAbsVec , A:: AdjUpperHessenberg ) = adjoint (adjoint (A) \ u. parent)
206+ / (u:: TransposeAbsVec , A:: TransUpperHessenberg ) = transpose (transpose (A) \ u. parent)
207+ / (u:: AdjointAbsVec , A:: TransUpperHessenberg ) = adjoint (conj (A. parent) \ u. parent) # technically should be adjoint(copy(adjoint(copy(A))) \ u.parent)
208+ / (u:: TransposeAbsVec , A:: AdjUpperHessenberg ) = transpose (conj (A. parent) \ u. parent)
202209
203210# Solving (H+µI)x = b: we can do this in O(m²) time and O(m) memory
204211# (in-place in x) by the RQ algorithm from:
0 commit comments