From bce5c920b9d1dfe688f5757c78020a4c89c3b88f Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Thu, 13 Feb 2025 08:23:12 +0000 Subject: [PATCH] Fix ambiguity in Diagonal(::Fill) * InfToeplitz (#214) --- Project.toml | 2 +- ext/InfiniteArraysBandedMatricesExt.jl | 4 ++++ test/test_infbanded.jl | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 6f9c9d6..05c9366 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "InfiniteArrays" uuid = "4858937d-0d70-526a-a4dd-2d5cb5dd786c" -version = "0.15.4" +version = "0.15.5" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/ext/InfiniteArraysBandedMatricesExt.jl b/ext/InfiniteArraysBandedMatricesExt.jl index 5a99048..bc008a0 100644 --- a/ext/InfiniteArraysBandedMatricesExt.jl +++ b/ext/InfiniteArraysBandedMatricesExt.jl @@ -398,11 +398,15 @@ mulreduce(M::Mul{<:InfToeplitzLayouts,<:PaddedColumns}) = MulAdd(M) mulreduce(M::Mul{<:Any, <:InfToeplitzLayouts}) = ApplyArray(M) mulreduce(M::Mul{<:AbstractQLayout, <:InfToeplitzLayouts}) = ApplyArray(M) simplifiable(::Mul{<:DiagonalLayout, <:InfToeplitzLayouts}) = Val(true) +simplifiable(::Mul{<:DiagonalLayout{<:AbstractFillLayout}, <:InfToeplitzLayouts}) = Val(true) simplifiable(::Mul{<:InfToeplitzLayouts, <:DiagonalLayout}) = Val(true) +simplifiable(::Mul{<:InfToeplitzLayouts, <:DiagonalLayout{<:AbstractFillLayout}}) = 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{<:DiagonalLayout{<:AbstractFillLayout}, <:InfToeplitzLayouts}) = copy(mulreduce(M)) copy(M::Mul{<:InfToeplitzLayouts, <:DiagonalLayout}) = copy(mulreduce(M)) +copy(M::Mul{<:InfToeplitzLayouts, <:DiagonalLayout{<:AbstractFillLayout}}) = 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)) diff --git a/test/test_infbanded.jl b/test/test_infbanded.jl index c250d14..a632a3a 100644 --- a/test/test_infbanded.jl +++ b/test/test_infbanded.jl @@ -107,10 +107,19 @@ const InfBandCartesianIndices = InfiniteArraysBandedMatricesExt.InfBandCartesian @testset "Toep * Diag" begin A = BandedMatrix(1 => Fill(2im,∞), 2 => Fill(-1,∞), 3 => Fill(2,∞), -2 => Fill(-4,∞), -3 => Fill(-2im,∞)) D = Diagonal(1:∞) + F = Diagonal(Fill(2,∞)) @test D*A isa BroadcastMatrix @test A*D isa BroadcastMatrix + @test F*A isa BandedMatrix + @test A*F isa BandedMatrix + @test Eye(∞)*A isa BandedMatrix + @test A*Eye(∞) isa BandedMatrix @test simplifiable(*, D, A) == Val(true) @test simplifiable(*, A, D) == Val(true) + @test simplifiable(*, F, A) == Val(true) + @test simplifiable(*, A, F) == Val(true) + @test simplifiable(*, Eye(∞), A) == Val(true) + @test simplifiable(*, A, Eye(∞)) == Val(true) end @testset "change bands" begin