Skip to content

Commit a09e02f

Browse files
authored
Fix ambiguities with AbstractTriangular (#57)
* Fix ambiguities with AbstractTriangular * v0.6.1 * Update ArrayLayouts.jl * increase coverage * Update test_layoutarray.jl
1 parent fe34c63 commit a09e02f

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

Project.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
name = "ArrayLayouts"
22
uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.6.0"
4+
version = "0.6.1"
55

66
[deps]
7-
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
87
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"
98
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
109
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
1110

1211
[compat]
13-
Compat = "3.16"
1412
FillArrays = "0.11"
1513
julia = "1.5"
1614

src/ArrayLayouts.jl

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module ArrayLayouts
2-
using Base, Base.Broadcast, LinearAlgebra, FillArrays, SparseArrays, Compat
2+
using Base, Base.Broadcast, LinearAlgebra, FillArrays, SparseArrays
33
import LinearAlgebra.BLAS
44

55
import Base: AbstractArray, AbstractMatrix, AbstractVector,
@@ -170,8 +170,25 @@ for Mod in (:Adjoint, :Transpose, :Symmetric, :Hermitian)
170170
@eval begin
171171
*(A::Diagonal{<:Any,<:LayoutVector}, B::$Mod{<:Any,<:LayoutMatrix}) = mul(A,B)
172172
*(A::$Mod{<:Any,<:LayoutMatrix}, B::Diagonal{<:Any,<:LayoutVector}) = mul(A,B)
173+
*(A::Diagonal{<:Any,<:LayoutVector}, B::$Mod{<:Any,<:AbstractMatrix}) = mul(A,B)
174+
*(A::$Mod{<:Any,<:AbstractMatrix}, B::Diagonal{<:Any,<:LayoutVector}) = mul(A,B)
173175
end
174176
end
177+
178+
*(A::LayoutMatrix, B::Adjoint{<:Any,<:AbstractTriangular}) = mul(A, B)
179+
*(A::LayoutMatrix, B::Transpose{<:Any,<:AbstractTriangular}) = mul(A, B)
180+
*(A::Adjoint{<:Any,<:AbstractTriangular}, B::LayoutMatrix) = mul(A, B)
181+
*(A::Transpose{<:Any,<:AbstractTriangular}, B::LayoutMatrix) = mul(A, B)
182+
183+
*(A::Transpose{<:Any,<:AbstractTriangular}, B::Adjoint{<:Any,<:LayoutMatrix}) = mul(A, B)
184+
*(A::Adjoint{<:Any,<:AbstractTriangular}, B::Transpose{<:Any,<:LayoutMatrix}) = mul(A, B)
185+
*(A::Adjoint{<:Any,<:AbstractTriangular}, B::Adjoint{<:Any,<:LayoutMatrix}) = mul(A, B)
186+
*(A::Transpose{<:Any,<:AbstractTriangular}, B::Transpose{<:Any,<:LayoutMatrix}) = mul(A, B)
187+
*(A::Adjoint{<:Any,<:LayoutMatrix}, B::Transpose{<:Any,<:AbstractTriangular}) = mul(A, B)
188+
*(A::Transpose{<:Any,<:LayoutMatrix}, B::Adjoint{<:Any,<:AbstractTriangular}) = mul(A, B)
189+
*(A::Adjoint{<:Any,<:LayoutMatrix}, B::Adjoint{<:Any,<:AbstractTriangular}) = mul(A, B)
190+
*(A::Transpose{<:Any,<:LayoutMatrix}, B::Transpose{<:Any,<:AbstractTriangular}) = mul(A, B)
191+
175192
\(A::Diagonal{<:Any,<:LayoutVector}, B::Diagonal{<:Any,<:LayoutVector}) = ldiv(A, B)
176193
\(A::Diagonal{<:Any,<:LayoutVector}, B::AbstractMatrix) = ldiv(A, B)
177194
\(A::AbstractMatrix, B::Diagonal{<:Any,<:LayoutVector}) = ldiv(A, B)

test/test_layoutarray.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,22 @@ MemoryLayout(::Type{MyVector}) = DenseColumnMajor()
212212
@test\D \Matrix(D)
213213
@test D\\D
214214
end
215+
216+
@testset "Adj/Trans" begin
217+
A = MyMatrix(randn(5,5))
218+
T = UpperTriangular(randn(5,5))
219+
D = Diagonal(MyVector(randn(5)))
220+
221+
@test D * A' D * A.A'
222+
@test A' * D A.A' * D
223+
224+
@test A * Adjoint(T) A.A * Adjoint(T)
225+
@test A * Transpose(T) A.A * Transpose(T)
226+
@test Adjoint(T) * A Adjoint(T) * A.A
227+
@test Transpose(T) * A Transpose(T) * A.A
228+
@test Transpose(T)A' Adjoint(T)A' Adjoint(T)Transpose(A) Transpose(T)Transpose(A)
229+
@test Transpose(A)Adjoint(T) A'Adjoint(T) A'Transpose(T) Transpose(A)Transpose(T)
230+
end
215231
end
216232

217233
struct MyUpperTriangular{T} <: AbstractMatrix{T}

0 commit comments

Comments
 (0)