@@ -10,8 +10,8 @@ struct HouseholderBlock{T,S<:StridedMatrix,U<:StridedMatrix}
1010 T:: UpperTriangular{T,U}
1111end
1212
13- size (H:: Householder ) = (length (H. v), length (H. v))
14- size (H:: Householder , i:: Integer ) = i <= 2 ? length (H. v) : 1
13+ size (H:: Householder ) = (length (H. v) + 1 , length (H. v) + 1 )
14+ size (H:: Householder , i:: Integer ) = i <= 2 ? length (H. v) + 1 : 1
1515
1616eltype (H:: Householder{T} ) where T = T
1717eltype (H:: HouseholderBlock{T} ) where T = T
@@ -21,7 +21,7 @@ adjoint(H::HouseholderBlock{T}) where {T} = Adjoint{T,typeof(H)}(H)
2121
2222function lmul! (H:: Householder , A:: StridedMatrix )
2323 m, n = size (A)
24- length (H. v) == m - 1 || throw (DimensionMismatch (" " ))
24+ length (H. v) == m - 1 || throw (DimensionMismatch (" size of reflector is $( length (H . v) + 1 ) but first dimension of matrix is $( size (A, 1 )) " ))
2525 v = view (H. v, 1 : m - 1 )
2626 τ = H. τ
2727 for j = 1 : n
3737
3838function rmul! (A:: StridedMatrix , H:: Householder )
3939 m, n = size (A)
40- length (H. v) == n - 1 || throw (DimensionMismatch (" " ))
40+ length (H. v) == n - 1 || throw (DimensionMismatch (" size of reflector is $( length (H . v) + 1 ) but second dimension of matrix is $( size (A, 2 )) " ))
4141 v = view (H. v, :)
4242 τ = H. τ
4343 a1 = view (A, :, 1 )
5252function lmul! (adjH:: Adjoint{<:Any,<:Householder} , A:: StridedMatrix )
5353 H = parent (adjH)
5454 m, n = size (A)
55- length (H. v) == m - 1 || throw (DimensionMismatch (" " ))
55+ length (H. v) == m - 1 || throw (DimensionMismatch (" size of reflector is $( length (H . v) + 1 ) but first dimension of matrix is $( size (A, 1 )) " ))
5656 v = view (H. v, 1 : m - 1 )
5757 τ = H. τ
5858 for j = 1 : n
142142(* )(adjH:: Adjoint{T,<:HouseholderBlock{T}} , A:: StridedMatrix{T} ) where {T} =
143143 lmul! (adjH, copy (A), similar (A, (min (size (parent (adjH). V)... ), size (A, 2 ))))
144144
145- convert (:: Type{Matrix} , H:: Householder{T} ) where {T} = lmul! (H, Matrix {T} (I, size (H, 1 ), size (H, 1 )) )
146- convert (:: Type{Matrix{T}} , H:: Householder{T} ) where {T} = lmul! (H, Matrix {T} (I, size (H, 1 ), size (H, 1 )))
145+ Base . convert (:: Type{Matrix} , H:: Householder{T} ) where {T} = convert ( Matrix{T}, H )
146+ Base . convert (:: Type{Matrix{T}} , H:: Householder ) where {T} = lmul! (H, Matrix {T} (I, size (H, 1 ), size (H, 1 )))
0 commit comments