Skip to content

Commit 219e0af

Browse files
authored
Support QuasiDiagonal (#61)
* Support QuasiDiagonal * v0.7
1 parent ce37dcd commit 219e0af

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
name = "ArrayLayouts"
22
uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.6.5"
4+
version = "0.7"
5+
56

67
[deps]
78
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"

src/diagonal.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function materialize!(M::Lmul{<:DiagonalLayout{<:AbstractFillLayout}})
1616
end
1717

1818

19-
copy(M::Lmul{<:DiagonalLayout,<:DiagonalLayout}) = Diagonal(diagonaldata(M.A) .* diagonaldata(M.B))
19+
copy(M::Lmul{<:DiagonalLayout,<:DiagonalLayout}) = diagonal(diagonaldata(M.A) .* diagonaldata(M.B))
2020
copy(M::Lmul{<:DiagonalLayout}) = diagonaldata(M.A) .* M.B
2121
copy(M::Rmul{<:Any,<:DiagonalLayout}) = M.A .* permutedims(diagonaldata(M.B))
2222

@@ -36,15 +36,15 @@ function materialize!(M::Ldiv{<:DiagonalLayout})
3636
M.B
3737
end
3838

39-
copy(M::Ldiv{<:DiagonalLayout,<:DiagonalLayout}) = Diagonal(inv.(M.A.diag) .* M.B.diag)
39+
copy(M::Ldiv{<:DiagonalLayout,<:DiagonalLayout}) = diagonal(inv.(M.A.diag) .* M.B.diag)
4040
copy(M::Ldiv{<:DiagonalLayout}) = inv.(M.A.diag) .* M.B
4141
copy(M::Ldiv{<:DiagonalLayout{<:AbstractFillLayout}}) = inv(getindex_value(M.A.diag)) .* M.B
42-
copy(M::Ldiv{<:DiagonalLayout{<:AbstractFillLayout},<:DiagonalLayout}) = Diagonal(inv(getindex_value(M.A.diag)) .* M.B.diag)
42+
copy(M::Ldiv{<:DiagonalLayout{<:AbstractFillLayout},<:DiagonalLayout}) = diagonal(inv(getindex_value(M.A.diag)) .* M.B.diag)
4343

44-
copy(M::Rdiv{<:DiagonalLayout,<:DiagonalLayout}) = Diagonal(M.A.diag .* inv.(M.B.diag))
44+
copy(M::Rdiv{<:DiagonalLayout,<:DiagonalLayout}) = diagonal(M.A.diag .* inv.(M.B.diag))
4545
copy(M::Rdiv{<:Any,<:DiagonalLayout}) = M.A .* inv.(permutedims(M.B.diag))
4646
copy(M::Rdiv{<:Any,<:DiagonalLayout{<:AbstractFillLayout}}) = M.A .* inv(getindex_value(M.B.diag))
47-
copy(M::Rdiv{<:DiagonalLayout,<:DiagonalLayout{<:AbstractFillLayout}}) = Diagonal(M.A.diag .* inv(getindex_value(M.B.diag)))
47+
copy(M::Rdiv{<:DiagonalLayout,<:DiagonalLayout{<:AbstractFillLayout}}) = diagonal(M.A.diag .* inv(getindex_value(M.B.diag)))
4848

4949

5050

src/memorylayout.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ bidiagonallayout(d) = bidiagonallayout(d, d)
554554
tridiagonallayout(d) = tridiagonallayout(d,d,d)
555555
symtridiagonallayout(d) = symtridiagonallayout(d,d)
556556
diagonallayout(_) = DiagonalLayout{UnknownLayout}()
557-
557+
diagonal(d::AbstractVector) = Diagonal(d) # support non-array diagonal objects like QuasiDiagonal
558558

559559
diagonallayout(::Lay) where Lay<:Union{AbstractStridedLayout, AbstractFillLayout} = DiagonalLayout{Lay}()
560560
bidiagonallayout(::Lay, ::Lay) where Lay<:Union{AbstractStridedLayout, AbstractFillLayout} = BidiagonalLayout{Lay,Lay}()
@@ -656,8 +656,8 @@ end
656656
rowsupport(::ZerosLayout, A, _) = 1:0
657657
colsupport(::ZerosLayout, A, _) = 1:0
658658

659-
rowsupport(::DiagonalLayout, _, k) = isempty(k) ? (1:0) : minimum(k):maximum(k)
660-
colsupport(::DiagonalLayout, _, j) = isempty(j) ? (1:0) : minimum(j):maximum(j)
659+
rowsupport(::DiagonalLayout, _, k) = k
660+
colsupport(::DiagonalLayout, _, j) = j
661661

662662
function colsupport(::BidiagonalLayout, A, j)
663663
isempty(j) && return 1:0

0 commit comments

Comments
 (0)