@@ -3,15 +3,13 @@ struct BandedEigenvectors{T} <: AbstractMatrix{T}
33 G:: Vector{Givens{T}}
44 Q:: Matrix{T}
55 z1:: Vector{T}
6- z2:: Vector{T}
76end
87
98size (B:: BandedEigenvectors ) = size (B. Q)
109getindex (B:: BandedEigenvectors , i, j) = Matrix (B)[i,j]
1110function _getindex_vec (B:: BandedEigenvectors{T} , j) where {T}
12- z1, z2 = B. z1, B. z2
13- z2 .= zero (T)
14- z2[j] = oneunit (T)
11+ z1 = B. z1
12+ z2 = OneElement (one (T), j, size (B,2 ))
1513 mul! (z1, B, z2)
1614end
1715function getindex (B:: BandedEigenvectors , i:: Int , j:: Int )
@@ -62,7 +60,7 @@ function eigen!(A::Symmetric{T,<:BandedMatrix{T}}) where T <: Real
6260 AB = symbandeddata (A)
6361 sbtrd! (' V' , A. uplo, N, KD, AB, D, E, G, WORK)
6462 Λ, Q = eigen (SymTridiagonal (D, E))
65- Eigen (Λ, BandedEigenvectors (G, Q, similar (Q, size (Q,1 )), similar (Q, size (Q, 2 )) ))
63+ Eigen (Λ, BandedEigenvectors (G, Q, similar (Q, size (Q,1 ))))
6664end
6765
6866function eigen! (A:: Symmetric{T,<:BandedMatrix{T}} , B:: Symmetric{T,<:BandedMatrix{T}} ) where T <: Real
@@ -111,7 +109,7 @@ function compress!(F::Eigen{T, T, BandedEigenvectors{T}, Vector{T}}) where T
111109 F
112110end
113111
114- function mul! (y:: Array{T,N} , B:: BandedEigenvectors{T} , x:: Array{T,N} ) where {T,N}
112+ function mul! (y:: Array{T,N} , B:: BandedEigenvectors{T} , x:: Union{ Array{T,N}, OneElement{T,N} } ) where {T,N}
115113 mul! (y, B. Q, x)
116114 G = B. G
117115 for k in length (G): - 1 : 1
0 commit comments