Skip to content

Commit 2692797

Browse files
committed
Y+I fixes
1 parent af49355 commit 2692797

File tree

4 files changed

+17
-18
lines changed

4 files changed

+17
-18
lines changed

src/banded/tridiagonalconjugation.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -290,14 +290,15 @@ getindex(K::SubArray{<:Any,1,<:TridiagonalConjugationBand}, k::AbstractInfUnitRa
290290
copy(A::TridiagonalConjugationBand) = A # immutable
291291

292292

293-
const TridiagonalConjugation{T} = Tridiagonal{T, TridiagonalConjugationBand{T}}
294-
const SymTridiagonalConjugation{T} = SymTridiagonal{T, TridiagonalConjugationBand{T}}
293+
# Use LazyBandedMatrices.Tridiagonal to support algebra
294+
const TridiagonalConjugation{T} = LazyBandedMatrices.Tridiagonal{T, TridiagonalConjugationBand{T}, TridiagonalConjugationBand{T}, TridiagonalConjugationBand{T}}
295+
const SymTridiagonalConjugation{T} = LazyBandedMatrices.SymTridiagonal{T, TridiagonalConjugationBand{T}, TridiagonalConjugationBand{T}}
295296
function TridiagonalConjugation(R, X, Y...)
296297
data = TridiagonalConjugationData(R, X, Y...)
297-
Tridiagonal(TridiagonalConjugationBand(data, :dl), TridiagonalConjugationBand(data, :d), TridiagonalConjugationBand(data, :du))
298+
LazyBandedMatrices.Tridiagonal(TridiagonalConjugationBand(data, :dl), TridiagonalConjugationBand(data, :d), TridiagonalConjugationBand(data, :du))
298299
end
299300

300301
function SymTridiagonalConjugation(R, X, Y...)
301302
data = TridiagonalConjugationData(R, X, Y...)
302-
SymTridiagonal(TridiagonalConjugationBand(data, :d), TridiagonalConjugationBand(data, :du))
303+
LazyBandedMatrices.SymTridiagonal(TridiagonalConjugationBand(data, :d), TridiagonalConjugationBand(data, :du))
303304
end

src/infcholesky.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ copy(A::AdaptiveCholeskyFactors) = AdaptiveCholeskyFactors(copy(A.data), copy(A.
3636
copy(A::Adjoint{T,<:AdaptiveCholeskyFactors}) where T = copy(parent(A))'
3737
copy(A::Transpose{T,<:AdaptiveCholeskyFactors}) where T = transpose(copy(parent(A)))
3838

39+
cache_layout(::TriangularLayout{'U', 'N', AdaptiveCholeskyFactorsBandedLayout}, A::AbstractMatrix) = A # already cached
40+
3941
function partialcholesky!(F::AdaptiveCholeskyFactors{T,<:BandedMatrix}, n::Int) where T
4042
if n > F.ncols
4143
_,u = bandwidths(F.data.array)

src/infqr.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ mutable struct AdaptiveQRData{T,DM<:AbstractMatrix{T}}
55
ncols::Int
66
end
77

8-
function AdaptiveQRData(::Union{SymmetricLayout{<:AbstractBandedLayout},AbstractBandedLayout}, A::AbstractMatrix{T}) where T
8+
function AdaptiveQRData(::BandedLayouts, A::AbstractMatrix{T}) where T
99
l,u = bandwidths(A)
1010
FT = float(T)
1111
data = BandedMatrix{FT}(undef,(2l+u+1,0),(l,l+u)) # pad super

test/test_bidiagonalconjugation.jl

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -185,19 +185,15 @@ end
185185
R,X = (_BandedMatrix(Vcat(-Ones(1,∞)/2, Zeros(1,∞), Hcat(Ones(1,1),Ones(1,∞)/2)), ℵ₀, 0,2),
186186
LazyBandedMatrices.Tridiagonal(Vcat(1.0, Fill(1/2,∞)), Zeros(∞), Fill(1/2,∞)))
187187

188-
Y = TridiagonalConjugation(R, X)
189-
n = 100_000
190-
@test Y[n,n+1] 1/2
191-
192-
Y = SymTridiagonalConjugation(R, X)
193-
n = 100_000
194-
@test Y[n,n+1] 1/2
195-
196-
@testset "Y+I" begin
197-
Y+I
198-
Y-I
199-
I+Y
200-
I-Y
188+
for Y in (TridiagonalConjugation(R, X), SymTridiagonalConjugation(R, X))
189+
n = 100_000
190+
@test Y[n,n+1] 1/2
191+
192+
@testset "Y+I" begin
193+
@test (Y+I)[1:10,1:10] == (I+Y)[1:10,1:10] == I + Y[1:10,1:10]
194+
@test (Y-I)[1:10,1:10] == Y[1:10,1:10] - I
195+
@test (I-Y)[1:10,1:10] == I - Y[1:10,1:10]
196+
end
201197
end
202198
end
203199
end

0 commit comments

Comments
 (0)