From 064869323f2902efcc810f2fc740b36c44f8fd67 Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Sun, 10 Nov 2024 22:19:50 +0000 Subject: [PATCH] arguments for QuasiAdj/Trans broadcasting --- Project.toml | 2 +- src/QuasiArrays.jl | 3 ++- src/quasiadjtrans.jl | 8 ++++++++ test/test_quasibroadcast.jl | 8 ++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 99b9efe..693a147 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "QuasiArrays" uuid = "c4ea9172-b204-11e9-377d-29865faadc5c" authors = ["Sheehan Olver "] -version = "0.11.7" +version = "0.11.8" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/src/QuasiArrays.jl b/src/QuasiArrays.jl index 6d89998..ca8ef25 100644 --- a/src/QuasiArrays.jl +++ b/src/QuasiArrays.jl @@ -49,7 +49,8 @@ import LazyArrays: MemoryLayout, UnknownLayout, Mul, ApplyLayout, BroadcastLayou LdivStyle, InvLayout, PInvLayout, sub_materialize, lazymaterialize, _mul, rowsupport, DiagonalLayout, adjointlayout, transposelayout, conjlayout, sublayout, call, LazyArrayStyle, layout_getindex, _broadcast2broadcastarray, _applyarray_summary, _broadcastarray_summary, - _broadcasted_mul, simplifiable, simplify, _mul_colsupport, _mul_rowsupport + _broadcasted_mul, simplifiable, simplify, _mul_colsupport, _mul_rowsupport, + _adjoint, _transpose import Base.IteratorsMD diff --git a/src/quasiadjtrans.jl b/src/quasiadjtrans.jl index 7d02431..968c69f 100644 --- a/src/quasiadjtrans.jl +++ b/src/quasiadjtrans.jl @@ -237,6 +237,14 @@ BroadcastStyle(::Type{<:QuasiTranspose{<:Any,<:Inclusion}}) = LazyQuasiArrayStyl +### +# broadcast support +### + +arguments(b::BroadcastLayout, A::QuasiAdjoint) = map(_adjoint, arguments(b, parent(A))) +arguments(b::BroadcastLayout, A::QuasiTranspose) = map(_transpose, arguments(b, parent(A))) + + ### # adjoint concat support ### diff --git a/test/test_quasibroadcast.jl b/test/test_quasibroadcast.jl index e75fe5d..fac5d49 100644 --- a/test/test_quasibroadcast.jl +++ b/test/test_quasibroadcast.jl @@ -299,4 +299,12 @@ import QuasiArrays: QuasiCartesianIndex, QuasiCartesianIndices, DefaultQuasiArra A[ones(Int)] .+= 1 @test A == [2,1,1,1] end + + @testset "adjoint arguments" begin + a = QuasiVector(randn(6), 0:0.5:2.5) + @test MemoryLayout(BroadcastQuasiArray(*, 2, a)') isa LazyArrays.BroadcastLayout + @test MemoryLayout(transpose(BroadcastQuasiArray(*, 2, a))) isa LazyArrays.BroadcastLayout + @test LazyArrays.arguments(BroadcastQuasiArray(*, 2, a)') == (2, a') + @test LazyArrays.arguments(transpose(BroadcastQuasiArray(*, 2, a))) == (2, transpose(a)) + end end