From d85074c079255e1afc8c53ecc434a2a886f24b04 Mon Sep 17 00:00:00 2001 From: Matthew Priddin Date: Fri, 4 Nov 2022 11:20:45 +0000 Subject: [PATCH 1/7] Add erroring test --- test/base_maths.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/base_maths.jl b/test/base_maths.jl index 675d334..cb00bc9 100644 --- a/test/base_maths.jl +++ b/test/base_maths.jl @@ -19,6 +19,8 @@ using Test b64 = BlockDiagonal([rand(rng, 2, 2), rand(rng, 2, 2)]) b32 = BlockDiagonal([rand(rng, Float32, 2, 2), rand(rng, Float32, 2, 2)]) + bi = BlockDiagonal([zeros(Int, N1, N1), zeros(Int, N2, N2), zeros(Int, N3, N3)]) + bns = BlockDiagonal([rand(rng, N1, N2), rand(rng, N2, N3), rand(rng, N3, N1)]) @testset "Addition" begin @@ -120,6 +122,8 @@ using Test @test transpose(a) * b1 isa Transpose{<:Number, <:Vector} @test a' * b1 ≈ a' * Matrix(b1) @test transpose(a) * b1 ≈ transpose(a) * Matrix(b1) + # # Method ambiguity bug https://github.com/invenia/BlockDiagonals.jl/issues/91 + @test a' * bi isa Adjoint{<:Number, <:Vector} end @testset "BlockDiagonal * Matrix" begin From 93f0aae9e5e7512042fc562469f188cbcb1310d8 Mon Sep 17 00:00:00 2001 From: Matthew Priddin Date: Fri, 4 Nov 2022 11:22:49 +0000 Subject: [PATCH 2/7] Edit comment --- test/base_maths.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/base_maths.jl b/test/base_maths.jl index cb00bc9..e3aae8f 100644 --- a/test/base_maths.jl +++ b/test/base_maths.jl @@ -122,7 +122,7 @@ using Test @test transpose(a) * b1 isa Transpose{<:Number, <:Vector} @test a' * b1 ≈ a' * Matrix(b1) @test transpose(a) * b1 ≈ transpose(a) * Matrix(b1) - # # Method ambiguity bug https://github.com/invenia/BlockDiagonals.jl/issues/91 + # Method ambiguity bug https://github.com/invenia/BlockDiagonals.jl/issues/91 @test a' * bi isa Adjoint{<:Number, <:Vector} end From ab2ef4d6e45a674633a75b4331fc9490071d12b0 Mon Sep 17 00:00:00 2001 From: Matthew Priddin Date: Fri, 4 Nov 2022 11:23:03 +0000 Subject: [PATCH 3/7] Add fix --- src/base_maths.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/base_maths.jl b/src/base_maths.jl index 97ba761..c7e3c25 100644 --- a/src/base_maths.jl +++ b/src/base_maths.jl @@ -162,11 +162,11 @@ function Base.:*(M::Diagonal{T}, B::BlockDiagonal{T2})::BlockDiagonal where {T, return A end -function Base.:*(vt::Adjoint{T,<: AbstractVector}, B::BlockDiagonal{T}) where {T} +function Base.:*(vt::Adjoint{T,<: AbstractVector}, B::BlockDiagonal{T2, V}) where V<:AbstractMatrix{T2} where {T, T2} return (B' * parent(vt))' end -function Base.:*(vt::Transpose{T,<: AbstractVector}, B::BlockDiagonal{T}) where {T} +function Base.:*(vt::Transpose{T,<: AbstractVector}, B::BlockDiagonal{T2, V}) where V<:AbstractMatrix{T2} where {T, T2} return transpose(transpose(B) * parent(vt)) end From 1418726031658aa8f1d592e5bf6582fdadb98a45 Mon Sep 17 00:00:00 2001 From: mjp98 Date: Fri, 4 Nov 2022 14:12:06 +0000 Subject: [PATCH 4/7] Bump version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 59de12b..6848992 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "BlockDiagonals" uuid = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" authors = ["Invenia Technical Computing Corporation"] -version = "0.1.39" +version = "0.1.40" [deps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" From 48b35a7d7243d820a84182d9ba4c4f646fae4a7d Mon Sep 17 00:00:00 2001 From: mjp98 Date: Mon, 7 Nov 2022 09:29:36 +0000 Subject: [PATCH 5/7] Avoid specifying type parameters where possible Co-authored-by: Daniel Karrasch --- src/base_maths.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base_maths.jl b/src/base_maths.jl index c7e3c25..e259562 100644 --- a/src/base_maths.jl +++ b/src/base_maths.jl @@ -162,7 +162,7 @@ function Base.:*(M::Diagonal{T}, B::BlockDiagonal{T2})::BlockDiagonal where {T, return A end -function Base.:*(vt::Adjoint{T,<: AbstractVector}, B::BlockDiagonal{T2, V}) where V<:AbstractMatrix{T2} where {T, T2} +function Base.:*(vt::Adjoint{<:Any,<:AbstractVector}, B::BlockDiagonal) return (B' * parent(vt))' end From 19461d4deafb3589e6dbf2dff98da90c38daa2b1 Mon Sep 17 00:00:00 2001 From: mjp98 Date: Mon, 7 Nov 2022 09:31:45 +0000 Subject: [PATCH 6/7] Avoid specifying type parameters for `*Transpose` --- src/base_maths.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base_maths.jl b/src/base_maths.jl index e259562..7e26281 100644 --- a/src/base_maths.jl +++ b/src/base_maths.jl @@ -166,7 +166,7 @@ function Base.:*(vt::Adjoint{<:Any,<:AbstractVector}, B::BlockDiagonal) return (B' * parent(vt))' end -function Base.:*(vt::Transpose{T,<: AbstractVector}, B::BlockDiagonal{T2, V}) where V<:AbstractMatrix{T2} where {T, T2} +function Base.:*(vt::Transpose{<:Any,<:AbstractVector}, B::BlockDiagonal) return transpose(transpose(B) * parent(vt)) end From 0315d6146630dd5e6f57afd3e9ad837fce080fb6 Mon Sep 17 00:00:00 2001 From: mjp98 Date: Tue, 15 Nov 2022 10:36:33 +0000 Subject: [PATCH 7/7] Make issue description in comment more specific Co-authored-by: Miha Zgubic --- test/base_maths.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/base_maths.jl b/test/base_maths.jl index e3aae8f..b9ab23f 100644 --- a/test/base_maths.jl +++ b/test/base_maths.jl @@ -122,7 +122,7 @@ using Test @test transpose(a) * b1 isa Transpose{<:Number, <:Vector} @test a' * b1 ≈ a' * Matrix(b1) @test transpose(a) * b1 ≈ transpose(a) * Matrix(b1) - # Method ambiguity bug https://github.com/invenia/BlockDiagonals.jl/issues/91 + # Method ambiguity with different eltypes https://github.com/invenia/BlockDiagonals.jl/issues/91 @test a' * bi isa Adjoint{<:Number, <:Vector} end