@@ -177,35 +177,28 @@ function \(U::UnitUpperTriangular, H::UpperHessenberg)
177177 UpperHessenberg (HH)
178178end
179179
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 )
180+ function (\ )(H:: Union{UpperHessenberg,AdjOrTrans{<:Any,<:UpperHessenberg}} , B:: AbstractVecOrMat )
185181 TFB = typeof (oneunit (eltype (H)) \ oneunit (eltype (B)))
186182 return ldiv! (H, copy_similar (B, TFB))
187183end
188184
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)
185+ function (/ )(B:: AbstractMatrix , H:: Union{UpperHessenberg,AdjOrTrans{<:Any,<:UpperHessenberg}} )
193186 TFB = typeof (oneunit (eltype (B)) / oneunit (eltype (H)))
194187 return rdiv! (copy_similar (B, TFB), H)
195188end
196189
197- ldiv! (H:: AdjOrTransUpperHessenberg , B:: AbstractVecOrMat ) =
190+ ldiv! (H:: AdjOrTrans{<:Any,<:UpperHessenberg} , B:: AbstractVecOrMat ) =
198191 (rdiv! (wrapperop (H)(B), parent (H)); B)
199- rdiv! (B:: AbstractVecOrMat , H:: AdjOrTransUpperHessenberg ) =
192+ rdiv! (B:: AbstractVecOrMat , H:: AdjOrTrans{<:Any,<:UpperHessenberg} ) =
200193 (ldiv! (parent (H), wrapperop (H)(B)); B)
201194
202195# fix method ambiguities for right division, from adjtrans.jl:
203196/ (u:: AdjointAbsVec , A:: UpperHessenberg ) = adjoint (adjoint (A) \ u. parent)
204197/ (u:: TransposeAbsVec , A:: UpperHessenberg ) = transpose (transpose (A) \ 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)
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)
209202
210203# Solving (H+µI)x = b: we can do this in O(m²) time and O(m) memory
211204# (in-place in x) by the RQ algorithm from:
0 commit comments