Skip to content

Commit fc3575f

Browse files
authored
OneElement in getindex for BandedEigenvectors (#355)
* OneElement in getindex for BandedEigenvectors * bump version to v0.17.23
1 parent dfdf436 commit fc3575f

File tree

3 files changed

+6
-8
lines changed

3 files changed

+6
-8
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1313
Aqua = "0.6"
1414
ArrayLayouts = "1"
1515
Documenter = "0.27"
16-
FillArrays = "1"
16+
FillArrays = "1.0.1"
1717
PrecompileTools = "1"
1818
julia = "1.6"
1919

src/BandedMatrices.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import ArrayLayouts: MemoryLayout, transposelayout, triangulardata,
3636
_qr!, _qr, _lu!, _lu, _factorize, AbstractTridiagonalLayout, TridiagonalLayout,
3737
BidiagonalLayout, bidiagonaluplo, diagonaldata, supdiagonaldata, subdiagonaldata
3838

39-
import FillArrays: AbstractFill, getindex_value, _broadcasted_zeros, unique_value
39+
import FillArrays: AbstractFill, getindex_value, _broadcasted_zeros, unique_value, OneElement
4040

4141
const libblas = Base.libblas_name
4242
const liblapack = Base.liblapack_name

src/symbanded/bandedeigen.jl

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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}
76
end
87

98
size(B::BandedEigenvectors) = size(B.Q)
109
getindex(B::BandedEigenvectors, i, j) = Matrix(B)[i,j]
1110
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))
1513
mul!(z1, B, z2)
1614
end
1715
function 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))))
6664
end
6765

6866
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
111109
F
112110
end
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

Comments
 (0)