1+ _BandedMatrix (data:: AbstractMatrix{T} , :: Infinity , l, u) where T = _BandedMatrix (data, ℵ₀, l, u)
2+
13# ##
24# BandIndexing
35# ##
@@ -52,10 +54,10 @@ _prepad(p, a::Zeros{T,1}) where T = Zeros{T}(length(a)+p)
5254_prepad (p, a:: Ones{T,1} ) where T = Ones {T} (length (a)+ p)
5355_prepad (p, a:: AbstractFill{T,1} ) where T = Fill {T} (getindex_value (a), length (a)+ p)
5456
55- banded_similar (T, (m,n):: Tuple{Int,Infinity } , (l,u):: Tuple{Int,Int} ) = BandedMatrix {T} (undef, (n,m), (u,l))'
57+ banded_similar (T, (m,n):: Tuple{Int,PosInfinity } , (l,u):: Tuple{Int,Int} ) = BandedMatrix {T} (undef, (n,m), (u,l))'
5658
5759function BandedMatrix {T} (kv:: Tuple{Vararg{Pair{<:Integer,<:AbstractVector}}} ,
58- :: NTuple{2,Infinity } ,
60+ :: NTuple{2,PosInfinity } ,
5961 (l,u):: NTuple{2,Integer} ) where T
6062 ks = getproperty .(kv, :first )
6163 l,u = - minimum (ks),maximum (ks)
@@ -64,12 +66,12 @@ function BandedMatrix{T}(kv::Tuple{Vararg{Pair{<:Integer,<:AbstractVector}}},
6466 for (k,j) in zip (u .- ks .+ 1 ,1 : length (ks))
6567 c[k,j] = one (T)
6668 end
67- _BandedMatrix (ApplyArray (* ,c,rws), ∞ , l, u)
69+ _BandedMatrix (ApplyArray (* ,c,rws), ℵ₀ , l, u)
6870end
6971
7072# Construct InfToeplitz
7173function BandedMatrix {T} (kv:: Tuple {Vararg{Pair{<: Integer ,<: Fill{<:Any,1,Tuple{OneToInf{Int}}} }}},
72- mn:: NTuple{2,Infinity } ,
74+ mn:: NTuple{2,PosInfinity } ,
7375 lu:: NTuple{2,Integer} ) where T
7476 m,n = mn
7577 @assert isinf (n)
@@ -80,11 +82,11 @@ function BandedMatrix{T}(kv::Tuple{Vararg{Pair{<:Integer,<:Fill{<:Any,1,Tuple{On
8082 t[u- k+ 1 ] = v. value
8183 end
8284
83- return _BandedMatrix (t * Ones {T} (1 ,∞), m , l, u)
85+ return _BandedMatrix (t * Ones {T} (1 ,∞), Integer (m) , l, u)
8486end
8587
8688function BandedMatrix {T} (kv:: Tuple {Vararg{Pair{<: Integer ,<: Vcat {<: Any ,1 ,<: Tuple {<: AbstractVector ,Fill{<: Any ,1 ,Tuple{OneToInf{Int}}}}}}}},
87- mn:: NTuple{2,Infinity } ,
89+ mn:: NTuple{2,PosInfinity } ,
8890 lu:: NTuple{2,Integer} ) where T
8991 m,n = mn
9092 @assert isinf (n)
@@ -105,38 +107,38 @@ function BandedMatrix{T}(kv::Tuple{Vararg{Pair{<:Integer,<:Vcat{<:Any,1,<:Tuple{
105107 end
106108 end
107109
108- return _BandedMatrix (Hcat (data, t * Ones {T} (1 ,∞)), m , l, u)
110+ return _BandedMatrix (Hcat (data, t * Ones {T} (1 ,∞)), Integer (m) , l, u)
109111end
110112
111113
112114function BandedMatrix (Ac:: Adjoint{T,<:InfToeplitz} ) where T
113115 A = parent (Ac)
114116 l,u = bandwidths (A)
115117 a = A. data. args[1 ]
116- _BandedMatrix (reverse (conj (a)) * Ones {T} (1 ,∞), ∞ , u, l)
118+ _BandedMatrix (reverse (conj (a)) * Ones {T} (1 ,∞), ℵ₀ , u, l)
117119end
118120
119121function BandedMatrix (Ac:: Transpose{T,<:InfToeplitz} ) where T
120122 A = parent (Ac)
121123 l,u = bandwidths (A)
122124 a = A. data. args[1 ]
123- _BandedMatrix (reverse (a) * Ones {T} (1 ,∞), ∞ , u, l)
125+ _BandedMatrix (reverse (a) * Ones {T} (1 ,∞), ℵ₀ , u, l)
124126end
125127
126128function BandedMatrix (Ac:: Adjoint{T,<:PertToeplitz} ) where T
127129 A = parent (Ac)
128130 l,u = bandwidths (A)
129131 a,b = A. data. args
130132 Ac_fd = BandedMatrix (_BandedMatrix (Hcat (a, b[:,1 : l+ 1 ]), size (a,2 )+ l, l, u)' )
131- _BandedMatrix (Hcat (Ac_fd. data, reverse (conj (b. args[1 ])) * Ones {T} (1 ,∞)), ∞ , u, l)
133+ _BandedMatrix (Hcat (Ac_fd. data, reverse (conj (b. args[1 ])) * Ones {T} (1 ,∞)), ℵ₀ , u, l)
132134end
133135
134136function BandedMatrix (Ac:: Transpose{T,<:PertToeplitz} ) where T
135137 A = parent (Ac)
136138 l,u = bandwidths (A)
137139 a,b = A. data. args
138140 Ac_fd = BandedMatrix (transpose (_BandedMatrix (Hcat (a, b[:,1 : l+ 1 ]), size (a,2 )+ l, l, u)))
139- _BandedMatrix (Hcat (Ac_fd. data, reverse (b. args[1 ]) * Ones {T} (1 ,∞)), ∞ , u, l)
141+ _BandedMatrix (Hcat (Ac_fd. data, reverse (b. args[1 ]) * Ones {T} (1 ,∞)), ℵ₀ , u, l)
140142end
141143
142144
@@ -191,25 +193,25 @@ for op in (:-, :+)
191193 TV = promote_type (eltype (λ),V)
192194 a = convert (AbstractVector{TV}, $ op .(A. data. args[1 ]))
193195 a[u+ 1 ] += λ. λ
194- _BandedMatrix (a* Ones {TV} (1 ,∞), ∞ , l, u)
196+ _BandedMatrix (a* Ones {TV} (1 ,∞), ℵ₀ , l, u)
195197 end
196198
197199 function $op (A:: InfToeplitz{T} , λ:: UniformScaling ) where T
198200 l,u = bandwidths (A)
199201 TV = promote_type (T,eltype (λ))
200202 a = TV[Zeros {TV} (max (- u,0 )); A. data. args[1 ]; Zeros {TV} (max (- l,0 ))]
201203 a[max (0 ,u)+ 1 ] = $ op (a[max (u,0 )+ 1 ], λ. λ)
202- _BandedMatrix (a* Ones {TV} (1 ,∞), ∞ , max (l,0 ), max (u,0 ))
204+ _BandedMatrix (a* Ones {TV} (1 ,∞), ℵ₀ , max (l,0 ), max (u,0 ))
203205 end
204206
205207 function $op (λ:: UniformScaling , A:: PertToeplitz{V} ) where V
206208 l,u = bandwidths (A)
207209 TV = promote_type (eltype (λ),V)
208- a, t = convert .(AbstractVector {TV}, A. data. args)
210+ a, t = map (AbstractArray {TV}, A. data. args)
209211 b = $ op .(t. args[1 ])
210- a[u+ 1 ,:] += λ. λ
212+ a[u+ 1 ,:] . += λ. λ
211213 b[u+ 1 ] += λ. λ
212- _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ∞ , l, u)
214+ _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ℵ₀ , l, u)
213215 end
214216
215217 function $op (A:: PertToeplitz{T} , λ:: UniformScaling ) where T
@@ -220,7 +222,7 @@ for op in (:-, :+)
220222 b = AbstractVector {TV} (t. args[1 ])
221223 a[u+ 1 ,:] .= $ op .(a[u+ 1 ,:],λ. λ)
222224 b[u+ 1 ] = $ op (b[u+ 1 ], λ. λ)
223- _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ∞ , l, u)
225+ _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ℵ₀ , l, u)
224226 end
225227 end
226228end
@@ -237,7 +239,7 @@ function BandedMatrix(A::PertToeplitz{T}, (l,u)::Tuple{Int,Int}) where T
237239 t = b. args[1 ] # topelitz part
238240 t_pad = vcat (t,Zeros (l- A. l))
239241 data = Hcat ([vcat (a,Zeros {T} (l- A. l,size (a,2 ))) repeat (t_pad,1 ,l)], t_pad * Ones {T} (1 ,∞))
240- _BandedMatrix (data, ∞ , l, u)
242+ _BandedMatrix (data, ℵ₀ , l, u)
241243end
242244
243245function BandedMatrix (A:: SymTriPertToeplitz{T} , (l,u):: Tuple{Int,Int} ) where T
@@ -251,7 +253,7 @@ function BandedMatrix(A::SymTriPertToeplitz{T}, (l,u)::Tuple{Int,Int}) where T
251253 data[u+ 1 ,length (a)+ 1 : end ] .= a∞. value
252254 data[u+ 2 ,1 : length (b)] .= b
253255 data[u+ 2 ,length (b)+ 1 : end ] .= b∞. value
254- _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; b∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ∞ , l, u)
256+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; b∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
255257end
256258
257259function BandedMatrix (A:: SymTridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}, (l,u):: Tuple{Int,Int} ) where T
@@ -262,7 +264,7 @@ function BandedMatrix(A::SymTridiagonal{T,Fill{T,1,Tuple{OneToInf{Int}}}}, (l,u)
262264 data[u,2 : end ] .= b∞. value
263265 data[u+ 1 ,1 : end ] .= a∞. value
264266 data[u+ 2 ,1 : end ] .= b∞. value
265- _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; b∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ∞ , l, u)
267+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; b∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
266268end
267269
268270function BandedMatrix (A:: TriPertToeplitz{T} , (l,u):: Tuple{Int,Int} ) where T
@@ -277,7 +279,7 @@ function BandedMatrix(A::TriPertToeplitz{T}, (l,u)::Tuple{Int,Int}) where T
277279 data[u+ 1 ,length (a)+ 1 : end ] .= a∞. value
278280 data[u+ 2 ,1 : length (c)] .= c
279281 data[u+ 2 ,length (c)+ 1 : end ] .= c∞. value
280- _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ∞ , l, u)
282+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
281283end
282284
283285function BandedMatrix (A:: Tridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}, (l,u):: Tuple{Int,Int} ) where T
@@ -289,14 +291,14 @@ function BandedMatrix(A::Tridiagonal{T,Fill{T,1,Tuple{OneToInf{Int}}}}, (l,u)::T
289291 data[u,2 : end ] .= b∞. value
290292 data[u+ 1 ,1 : end ] .= a∞. value
291293 data[u+ 2 ,1 : end ] .= c∞. value
292- _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ∞ , l, u)
294+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
293295end
294296
295297function InfToeplitz (A:: Tridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}, (l,u):: Tuple{Int,Int} ) where T
296298 a∞ = A. d
297299 b∞ = A. du
298300 c∞ = A. dl
299- _BandedMatrix ([Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞), ∞ , l, u)
301+ _BandedMatrix ([Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞), ℵ₀ , l, u)
300302end
301303
302304InfToeplitz (A:: Tridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}) where T = InfToeplitz (A, bandwidths (A))
@@ -384,8 +386,8 @@ _BandedMatrix(::PertToeplitzLayout, A::AbstractMatrix) =
384386
385387
386388
387- ArrayLayouts. _apply (_, :: NTuple{2,Infinity } , op, Λ:: UniformScaling , A:: AbstractMatrix ) = op (Diagonal (Fill (Λ. λ,∞)), A)
388- ArrayLayouts. _apply (_, :: NTuple{2,Infinity } , op, A:: AbstractMatrix , Λ:: UniformScaling ) = op (A, Diagonal (Fill (Λ. λ,∞)))
389+ ArrayLayouts. _apply (_, :: NTuple{2,InfiniteCardinal{0} } , op, Λ:: UniformScaling , A:: AbstractMatrix ) = op (Diagonal (Fill (Λ. λ,∞)), A)
390+ ArrayLayouts. _apply (_, :: NTuple{2,InfiniteCardinal{0} } , op, A:: AbstractMatrix , Λ:: UniformScaling ) = op (A, Diagonal (Fill (Λ. λ,∞)))
389391
390392_default_banded_broadcast (bc:: Broadcasted , :: Tuple{<:OneToInf,<:Any} ) = copy (Broadcasted {LazyArrayStyle{2}} (bc. f, bc. args))
391393
@@ -417,7 +419,7 @@ function _bandedfill_mul(M::MulAdd, ::Tuple{InfAxes,InfAxes}, ::Tuple{InfAxes,In
417419 l,u = Al+ Bl,Au+ Bu
418420 m = min (Au+ Al,Bl+ Bu)+ 1
419421 λ = getindex_value (bandeddata (A))* getindex_value (bandeddata (B))
420- ret = _BandedMatrix (Hcat (Array {typeof(λ)} (undef, l+ u+ 1 ,u), [1 : m- 1 ; Fill (m,l+ u- 2 m+ 3 ); m- 1 : - 1 : 1 ]* Fill (λ,1 ,∞)), ∞ , l, u)
422+ ret = _BandedMatrix (Hcat (Array {typeof(λ)} (undef, l+ u+ 1 ,u), [1 : m- 1 ; Fill (m,l+ u- 2 m+ 3 ); m- 1 : - 1 : 1 ]* Fill (λ,1 ,∞)), ℵ₀ , l, u)
421423 mul! (view (ret, 1 : l+ u,1 : u), view (A,1 : l+ u,1 : u+ Bl), view (B,1 : u+ Bl,1 : u))
422424 ret
423425end
0 commit comments