Skip to content

Commit 5ee4b40

Browse files
authored
Move out BandedMatrices code (#192)
* Drop Julia <v1.10 * Move out BandedMatrices code * Update infblocktridiagonal.jl * Update runtests.jl * move out blockarrays * move out block code * compiles * tests pass * Update InfiniteLinearAlgebra.jl
1 parent 48f4e0a commit 5ee4b40

File tree

7 files changed

+23
-1391
lines changed

7 files changed

+23
-1391
lines changed

Project.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "InfiniteLinearAlgebra"
22
uuid = "cde9dba0-b1de-11e9-2c62-0bab9446c55c"
3-
version = "0.8.5"
3+
version = "0.9.0"
44

55
[deps]
66
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
@@ -23,11 +23,11 @@ BandedMatrices = "1.7.2"
2323
BlockArrays = "1.0"
2424
BlockBandedMatrices = "0.13"
2525
FillArrays = "1.0"
26-
InfiniteArrays = "0.14"
26+
InfiniteArrays = "0.15"
2727
InfiniteRandomArrays = "0.2"
2828
Infinities = "0.1"
29-
LazyArrays = "2.0"
30-
LazyBandedMatrices = "0.10"
29+
LazyArrays = "2.3"
30+
LazyBandedMatrices = "0.11"
3131
LinearAlgebra = "1"
3232
MatrixFactorizations = "3.0"
3333
Random = "1"
@@ -39,8 +39,8 @@ julia = "1.10"
3939

4040
[extras]
4141
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
42-
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
4342
InfiniteRandomArrays = "2bc77966-89c7-476d-a40f-269028fac4a9"
43+
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
4444
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
4545
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
4646
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

src/InfiniteLinearAlgebra.jl

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ import Base.Broadcast: BroadcastStyle, Broadcasted, broadcasted
1414

1515
import ArrayLayouts: AbstractBandedLayout, AbstractQLayout, AdjQRPackedQLayout, CNoPivot, DenseColumnMajor, FillLayout,
1616
MatLdivVec, MatLmulMat, MatLmulVec, MemoryLayout, QRPackedQLayout, RangeCumsum, TriangularLayout,
17-
TridiagonalLayout, __qr, _bidiag_forwardsub!, _factorize, _qr, check_mul_axes, colsupport,
17+
TridiagonalLayout, __qr, _factorize, _qr, check_mul_axes, colsupport,
1818
diagonaldata, ldiv!, lmul!, mul, mulreduce, reflector!, reflectorApply!,
1919
rowsupport, sub_materialize, subdiagonaldata, sublayout, supdiagonaldata, transposelayout,
2020
triangulardata, triangularlayout, zero!, materialize!
2121

2222
import BandedMatrices: BandedColumns, BandedMatrix, BandedMatrix, _BandedMatrix, AbstractBandedMatrix,
23-
_BandedMatrix, _BandedMatrix, _banded_qr, _banded_qr!, _default_banded_broadcast, banded_chol!,
23+
_BandedMatrix, _BandedMatrix, _banded_qr, _banded_qr!, banded_chol!,
2424
banded_similar, bandedcolumns, bandeddata, bandwidths
2525

2626
import BlockArrays: AbstractBlockLayout, BlockLayout, BlockSlice, BlockSlice1, BlockedOneTo,
27-
blockcolsupport, sizes_from_blocks, OneToCumsum, AbstractBlockedUnitRange
27+
blockcolsupport, sizes_from_blocks, AbstractBlockedUnitRange
2828

2929
import BlockBandedMatrices: AbstractBlockBandedLayout, BlockBandedMatrix, BlockSkylineMatrix,
3030
BlockSkylineSizes, BlockTridiagonal, _BlockBandedMatrix, _BlockSkylineMatrix,
@@ -53,35 +53,20 @@ import MatrixFactorizations: AdjQLPackedQLayout, LayoutQ, QL, QLPackedQ, QLPacke
5353
ul!, ul_layout
5454

5555
import SemiseparableMatrices: AbstractAlmostBandedLayout, _almostbanded_qr!
56-
57-
58-
LinearAlgebra._cut_B(x::AbstractVector, ::InfUnitRange) = x
59-
LinearAlgebra._cut_B(X::AbstractMatrix, ::InfUnitRange) = X
60-
61-
62-
if VERSION v"1.11.0-DEV.21"
63-
using LinearAlgebra: UpperOrLowerTriangular
64-
else
65-
const UpperOrLowerTriangular{T,S} = Union{LinearAlgebra.UpperTriangular{T,S},
66-
LinearAlgebra.UnitUpperTriangular{T,S},
67-
LinearAlgebra.LowerTriangular{T,S},
68-
LinearAlgebra.UnitLowerTriangular{T,S}}
69-
end
70-
56+
import InfiniteArrays: UpperOrLowerTriangular, TridiagonalToeplitzLayout, TriToeplitz, PertTridiagonalToeplitzLayout, PertConstRows,
57+
subdiagonalconstant, diagonalconstant, supdiagonalconstant
7158

7259
# BroadcastStyle(::Type{<:BandedMatrix{<:Any,<:Any,<:OneToInf}}) = LazyArrayStyle{2}()
7360

74-
function ArrayLayouts._power_by_squaring(_, ::NTuple{2,InfiniteCardinal{0}}, A::AbstractMatrix{T}, p::Integer) where T
75-
if p < 0
76-
inv(A)^(-p)
77-
elseif p == 0
78-
Eye{T}(∞)
79-
elseif p == 1
80-
copy(A)
81-
else
82-
A*A^(p-1)
83-
end
84-
end
61+
const InfiniteArraysBandedMatricesExt = Base.get_extension(InfiniteArrays, :InfiniteArraysBandedMatricesExt)
62+
const InfiniteArraysBlockArraysExt = Base.get_extension(InfiniteArrays, :InfiniteArraysBlockArraysExt)
63+
const InfBandedMatrix = InfiniteArraysBandedMatricesExt.InfBandedMatrix
64+
const InfToeplitz = InfiniteArraysBandedMatricesExt.InfToeplitz
65+
const PertToeplitzLayout = InfiniteArraysBandedMatricesExt.PertToeplitzLayout
66+
const PertToeplitz = InfiniteArraysBandedMatricesExt.PertToeplitz
67+
const BlockTriPertToeplitz = InfiniteArraysBlockArraysExt.BlockTriPertToeplitz
68+
const BlockTridiagonalToeplitzLayout = InfiniteArraysBlockArraysExt.BlockTridiagonalToeplitzLayout
69+
8570

8671
function choplength(c::AbstractVector, tol)
8772
@inbounds for k = length(c):-1:1
@@ -128,12 +113,10 @@ pad(c::Transpose, ax, bx) = transpose(pad(parent(c), bx, ax))
128113
pad(c::Adjoint, ax, bx) = adjoint(pad(parent(c), bx, ax))
129114
pad(c::BlockVec, ax::BlockedOneTo{Int,<:InfStepRange}) = BlockVec(pad(c.args[1], size(c.args[1],1), ∞))
130115

131-
export Vcat, Fill, ql, ql!, ∞, ContinuousSpectrumError, BlockTridiagonal
116+
export ∞, ContinuousSpectrumError, BlockTridiagonal
132117

133118
include("banded/hessenbergq.jl")
134119

135-
include("banded/infbanded.jl")
136-
include("blockbanded/blockbanded.jl")
137120
include("banded/infqltoeplitz.jl")
138121
include("banded/infreversecholeskytoeplitz.jl")
139122
include("banded/infreversecholeskytridiagonal.jl")

0 commit comments

Comments
 (0)