Skip to content

Commit c388932

Browse files
committed
move out block code
1 parent 760147a commit c388932

File tree

4 files changed

+0
-370
lines changed

4 files changed

+0
-370
lines changed

src/InfiniteLinearAlgebra.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,6 @@ export ∞, ContinuousSpectrumError, BlockTridiagonal
108108

109109
include("banded/hessenbergq.jl")
110110

111-
include("banded/infbanded.jl")
112-
include("blockbanded/blockbanded.jl")
113111
include("banded/infqltoeplitz.jl")
114112
include("banded/infreversecholeskytoeplitz.jl")
115113
include("banded/infreversecholeskytridiagonal.jl")

src/blockbanded/blockbanded.jl

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/blockbanded/infblocktridiagonal.jl

Lines changed: 0 additions & 49 deletions
This file was deleted.

test/runtests.jl

Lines changed: 0 additions & 310 deletions
Original file line numberDiff line numberDiff line change
@@ -53,316 +53,6 @@ end
5353
end
5454

5555

56-
@testset "∞-block arrays" begin
57-
@testset "fixed block size" begin
58-
k = Base.OneTo.(oneto(∞))
59-
n = Fill.(oneto(∞), oneto(∞))
60-
@test broadcast(length, k) map(length, k) OneToInf()
61-
@test broadcast(length, n) map(length, n) OneToInf()
62-
63-
b = mortar(Fill([1, 2], ∞))
64-
@test blockaxes(b, 1) Block.(OneToInf())
65-
@test b[Block(5)] == [1, 2]
66-
@test b[Block.(2:∞)][Block.(2:10)] == b[Block.(3:11)]
67-
@test exp.(b)[Block.(2:∞)][Block.(2:10)] == exp.(b[Block.(3:11)])
68-
69-
@test blockedrange(Vcat(2, Fill(3, ∞))) isa BlockedOneTo{<:Any,<:InfiniteArrays.InfStepRange}
70-
71-
c = BlockedArray(1:∞, Vcat(2, Fill(3, ∞)))
72-
@test c[Block.(2:∞)][Block.(2:10)] == c[Block.(3:11)]
73-
74-
@test length(axes(b, 1)) ℵ₀
75-
@test last(axes(b, 1)) ℵ₀
76-
@test Base.BroadcastStyle(typeof(b)) isa LazyArrayStyle{1}
77-
78-
@test unitblocks(oneto(∞)) blockedrange(Ones{Int}(∞))
79-
@test unitblocks(2:∞) == 2:
80-
81-
@test unitblocks(oneto(∞))[Block.(2:∞)] == 2:
82-
end
83-
84-
@testset "1:∞ blocks" begin
85-
a = blockedrange(oneto(∞))
86-
@test axes(a, 1) == a
87-
o = Ones((a,))
88-
@test Base.BroadcastStyle(typeof(a)) isa LazyArrayStyle{1}
89-
b = exp.(a)
90-
@test axes(b, 1) == a
91-
@test o .* b isa typeof(b)
92-
@test b .* o isa typeof(b)
93-
end
94-
95-
@testset "padded" begin
96-
c = BlockedArray([1; zeros(∞)], Vcat(2, Fill(3, ∞)))
97-
@test c + c isa BlockedVector
98-
end
99-
100-
@testset "concat" begin
101-
a = unitblocks(1:∞)
102-
b = exp.(a)
103-
c = BlockBroadcastArray(vcat, a, b)
104-
@test length(c) ==
105-
@test blocksize(c) == (∞,)
106-
@test c[Block(5)] == [a[5], b[5]]
107-
108-
A = unitblocks(BandedMatrix(0 => 1:∞, 1 => Fill(2.0, ∞), -1 => Fill(3.0, ∞)))
109-
B = BlockBroadcastArray(hvcat, 2, A, Zeros(axes(A)), Zeros(axes(A)), A)
110-
@test B[Block(3, 3)] == [A[3, 3] 0; 0 A[3, 3]]
111-
@test B[Block(3, 4)] == [A[3, 4] 0; 0 A[3, 4]]
112-
@test B[Block(3, 5)] == [A[3, 5] 0; 0 A[3, 5]]
113-
@test blockbandwidths(B) == (1, 1)
114-
@test subblockbandwidths(B) == (0, 0)
115-
@test B[Block.(1:10), Block.(1:10)] isa BlockSkylineMatrix
116-
117-
C = BlockBroadcastArray(hvcat, 2, A, A, A, A)
118-
@test C[Block(3, 3)] == fill(A[3, 3], 2, 2)
119-
@test C[Block(3, 4)] == fill(A[3, 4], 2, 2)
120-
@test C[Block(3, 5)] == fill(A[3, 5], 2, 2)
121-
@test blockbandwidths(C) == (1, 1)
122-
@test subblockbandwidths(C) == (1, 1)
123-
@test B[Block.(1:10), Block.(1:10)] isa BlockSkylineMatrix
124-
end
125-
126-
@testset "DiagTrav" begin
127-
C = zeros(∞,∞);
128-
C[1:3,1:4] .= [1 2 3 4; 5 6 7 8; 9 10 11 12]
129-
A = DiagTrav(C)
130-
@test blockcolsupport(A) == Block.(1:6)
131-
@test A[Block.(1:7)] == [1; 5; 2; 9; 6; 3; 0; 10; 7; 4; 0; 0; 11; 8; 0; 0; 0; 0; 12; zeros(9)]
132-
133-
C = zeros(∞,4);
134-
C[1:3,1:4] .= [1 2 3 4; 5 6 7 8; 9 10 11 12]
135-
A = DiagTrav(C)
136-
@test A[Block.(1:7)] == [1; 5; 2; 9; 6; 3; 0; 10; 7; 4; 0; 0; 11; 8; 0; 0; 0; 12; zeros(4)]
137-
138-
C = zeros(3,∞);
139-
C[1:3,1:4] .= [1 2 3 4; 5 6 7 8; 9 10 11 12]
140-
A = DiagTrav(C)
141-
@test A[Block.(1:7)] == [1; 5; 2; 9; 6; 3; 10; 7; 4; 11; 8; 0; 12; zeros(5)]
142-
end
143-
144-
@testset "KronTrav" begin
145-
Δ = BandedMatrix(1 => Ones(∞), -1 => Ones(∞)) / 2
146-
A = KronTrav- 2I, Eye(∞))
147-
@test axes(A, 1) isa InfiniteLinearAlgebra.OneToInfBlocks
148-
V = view(A, Block.(Base.OneTo(3)), Block.(Base.OneTo(3)))
149-
150-
@test MemoryLayout(A) isa InfiniteLinearAlgebra.InfKronTravBandedBlockBandedLayout
151-
@test MemoryLayout(V) isa LazyBandedMatrices.KronTravBandedBlockBandedLayout
152-
153-
@test A[Block.(Base.OneTo(3)), Block.(Base.OneTo(3))] isa KronTrav
154-
155-
u = A * [1; zeros(∞)]
156-
@test u[1:3] == A[1:3, 1]
157-
@test bandwidths(view(A, Block(1, 1))) == (1, 1)
158-
159-
@test A*A isa KronTrav
160-
@test (A*A)[Block.(Base.OneTo(3)), Block.(Base.OneTo(3))] A[Block.(1:3), Block.(1:4)]A[Block.(1:4), Block.(1:3)]
161-
end
162-
163-
@testset "triangle recurrences" begin
164-
@testset "n and k" begin
165-
n = mortar(Fill.(oneto(∞), oneto(∞)))
166-
k = mortar(Base.OneTo.(oneto(∞)))
167-
168-
@test n[Block(5)] layout_getindex(n, Block(5)) view(n, Block(5)) Fill(5, 5)
169-
@test k[Block(5)] layout_getindex(k, Block(5)) view(k, Block(5)) Base.OneTo(5)
170-
@test Base.BroadcastStyle(typeof(n)) isa LazyArrays.LazyArrayStyle{1}
171-
@test Base.BroadcastStyle(typeof(k)) isa LazyArrays.LazyArrayStyle{1}
172-
173-
N = 1000
174-
v = view(n, Block.(Base.OneTo(N)))
175-
@test view(v, Block(2)) Fill(2, 2)
176-
@test axes(v) isa Tuple{BlockedOneTo{Int,ArrayLayouts.RangeCumsum{Int64,Base.OneTo{Int64}}}}
177-
@test @allocated(axes(v)) 40
178-
179-
dest = BlockedArray{Float64}(undef, axes(v))
180-
@test copyto!(dest, v) == v
181-
@test @allocated(copyto!(dest, v)) 40
182-
183-
v = view(k, Block.(Base.OneTo(N)))
184-
@test view(v, Block(2)) Base.OneTo(2)
185-
@test axes(v) isa Tuple{BlockedOneTo{Int,ArrayLayouts.RangeCumsum{Int64,Base.OneTo{Int64}}}}
186-
@test @allocated(axes(v)) 40
187-
@test copyto!(dest, v) == v
188-
189-
@testset "stack overflow" begin
190-
i = Base.to_indices(k, (Block.(2:∞),))[1].indices
191-
last(i)
192-
end
193-
194-
v = view(k, Block.(2:∞))
195-
@test Base.BroadcastStyle(typeof(v)) isa LazyArrayStyle{1}
196-
@test v[Block(1)] == 1:2
197-
@test v[Block(1)] k[Block(2)] Base.OneTo(2)
198-
199-
@test axes(n, 1) isa BlockedOneTo{Int,ArrayLayouts.RangeCumsum{Int64,OneToInf{Int64}}}
200-
end
201-
202-
@testset "BlockHcat copyto!" begin
203-
n = mortar(Fill.(oneto(∞), oneto(∞)))
204-
k = mortar(Base.OneTo.(oneto(∞)))
205-
206-
a = b = c = 0.0
207-
dat = BlockHcat(
208-
BroadcastArray((n, k, b, bc1) -> (k + b - 1) * (n + k + bc1) / (2k + bc1), n, k, b, b + c - 1),
209-
BroadcastArray((n, k, abc, bc, bc1) -> (n + k + abc) * (k + bc) / (2k + bc1), n, k, a + b + c, b + c, b + c - 1)
210-
)
211-
N = 1000
212-
KR = Block.(Base.OneTo(N))
213-
V = view(dat, Block.(Base.OneTo(N)), :)
214-
@test MemoryLayout(V) isa LazyArrays.ApplyLayout{typeof(hcat)}
215-
@test BlockedArray(V)[Block.(1:5), :] == dat[Block.(1:5), :]
216-
V = view(dat', :, Block.(Base.OneTo(N)))
217-
@test MemoryLayout(V) isa LazyArrays.ApplyLayout{typeof(vcat)}
218-
a = dat.arrays[1]'
219-
N = 100
220-
KR = Block.(Base.OneTo(N))
221-
v = view(a, :, KR)
222-
@time r = BlockedArray(v)
223-
@test v == r
224-
end
225-
226-
@testset "BlockBanded" begin
227-
a = b = c = 0.0
228-
n = mortar(Fill.(oneto(∞), oneto(∞)))
229-
k = mortar(Base.OneTo.(oneto(∞)))
230-
Dy = BlockBandedMatrices._BandedBlockBandedMatrix((k .+ (b + c))', axes(k, 1), (-1, 1), (-1, 1))
231-
N = 100
232-
@test Dy[Block.(1:N), Block.(1:N)] == BlockBandedMatrices._BandedBlockBandedMatrix((k.+(b+c))[Block.(1:N)]', axes(k, 1)[Block.(1:N)], (-1, 1), (-1, 1))
233-
@test colsupport(Dy, axes(Dy,2)) == 1:
234-
@test rowsupport(Dy, axes(Dy,1)) == 2:
235-
end
236-
237-
@testset "Symmetric" begin
238-
k = mortar(Base.OneTo.(oneto(∞)))
239-
n = mortar(Fill.(oneto(∞), oneto(∞)))
240-
241-
dat = BlockHcat(
242-
BlockBroadcastArray(hcat, float.(k), Zeros((axes(n, 1),)), float.(n)),
243-
Zeros((axes(n, 1), Base.OneTo(3))),
244-
Zeros((axes(n, 1), Base.OneTo(3))))
245-
M = BlockBandedMatrices._BandedBlockBandedMatrix(dat', axes(k, 1), (1, 1), (1, 1))
246-
Ms = Symmetric(M)
247-
@test blockbandwidths(M) == (1, 1)
248-
@test blockbandwidths(Ms) == (1, 1)
249-
@test Ms[Block.(1:5), Block.(1:5)] == Symmetric(M[Block.(1:5), Block.(1:5)])
250-
@test Ms[Block.(1:5), Block.(1:5)] isa BandedBlockBandedMatrix
251-
252-
b = [ones(10); zeros(∞)]
253-
@test (Ms * b)[Block.(1:6)] == Ms[Block.(1:6), Block.(1:4)]*ones(10)
254-
@test ((Ms * Ms) * b)[Block.(1:6)] == (Ms * (Ms * b))[Block.(1:6)]
255-
@test ((Ms + Ms) * b)[Block.(1:6)] == (2*(Ms * b))[Block.(1:6)]
256-
257-
dat = BlockBroadcastArray(hcat, float.(k), Zeros((axes(n, 1),)), float.(n))
258-
M = BlockBandedMatrices._BandedBlockBandedMatrix(dat', axes(k, 1), (-1, 1), (1, 1))
259-
Ms = Symmetric(M)
260-
@test Symmetric((M+M)[Block.(1:10), Block.(1:10)]) == (Ms+Ms)[Block.(1:10), Block.(1:10)]
261-
end
262-
end
263-
264-
@testset "blockdiag" begin
265-
D = Diagonal(mortar(Fill.((-(0:∞) - (0:∞) .^ 2), 1:2:∞)))
266-
x = [randn(5); zeros(∞)]
267-
= BlockedArray(x, (axes(D, 1),))
268-
@test (D*x)[1:10] == (D*x̃)[1:10]
269-
end
270-
271-
@testset "sortedunion" begin
272-
a = cumsum(1:2:∞)
273-
@test BlockArrays.sortedunion(a, a) a
274-
@test BlockArrays.sortedunion([∞], a) BlockArrays.sortedunion(a, [∞]) a
275-
@test BlockArrays.sortedunion([∞], [∞]) == [∞]
276-
277-
b = Vcat([1, 2], 3:∞)
278-
c = Vcat(1, 3:∞)
279-
@test BlockArrays.sortedunion(b, b) b
280-
@test BlockArrays.sortedunion(c, c) c
281-
end
282-
end
283-
284-
285-
286-
@testset "Algebra" begin
287-
@testset "BlockTridiagonal" begin
288-
A = BlockTridiagonal(Vcat([fill(1.0, 2, 1), Matrix(1.0I, 2, 2), Matrix(1.0I, 2, 2), Matrix(1.0I, 2, 2)], Fill(Matrix(1.0I, 2, 2), ∞)),
289-
Vcat([zeros(1, 1)], Fill(zeros(2, 2), ∞)),
290-
Vcat([fill(1.0, 1, 2), Matrix(1.0I, 2, 2)], Fill(Matrix(1.0I, 2, 2), ∞)))
291-
292-
@test A isa InfiniteLinearAlgebra.BlockTriPertToeplitz
293-
@test isblockbanded(A)
294-
295-
@test A[Block.(1:2), Block(1)] == A[1:3, 1:1] == reshape([0.0, 1.0, 1.0], 3, 1)
296-
297-
@test BlockBandedMatrix(A)[1:100, 1:100] == BlockBandedMatrix(A, (2, 1))[1:100, 1:100] == BlockBandedMatrix(A, (1, 1))[1:100, 1:100] == A[1:100, 1:100]
298-
299-
@test (A-I)[1:100, 1:100] == A[1:100, 1:100] - I
300-
@test (A+I)[1:100, 1:100] == A[1:100, 1:100] + I
301-
@test (I+A)[1:100, 1:100] == I + A[1:100, 1:100]
302-
@test (I-A)[1:100, 1:100] == I - A[1:100, 1:100]
303-
304-
@test (A-im*I)[1:100, 1:100] == A[1:100, 1:100] - im * I
305-
@test (A+im*I)[1:100, 1:100] == A[1:100, 1:100] + im * I
306-
@test (im*I+A)[1:100, 1:100] == im * I + A[1:100, 1:100]
307-
@test (im*I-A)[1:100, 1:100] == im * I - A[1:100, 1:100]
308-
309-
T = mortar(LazyBandedMatrices.Tridiagonal(Fill([1 2; 3 4], ∞), Fill([1 2; 3 4], ∞), Fill([1 2; 3 4], ∞)));
310-
#TODO: copy BlockBidiagonal code from BlockBandedMatrices to LazyBandedMatrices
311-
@test T[Block(2, 2)] == [1 2; 3 4]
312-
@test_broken T[Block(1, 3)] == Zeros(2, 2)
313-
end
314-
315-
@testset "BlockBidiagonal" begin
316-
B = mortar(LazyBandedMatrices.Bidiagonal(Fill([1 2; 3 4], ∞), Fill([1 2; 3 4], ∞), :U));
317-
#TODO: copy BlockBidiagonal code from BlockBandedMatrices to LazyBandedMatrices
318-
@test B[Block(2, 3)] == [1 2; 3 4]
319-
@test_broken B[Block(1, 3)] == Zeros(2, 2)
320-
end
321-
322-
@testset "Triangle OP recurrences" begin
323-
k = mortar(Base.OneTo.(1:∞))
324-
n = mortar(Fill.(1:∞, 1:∞))
325-
@test k[Block.(2:3)] isa BlockArray
326-
@test n[Block.(2:3)] isa BlockArray
327-
@test k[Block.(2:3)] == [1, 2, 1, 2, 3]
328-
@test n[Block.(2:3)] == [2, 2, 3, 3, 3]
329-
@test blocksize(BroadcastVector(exp, k)) == (ℵ₀,)
330-
@test BroadcastVector(exp, k)[Block.(2:3)] == exp.([1, 2, 1, 2, 3])
331-
# BroadcastVector(+,k,n)
332-
end
333-
# Multivariate OPs Corollary (3)
334-
# n = 5
335-
# BlockTridiagonal(Zeros.(1:∞,2:∞),
336-
# (n -> Diagonal(((n+2).+(0:n)))/ (2n + 2)).(0:∞),
337-
# Zeros.(2:∞,1:∞))
338-
339-
@testset "KronTrav" begin
340-
Δ = BandedMatrix(1 => Ones(∞) / 2, -1 => Ones(∞))
341-
A = KronTrav(Δ, Eye(∞))
342-
@test A[Block(100, 101)] isa BandedMatrix
343-
@test A[Block(100, 100)] isa BandedMatrix
344-
@test A[Block.(1:5), Block.(1:5)] isa BandedBlockBandedMatrix
345-
B = KronTrav(Eye(∞), Δ)
346-
@test B[Block(100, 101)] isa BandedMatrix
347-
@test B[Block(100, 100)] isa BandedMatrix
348-
V = view(A + B, Block.(1:5), Block.(1:5))
349-
@test MemoryLayout(typeof(V)) isa BroadcastBandedBlockBandedLayout{typeof(+)}
350-
@test arguments(V) == (A[Block.(1:5), Block.(1:5)], B[Block.(1:5), Block.(1:5)])
351-
@test (A+B)[Block.(1:5), Block.(1:5)] == A[Block.(1:5), Block.(1:5)] + B[Block.(1:5), Block.(1:5)]
352-
353-
@test blockbandwidths(A + B) == (1, 1)
354-
@test blockbandwidths(2A) == (1, 1)
355-
@test blockbandwidths(2 * (A + B)) == (1, 1)
356-
357-
@test subblockbandwidths(A + B) == (1, 1)
358-
@test subblockbandwidths(2A) == (1, 1)
359-
@test subblockbandwidths(2 * (A + B)) == (1, 1)
360-
end
361-
end
362-
363-
@testset "findblock at +∞, HarmonicOrthogonalPolynomials#88" begin
364-
@test findblock(blockedrange(1:2:∞), RealInfinity()) == Block(ℵ₀)
365-
end
36656

36757
include("test_hessenbergq.jl")
36858
include("test_infql.jl")

0 commit comments

Comments
 (0)