@@ -52,10 +52,10 @@ _prepad(p, a::Zeros{T,1}) where T = Zeros{T}(length(a)+p)
52
52
_prepad (p, a:: Ones{T,1} ) where T = Ones {T} (length (a)+ p)
53
53
_prepad (p, a:: AbstractFill{T,1} ) where T = Fill {T} (getindex_value (a), length (a)+ p)
54
54
55
- banded_similar (T, (m,n):: Tuple{Int,Infinity } , (l,u):: Tuple{Int,Int} ) = BandedMatrix {T} (undef, (n,m), (u,l))'
55
+ banded_similar (T, (m,n):: Tuple{Int,PosInfinity } , (l,u):: Tuple{Int,Int} ) = BandedMatrix {T} (undef, (n,m), (u,l))'
56
56
57
57
function BandedMatrix {T} (kv:: Tuple{Vararg{Pair{<:Integer,<:AbstractVector}}} ,
58
- :: NTuple{2,Infinity } ,
58
+ :: NTuple{2,PosInfinity } ,
59
59
(l,u):: NTuple{2,Integer} ) where T
60
60
ks = getproperty .(kv, :first )
61
61
l,u = - minimum (ks),maximum (ks)
@@ -64,12 +64,12 @@ function BandedMatrix{T}(kv::Tuple{Vararg{Pair{<:Integer,<:AbstractVector}}},
64
64
for (k,j) in zip (u .- ks .+ 1 ,1 : length (ks))
65
65
c[k,j] = one (T)
66
66
end
67
- _BandedMatrix (ApplyArray (* ,c,rws), ∞ , l, u)
67
+ _BandedMatrix (ApplyArray (* ,c,rws), ℵ₀ , l, u)
68
68
end
69
69
70
70
# Construct InfToeplitz
71
71
function BandedMatrix {T} (kv:: Tuple {Vararg{Pair{<: Integer ,<: Fill{<:Any,1,Tuple{OneToInf{Int}}} }}},
72
- mn:: NTuple{2,Infinity } ,
72
+ mn:: NTuple{2,PosInfinity } ,
73
73
lu:: NTuple{2,Integer} ) where T
74
74
m,n = mn
75
75
@assert isinf (n)
@@ -80,11 +80,11 @@ function BandedMatrix{T}(kv::Tuple{Vararg{Pair{<:Integer,<:Fill{<:Any,1,Tuple{On
80
80
t[u- k+ 1 ] = v. value
81
81
end
82
82
83
- return _BandedMatrix (t * Ones {T} (1 ,∞), m , l, u)
83
+ return _BandedMatrix (t * Ones {T} (1 ,∞), Integer (m) , l, u)
84
84
end
85
85
86
86
function BandedMatrix {T} (kv:: Tuple {Vararg{Pair{<: Integer ,<: Vcat {<: Any ,1 ,<: Tuple {<: AbstractVector ,Fill{<: Any ,1 ,Tuple{OneToInf{Int}}}}}}}},
87
- mn:: NTuple{2,Infinity } ,
87
+ mn:: NTuple{2,PosInfinity } ,
88
88
lu:: NTuple{2,Integer} ) where T
89
89
m,n = mn
90
90
@assert isinf (n)
@@ -105,38 +105,38 @@ function BandedMatrix{T}(kv::Tuple{Vararg{Pair{<:Integer,<:Vcat{<:Any,1,<:Tuple{
105
105
end
106
106
end
107
107
108
- return _BandedMatrix (Hcat (data, t * Ones {T} (1 ,∞)), m , l, u)
108
+ return _BandedMatrix (Hcat (data, t * Ones {T} (1 ,∞)), Integer (m) , l, u)
109
109
end
110
110
111
111
112
112
function BandedMatrix (Ac:: Adjoint{T,<:InfToeplitz} ) where T
113
113
A = parent (Ac)
114
114
l,u = bandwidths (A)
115
115
a = A. data. args[1 ]
116
- _BandedMatrix (reverse (conj (a)) * Ones {T} (1 ,∞), ∞ , u, l)
116
+ _BandedMatrix (reverse (conj (a)) * Ones {T} (1 ,∞), ℵ₀ , u, l)
117
117
end
118
118
119
119
function BandedMatrix (Ac:: Transpose{T,<:InfToeplitz} ) where T
120
120
A = parent (Ac)
121
121
l,u = bandwidths (A)
122
122
a = A. data. args[1 ]
123
- _BandedMatrix (reverse (a) * Ones {T} (1 ,∞), ∞ , u, l)
123
+ _BandedMatrix (reverse (a) * Ones {T} (1 ,∞), ℵ₀ , u, l)
124
124
end
125
125
126
126
function BandedMatrix (Ac:: Adjoint{T,<:PertToeplitz} ) where T
127
127
A = parent (Ac)
128
128
l,u = bandwidths (A)
129
129
a,b = A. data. args
130
130
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)
131
+ _BandedMatrix (Hcat (Ac_fd. data, reverse (conj (b. args[1 ])) * Ones {T} (1 ,∞)), ℵ₀ , u, l)
132
132
end
133
133
134
134
function BandedMatrix (Ac:: Transpose{T,<:PertToeplitz} ) where T
135
135
A = parent (Ac)
136
136
l,u = bandwidths (A)
137
137
a,b = A. data. args
138
138
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)
139
+ _BandedMatrix (Hcat (Ac_fd. data, reverse (b. args[1 ]) * Ones {T} (1 ,∞)), ℵ₀ , u, l)
140
140
end
141
141
142
142
@@ -191,15 +191,15 @@ for op in (:-, :+)
191
191
TV = promote_type (eltype (λ),V)
192
192
a = convert (AbstractVector{TV}, $ op .(A. data. args[1 ]))
193
193
a[u+ 1 ] += λ. λ
194
- _BandedMatrix (a* Ones {TV} (1 ,∞), ∞ , l, u)
194
+ _BandedMatrix (a* Ones {TV} (1 ,∞), ℵ₀ , l, u)
195
195
end
196
196
197
197
function $op (A:: InfToeplitz{T} , λ:: UniformScaling ) where T
198
198
l,u = bandwidths (A)
199
199
TV = promote_type (T,eltype (λ))
200
200
a = TV[Zeros {TV} (max (- u,0 )); A. data. args[1 ]; Zeros {TV} (max (- l,0 ))]
201
201
a[max (0 ,u)+ 1 ] = $ op (a[max (u,0 )+ 1 ], λ. λ)
202
- _BandedMatrix (a* Ones {TV} (1 ,∞), ∞ , max (l,0 ), max (u,0 ))
202
+ _BandedMatrix (a* Ones {TV} (1 ,∞), ℵ₀ , max (l,0 ), max (u,0 ))
203
203
end
204
204
205
205
function $op (λ:: UniformScaling , A:: PertToeplitz{V} ) where V
@@ -209,7 +209,7 @@ for op in (:-, :+)
209
209
b = $ op .(t. args[1 ])
210
210
a[u+ 1 ,:] += λ. λ
211
211
b[u+ 1 ] += λ. λ
212
- _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ∞ , l, u)
212
+ _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ℵ₀ , l, u)
213
213
end
214
214
215
215
function $op (A:: PertToeplitz{T} , λ:: UniformScaling ) where T
@@ -220,7 +220,7 @@ for op in (:-, :+)
220
220
b = AbstractVector {TV} (t. args[1 ])
221
221
a[u+ 1 ,:] .= $ op .(a[u+ 1 ,:],λ. λ)
222
222
b[u+ 1 ] = $ op (b[u+ 1 ], λ. λ)
223
- _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ∞ , l, u)
223
+ _BandedMatrix (Hcat (a, b* Ones {TV} (1 ,∞)), ℵ₀ , l, u)
224
224
end
225
225
end
226
226
end
@@ -237,7 +237,7 @@ function BandedMatrix(A::PertToeplitz{T}, (l,u)::Tuple{Int,Int}) where T
237
237
t = b. args[1 ] # topelitz part
238
238
t_pad = vcat (t,Zeros (l- A. l))
239
239
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)
240
+ _BandedMatrix (data, ℵ₀ , l, u)
241
241
end
242
242
243
243
function BandedMatrix (A:: SymTriPertToeplitz{T} , (l,u):: Tuple{Int,Int} ) where T
@@ -251,7 +251,7 @@ function BandedMatrix(A::SymTriPertToeplitz{T}, (l,u)::Tuple{Int,Int}) where T
251
251
data[u+ 1 ,length (a)+ 1 : end ] .= a∞. value
252
252
data[u+ 2 ,1 : length (b)] .= b
253
253
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)
254
+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; b∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
255
255
end
256
256
257
257
function BandedMatrix (A:: SymTridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}, (l,u):: Tuple{Int,Int} ) where T
@@ -262,7 +262,7 @@ function BandedMatrix(A::SymTridiagonal{T,Fill{T,1,Tuple{OneToInf{Int}}}}, (l,u)
262
262
data[u,2 : end ] .= b∞. value
263
263
data[u+ 1 ,1 : end ] .= a∞. value
264
264
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)
265
+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; b∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
266
266
end
267
267
268
268
function BandedMatrix (A:: TriPertToeplitz{T} , (l,u):: Tuple{Int,Int} ) where T
@@ -277,7 +277,7 @@ function BandedMatrix(A::TriPertToeplitz{T}, (l,u)::Tuple{Int,Int}) where T
277
277
data[u+ 1 ,length (a)+ 1 : end ] .= a∞. value
278
278
data[u+ 2 ,1 : length (c)] .= c
279
279
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)
280
+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
281
281
end
282
282
283
283
function BandedMatrix (A:: Tridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}, (l,u):: Tuple{Int,Int} ) where T
@@ -289,14 +289,14 @@ function BandedMatrix(A::Tridiagonal{T,Fill{T,1,Tuple{OneToInf{Int}}}}, (l,u)::T
289
289
data[u,2 : end ] .= b∞. value
290
290
data[u+ 1 ,1 : end ] .= a∞. value
291
291
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)
292
+ _BandedMatrix (Hcat (data, [Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞)), ℵ₀ , l, u)
293
293
end
294
294
295
295
function InfToeplitz (A:: Tridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}, (l,u):: Tuple{Int,Int} ) where T
296
296
a∞ = A. d
297
297
b∞ = A. du
298
298
c∞ = A. dl
299
- _BandedMatrix ([Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞), ∞ , l, u)
299
+ _BandedMatrix ([Zeros {T} (u- 1 ); b∞. value; a∞. value; c∞. value; Zeros {T} (l- 1 )] * Ones {T} (1 ,∞), ℵ₀ , l, u)
300
300
end
301
301
302
302
InfToeplitz (A:: Tridiagonal {T,Fill{T,1 ,Tuple{OneToInf{Int}}}}) where T = InfToeplitz (A, bandwidths (A))
@@ -384,8 +384,8 @@ _BandedMatrix(::PertToeplitzLayout, A::AbstractMatrix) =
384
384
385
385
386
386
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 (Λ. λ,∞)))
387
+ ArrayLayouts. _apply (_, :: NTuple{2,InfiniteCardinal{0} } , op, Λ:: UniformScaling , A:: AbstractMatrix ) = op (Diagonal (Fill (Λ. λ,∞)), A)
388
+ ArrayLayouts. _apply (_, :: NTuple{2,InfiniteCardinal{0} } , op, A:: AbstractMatrix , Λ:: UniformScaling ) = op (A, Diagonal (Fill (Λ. λ,∞)))
389
389
390
390
_default_banded_broadcast (bc:: Broadcasted , :: Tuple{<:OneToInf,<:Any} ) = copy (Broadcasted {LazyArrayStyle{2}} (bc. f, bc. args))
391
391
@@ -417,7 +417,7 @@ function _bandedfill_mul(M::MulAdd, ::Tuple{InfAxes,InfAxes}, ::Tuple{InfAxes,In
417
417
l,u = Al+ Bl,Au+ Bu
418
418
m = min (Au+ Al,Bl+ Bu)+ 1
419
419
λ = 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)
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)
421
421
mul! (view (ret, 1 : l+ u,1 : u), view (A,1 : l+ u,1 : u+ Bl), view (B,1 : u+ Bl,1 : u))
422
422
ret
423
423
end
0 commit comments