@@ -2,15 +2,15 @@ using InfiniteLinearAlgebra, BlockBandedMatrices, BlockArrays, BandedMatrices, I
2
2
MatrixFactorizations, ArrayLayouts, LinearAlgebra, Random, LazyBandedMatrices, StaticArrays
3
3
import InfiniteLinearAlgebra: qltail, toeptail, tailiterate , tailiterate!, tail_de, ql_X!,
4
4
InfToeplitz, PertToeplitz, TriToeplitz, InfBandedMatrix, InfBandCartesianIndices,
5
- rightasymptotics, QLHessenberg, ConstRows, PertConstRows,
5
+ rightasymptotics, QLHessenberg, ConstRows, PertConstRows,
6
6
BandedToeplitzLayout, PertToeplitzLayout, TridiagonalToeplitzLayout, BidiagonalToeplitzLayout
7
7
import Base: BroadcastStyle
8
8
import BlockArrays: _BlockArray
9
9
import BlockBandedMatrices: isblockbanded, _BlockBandedMatrix
10
10
import MatrixFactorizations: QLPackedQ
11
11
import BandedMatrices: bandeddata, _BandedMatrix, BandedStyle
12
12
import LazyArrays: colsupport, ApplyStyle, MemoryLayout, ApplyLayout, LazyArrayStyle, arguments
13
- import InfiniteArrays: OneToInf, oneto
13
+ import InfiniteArrays: OneToInf, oneto, RealInfinity
14
14
import LazyBandedMatrices: BroadcastBandedBlockBandedLayout, BroadcastBandedLayout, LazyBandedLayout
15
15
16
16
@@ -39,7 +39,7 @@ import LazyBandedMatrices: BroadcastBandedBlockBandedLayout, BroadcastBandedLayo
39
39
@test B* A* x isa Vcat
40
40
@test (B* A* x)[1 : 10 ] == [0 ; 10 ; 14 ; 12 ; zeros (6 )]
41
41
42
- @test _BandedMatrix ((1 : ∞)' , ∞, - 1 , 1 ) isa BandedMatrix
42
+ @test _BandedMatrix ((1 : ∞)' , ∞, - 1 , 1 ) isa BandedMatrix
43
43
end
44
44
45
45
@testset " ∞-Toeplitz" begin
@@ -103,7 +103,7 @@ import LazyBandedMatrices: BroadcastBandedBlockBandedLayout, BroadcastBandedLayo
103
103
@test (A + 2 I)[1 : 10 ,1 : 10 ] == (2 I + A)[1 : 10 ,1 : 10 ] == A[1 : 10 ,1 : 10 ] + 2 I
104
104
@test (Adjoint (A) + 2 I)[1 : 10 ,1 : 10 ] == (2 I + Adjoint (A))[1 : 10 ,1 : 10 ] == Adjoint (A)[1 : 10 ,1 : 10 ] + 2 I
105
105
end
106
-
106
+
107
107
108
108
@testset " InfBanded" begin
109
109
A = _BandedMatrix (Fill (2 ,4 ,∞),ℵ₀,2 ,1 )
@@ -134,12 +134,24 @@ end
134
134
n = Fill .(oneto (∞),oneto (∞))
135
135
@test broadcast (length,k) ≡ map (length,k) ≡ OneToInf ()
136
136
@test broadcast (length,n) ≡ map (length,n) ≡ OneToInf ()
137
+
137
138
b = mortar (Fill ([1 ,2 ],∞))
138
139
@test blockaxes (b,1 ) ≡ Block .(OneToInf ())
139
140
@test b[Block (5 )] == [1 ,2 ]
141
+ @test b[Block .(2 : ∞)][Block .(2 : 10 )] == b[Block .(3 : 11 )]
142
+ @test exp .(b)[Block .(2 : ∞)][Block .(2 : 10 )] == exp .(b[Block .(3 : 11 )])
143
+
144
+ c = PseudoBlockArray (1 : ∞,Vcat (2 ,Fill (3 ,∞)))
145
+ @test c[Block .(2 : ∞)][Block .(2 : 10 )] == c[Block .(3 : 11 )]
146
+
140
147
@test length (axes (b,1 )) ≡ ℵ₀
141
- @test last (axes (b,1 )) ≡ ∞
148
+ @test last (axes (b,1 )) ≡ RealInfinity ()
142
149
@test Base. BroadcastStyle (typeof (b)) isa LazyArrayStyle{1 }
150
+
151
+ @test unitblocks (oneto (∞)) ≡ blockedrange (Ones {Int} (∞))
152
+ @test unitblocks (2 : ∞) == 2 : ∞
153
+
154
+ @test unitblocks (oneto (∞))[Block .(2 : ∞)] == 2 : ∞
143
155
end
144
156
145
157
@testset " 1:∞ blocks" begin
193
205
194
206
@testset " triangle recurrences" begin
195
207
@testset " n and k" begin
196
- n = mortar (Fill .(oneto (∞),oneto (∞)))
197
- k = mortar (Base. OneTo .(oneto (∞)))
208
+ n = mortar (Fill .(oneto (∞),oneto (∞)));
209
+ k = mortar (Base. OneTo .(oneto (∞)));
198
210
199
211
@test n[Block (5 )] ≡ layout_getindex (n, Block (5 )) ≡ view (n,Block (5 )) ≡ Fill (5 ,5 )
200
212
@test k[Block (5 )] ≡ layout_getindex (k, Block (5 )) ≡ view (k,Block (5 )) ≡ Base. OneTo (5 )
217
229
@test @allocated (axes (v)) ≤ 40
218
230
@test copyto! (dest, v) == v
219
231
232
+ @testset " stack overflow" begin
233
+ i = Base. to_indices (k, (Block .(2 : ∞),))[1 ]. indices;
234
+ last (i)
235
+ end
236
+
220
237
v = view (k,Block .(2 : ∞))
221
238
@test Base. BroadcastStyle (typeof (v)) isa LazyArrayStyle{1 }
222
239
@test v[Block (1 )] == 1 : 2
254
271
n = mortar (Fill .(oneto (∞),oneto (∞)))
255
272
k = mortar (Base. OneTo .(oneto (∞)))
256
273
Dy = BlockBandedMatrices. _BandedBlockBandedMatrix ((k .+ (b+ c))' , axes (k,1 ), (- 1 ,1 ), (- 1 ,1 ))
257
- N = 100 ;
274
+ N = 100 ;
258
275
@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 ))
259
276
end
260
277
end
0 commit comments