@@ -3,15 +3,13 @@ struct BandedEigenvectors{T} <: AbstractMatrix{T}
3
3
G:: Vector{Givens{T}}
4
4
Q:: Matrix{T}
5
5
z1:: Vector{T}
6
- z2:: Vector{T}
7
6
end
8
7
9
8
size (B:: BandedEigenvectors ) = size (B. Q)
10
9
getindex (B:: BandedEigenvectors , i, j) = Matrix (B)[i,j]
11
10
function _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 ))
15
13
mul! (z1, B, z2)
16
14
end
17
15
function getindex (B:: BandedEigenvectors , i:: Int , j:: Int )
@@ -62,7 +60,7 @@ function eigen!(A::Symmetric{T,<:BandedMatrix{T}}) where T <: Real
62
60
AB = symbandeddata (A)
63
61
sbtrd! (' V' , A. uplo, N, KD, AB, D, E, G, WORK)
64
62
Λ, 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 ))))
66
64
end
67
65
68
66
function 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
111
109
F
112
110
end
113
111
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}
115
113
mul! (y, B. Q, x)
116
114
G = B. G
117
115
for k in length (G): - 1 : 1
0 commit comments