@@ -6,55 +6,62 @@ import BlockArrays: _BlockArray
6
6
import BlockBandedMatrices: isblockbanded, _BlockBandedMatrix
7
7
import MatrixFactorizations: QLPackedQ
8
8
import BandedMatrices: bandeddata, _BandedMatrix
9
+ import LazyArrays: colsupport
9
10
10
11
@testset " Algebra" begin
11
- A = BlockTridiagonal (Vcat ([fill (1.0 ,2 ,1 ),Matrix (1.0 I,2 ,2 ),Matrix (1.0 I,2 ,2 ),Matrix (1.0 I,2 ,2 )],Fill (Matrix (1.0 I,2 ,2 ), ∞)),
12
- Vcat ([zeros (1 ,1 )], Fill (zeros (2 ,2 ), ∞)),
13
- Vcat ([fill (1.0 ,1 ,2 ),Matrix (1.0 I,2 ,2 )], Fill (Matrix (1.0 I,2 ,2 ), ∞)))
14
-
15
- @test A isa InfiniteLinearAlgebra. BlockTriPertToeplitz
16
- @test isblockbanded (A)
12
+ @testset " BlockTridiagonal" begin
13
+ A = BlockTridiagonal (Vcat ([fill (1.0 ,2 ,1 ),Matrix (1.0 I,2 ,2 ),Matrix (1.0 I,2 ,2 ),Matrix (1.0 I,2 ,2 )],Fill (Matrix (1.0 I,2 ,2 ), ∞)),
14
+ Vcat ([zeros (1 ,1 )], Fill (zeros (2 ,2 ), ∞)),
15
+ Vcat ([fill (1.0 ,1 ,2 ),Matrix (1.0 I,2 ,2 )], Fill (Matrix (1.0 I,2 ,2 ), ∞)))
16
+
17
+ @test A isa InfiniteLinearAlgebra. BlockTriPertToeplitz
18
+ @test isblockbanded (A)
17
19
18
- @test A[Block .(1 : 2 ),Block (1 )] == A[1 : 3 ,1 : 1 ] == reshape ([0. ,1. ,1. ],3 ,1 )
20
+ @test A[Block .(1 : 2 ),Block (1 )] == A[1 : 3 ,1 : 1 ] == reshape ([0. ,1. ,1. ],3 ,1 )
19
21
20
- @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 ]
22
+ @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 ]
21
23
22
- @test (A - I)[1 : 100 ,1 : 100 ] == A[1 : 100 ,1 : 100 ]- I
23
- @test (A + I)[1 : 100 ,1 : 100 ] == A[1 : 100 ,1 : 100 ]+ I
24
- @test (I + A)[1 : 100 ,1 : 100 ] == I+ A[1 : 100 ,1 : 100 ]
25
- @test (I - A)[1 : 100 ,1 : 100 ] == I- A[1 : 100 ,1 : 100 ]
26
-
27
- A = BandedMatrix (- 3 => Fill (7 / 10 ,∞), - 2 => Fill (1 ,∞), 1 => Fill (2im ,∞))
28
- Ac = BandedMatrix (A' )
29
- At = BandedMatrix (transpose (A))
30
- @test Ac[1 : 10 ,1 : 10 ] ≈ (A' )[1 : 10 ,1 : 10 ] ≈ A[1 : 10 ,1 : 10 ]'
31
- @test At[1 : 10 ,1 : 10 ] ≈ transpose (A)[1 : 10 ,1 : 10 ] ≈ transpose (A[1 : 10 ,1 : 10 ])
24
+ @test (A - I)[1 : 100 ,1 : 100 ] == A[1 : 100 ,1 : 100 ]- I
25
+ @test (A + I)[1 : 100 ,1 : 100 ] == A[1 : 100 ,1 : 100 ]+ I
26
+ @test (I + A)[1 : 100 ,1 : 100 ] == I+ A[1 : 100 ,1 : 100 ]
27
+ @test (I - A)[1 : 100 ,1 : 100 ] == I- A[1 : 100 ,1 : 100 ]
28
+ end
29
+ @testset " BandedMatrix" begin
30
+ A = BandedMatrix (- 3 => Fill (7 / 10 ,∞), - 2 => Fill (1 ,∞), 1 => Fill (2im ,∞))
31
+ Ac = BandedMatrix (A' )
32
+ At = BandedMatrix (transpose (A))
33
+ @test Ac[1 : 10 ,1 : 10 ] ≈ (A' )[1 : 10 ,1 : 10 ] ≈ A[1 : 10 ,1 : 10 ]'
34
+ @test At[1 : 10 ,1 : 10 ] ≈ transpose (A)[1 : 10 ,1 : 10 ] ≈ transpose (A[1 : 10 ,1 : 10 ])
32
35
33
- A = BandedMatrix (- 1 => Vcat (Float64[], Fill (1 / 4 ,∞)), 0 => Vcat ([1.0 + im],Fill (0 ,∞)), 1 => Vcat (Float64[], Fill (1 ,∞)))
34
- Ac = BandedMatrix (A' )
35
- At = BandedMatrix (transpose (A))
36
- @test Ac[1 : 10 ,1 : 10 ] ≈ (A' )[1 : 10 ,1 : 10 ] ≈ A[1 : 10 ,1 : 10 ]'
37
- @test At[1 : 10 ,1 : 10 ] ≈ transpose (A)[1 : 10 ,1 : 10 ] ≈ transpose (A[1 : 10 ,1 : 10 ])
36
+ A = BandedMatrix (- 1 => Vcat (Float64[], Fill (1 / 4 ,∞)), 0 => Vcat ([1.0 + im],Fill (0 ,∞)), 1 => Vcat (Float64[], Fill (1 ,∞)))
37
+ Ac = BandedMatrix (A' )
38
+ At = BandedMatrix (transpose (A))
39
+ @test Ac[1 : 10 ,1 : 10 ] ≈ (A' )[1 : 10 ,1 : 10 ] ≈ A[1 : 10 ,1 : 10 ]'
40
+ @test At[1 : 10 ,1 : 10 ] ≈ transpose (A)[1 : 10 ,1 : 10 ] ≈ transpose (A[1 : 10 ,1 : 10 ])
38
41
39
- A = BandedMatrix (- 2 => Vcat (Float64[], Fill (1 / 4 ,∞)), 0 => Vcat ([1.0 + im,2 ,3 ],Fill (0 ,∞)), 1 => Vcat (Float64[], Fill (1 ,∞)))
40
- Ac = BandedMatrix (A' )
41
- At = BandedMatrix (transpose (A))
42
- @test Ac[1 : 10 ,1 : 10 ] ≈ (A' )[1 : 10 ,1 : 10 ] ≈ A[1 : 10 ,1 : 10 ]'
43
- @test At[1 : 10 ,1 : 10 ] ≈ transpose (A)[1 : 10 ,1 : 10 ] ≈ transpose (A[1 : 10 ,1 : 10 ])
42
+ A = BandedMatrix (- 2 => Vcat (Float64[], Fill (1 / 4 ,∞)), 0 => Vcat ([1.0 + im,2 ,3 ],Fill (0 ,∞)), 1 => Vcat (Float64[], Fill (1 ,∞)))
43
+ Ac = BandedMatrix (A' )
44
+ At = BandedMatrix (transpose (A))
45
+ @test Ac[1 : 10 ,1 : 10 ] ≈ (A' )[1 : 10 ,1 : 10 ] ≈ A[1 : 10 ,1 : 10 ]'
46
+ @test At[1 : 10 ,1 : 10 ] ≈ transpose (A)[1 : 10 ,1 : 10 ] ≈ transpose (A[1 : 10 ,1 : 10 ])
44
47
45
- A = _BandedMatrix (Fill (1 ,4 ,∞),∞,1 ,2 )
46
- @test A* A isa ApplyArray
47
- @test (A^ 2 )[1 : 10 ,1 : 10 ] == (A* A)[1 : 10 ,1 : 10 ] == (A[1 : 100 ,1 : 100 ]^ 2 )[1 : 10 ,1 : 10 ]
48
- @test (A^ 3 )[1 : 10 ,1 : 10 ] == (A* A* A)[1 : 10 ,1 : 10 ] == (A[1 : 100 ,1 : 100 ]^ 3 )[1 : 10 ,1 : 10 ]
48
+ A = _BandedMatrix (Fill (1 ,4 ,∞),∞,1 ,2 )
49
+ @test A* A isa ApplyArray
50
+ @test (A^ 2 )[1 : 10 ,1 : 10 ] == (A* A)[1 : 10 ,1 : 10 ] == (A[1 : 100 ,1 : 100 ]^ 2 )[1 : 10 ,1 : 10 ]
51
+ @test (A^ 3 )[1 : 10 ,1 : 10 ] == (A* A* A)[1 : 10 ,1 : 10 ] == (A[1 : 100 ,1 : 100 ]^ 3 )[1 : 10 ,1 : 10 ]
52
+ end
49
53
50
- @testset " Diagonal " begin
54
+ @testset " Fill " begin
51
55
A = _BandedMatrix (Ones (1 ,∞),∞,- 1 ,1 )
52
56
@test 1.0 .* A isa BandedMatrix{Float64,<: Fill }
53
57
@test_skip Ones (∞) .* A
54
58
@test 2.0 .* A isa BandedMatrix{Float64,<: Fill }
55
59
@test A .* 2.0 isa BandedMatrix{Float64,<: Fill }
56
60
@test Eye (∞)* A isa BandedMatrix{Float64,<: Fill }
57
61
@test A* Eye (∞) isa BandedMatrix{Float64,<: Fill }
62
+ end
63
+
64
+ @testset " Banded Broadast" begin
58
65
A = _BandedMatrix ((1 : ∞)' ,∞,- 1 ,1 )
59
66
@test 2.0 .* A isa BandedMatrix{Float64,<: Adjoint }
60
67
@test A .* 2.0 isa BandedMatrix{Float64,<: Adjoint }
@@ -65,10 +72,17 @@ import BandedMatrices: bandeddata, _BandedMatrix
65
72
@test A .* 2.0 isa BandedMatrix
66
73
@test Eye (∞) * A isa BandedMatrix
67
74
@test A * Eye (∞) isa BandedMatrix
75
+ b = 1 : ∞
76
+ @test bandwidths (b .* A) == (0 ,1 )
77
+ @test Base. replace_in_print_matrix (b.* A, 2 ,1 ," 0.0" ) == " ⋅ "
78
+ @test bandwidths (A .* b) == (0 ,1 )
79
+ @test A .* b' isa BroadcastArray
80
+ @test bandwidths (A .* b' ) == bandwidths (A .* b' )
81
+ @test colsupport (A .* b' , 3 ) == 2 : 3
68
82
end
69
-
83
+
70
84
@testset " Triangle OP recurrences" begin
71
- mortar ((n -> 1 : n). (1 : ∞))
85
+ # mortar((n -> 1:n).(1:∞))
72
86
end
73
87
# Multivariate OPs Corollary (3)
74
88
# n = 5
0 commit comments