From bc429178795d9b802bd6b919356de0a18f55777c Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Tue, 11 Feb 2025 14:47:23 +0000 Subject: [PATCH 1/2] Avoid ambiguity in Mul with Diagonal and Toeplitz --- Project.toml | 2 +- ext/InfiniteArraysBandedMatricesExt.jl | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 4119d62..6f9c9d6 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "InfiniteArrays" uuid = "4858937d-0d70-526a-a4dd-2d5cb5dd786c" -version = "0.15.3" +version = "0.15.4" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/ext/InfiniteArraysBandedMatricesExt.jl b/ext/InfiniteArraysBandedMatricesExt.jl index ba4aace..3cf75bc 100644 --- a/ext/InfiniteArraysBandedMatricesExt.jl +++ b/ext/InfiniteArraysBandedMatricesExt.jl @@ -401,7 +401,8 @@ simplifiable(::Mul{<:DiagonalLayout, <:InfToeplitzLayouts}) = Val(true) simplifiable(::Mul{<:InfToeplitzLayouts, <:DiagonalLayout}) = Val(true) mulreduce(M::Mul{<:DiagonalLayout, <:InfToeplitzLayouts}) = Lmul(M) mulreduce(M::Mul{<:InfToeplitzLayouts, <:DiagonalLayout}) = Rmul(M) - +copy(M::Mul{<:DiagonalLayout, <:InfToeplitzLayouts}) = copy(mulreduce(M)) +copy(M::Mul{<:InfToeplitzLayouts, <:DiagonalLayout}) = copy(mulreduce(M)) # copy for AdjOrTrans From a1d662048a2623bdaea53280170ea79ca14da03e Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Tue, 11 Feb 2025 14:54:49 +0000 Subject: [PATCH 2/2] Update InfiniteArraysBandedMatricesExt.jl --- ext/InfiniteArraysBandedMatricesExt.jl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ext/InfiniteArraysBandedMatricesExt.jl b/ext/InfiniteArraysBandedMatricesExt.jl index 3cf75bc..5a99048 100644 --- a/ext/InfiniteArraysBandedMatricesExt.jl +++ b/ext/InfiniteArraysBandedMatricesExt.jl @@ -5,7 +5,7 @@ using InfiniteArrays.LazyArrays, InfiniteArrays.ArrayLayouts, InfiniteArrays.Fil import Base: BroadcastStyle, size, getindex, similar, copy, *, +, -, /, \, materialize!, copyto!, OneTo import Base.Broadcast: Broadcasted import InfiniteArrays: InfIndexRanges, Infinity, PosInfinity, OneToInf, InfAxes, AbstractInfUnitRange, InfRanges, InfBaseToeplitzLayouts, ConstRowMatrix, PertConstRowMatrix, SymTriPertToeplitz, TriPertToeplitz, ConstRows, PertConstRows, PertTridiagonalToeplitzLayout -import ArrayLayouts: sub_materialize, MemoryLayout, sublayout, mulreduce, triangularlayout, MatLdivVec, subdiagonaldata, diagonaldata, supdiagonaldata +import ArrayLayouts: sub_materialize, MemoryLayout, sublayout, mulreduce, triangularlayout, MatLdivVec, subdiagonaldata, diagonaldata, supdiagonaldata, OnesLayout, _copy_oftype import LazyArrays: applybroadcaststyle, applylayout, islazy, islazy_layout, simplifiable, AbstractLazyLayout, PaddedColumns, LazyArrayStyle, ApplyLayout, AbstractLazyBandedLayout, ApplyBandedLayout, BroadcastBandedLayout import BandedMatrices: _BandedMatrix, AbstractBandedMatrix, banded_similar, BandedMatrix, bandedcolumns, BandedColumns, bandeddata, _default_banded_broadcast import FillArrays: AbstractFillMatrix, AbstractFill, getindex_value @@ -403,6 +403,9 @@ mulreduce(M::Mul{<:DiagonalLayout, <:InfToeplitzLayouts}) = Lmul(M) mulreduce(M::Mul{<:InfToeplitzLayouts, <:DiagonalLayout}) = Rmul(M) copy(M::Mul{<:DiagonalLayout, <:InfToeplitzLayouts}) = copy(mulreduce(M)) copy(M::Mul{<:InfToeplitzLayouts, <:DiagonalLayout}) = copy(mulreduce(M)) +copy(M::Mul{<:InfToeplitzLayouts, <:DiagonalLayout{<:OnesLayout}}) = _copy_oftype(M.A, eltype(M)) +copy(M::Mul{<:DiagonalLayout{<:OnesLayout}, <:InfToeplitzLayouts}) = _copy_oftype(M.B, eltype(M)) + # copy for AdjOrTrans