From 8c4e73b8e68abce96600def665d78ab06a6c2d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Galy-Fajou?= Date: Tue, 15 Sep 2020 16:38:37 +0200 Subject: [PATCH 1/2] Parametrize vector in BlockDiagonal --- src/blockdiagonal.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/blockdiagonal.jl b/src/blockdiagonal.jl index c1dc34d..3e60123 100644 --- a/src/blockdiagonal.jl +++ b/src/blockdiagonal.jl @@ -5,16 +5,16 @@ A matrix with matrices on the diagonal, and zeros off the diagonal. """ -struct BlockDiagonal{T, V<:AbstractMatrix{T}} <: AbstractMatrix{T} - blocks::Vector{V} +struct BlockDiagonal{T, V<:AbstractMatrix{T}, AV<:AbstractVector{V}} <: AbstractMatrix{T} + blocks::AV - function BlockDiagonal{T, V}(blocks::Vector{V}) where {T, V<:AbstractMatrix{T}} - return new{T, V}(blocks) + function BlockDiagonal{T, V, AV}(blocks::AV) where {T, V<:AbstractMatrix{T}, AV<:AbstractVector{V}} + return new{T, V, AV}(blocks) end end -function BlockDiagonal(blocks::Vector{V}) where {T, V<:AbstractMatrix{T}} - return BlockDiagonal{T, V}(blocks) +function BlockDiagonal(blocks::AV) where {T, V<:AbstractMatrix{T}, AV<:AbstractVector{V}} + return BlockDiagonal{T, V, AV}(blocks) end BlockDiagonal(B::BlockDiagonal) = B From b7da683d1177fa1f86cef3e29472c0fad76fd56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Galy-Fajou?= Date: Tue, 15 Sep 2020 17:10:55 +0200 Subject: [PATCH 2/2] Update inline docs --- src/blockdiagonal.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blockdiagonal.jl b/src/blockdiagonal.jl index 3e60123..38ceb0e 100644 --- a/src/blockdiagonal.jl +++ b/src/blockdiagonal.jl @@ -1,7 +1,7 @@ # Core functionality for the `BlockDiagonal` type """ - BlockDiagonal{T, V<:AbstractMatrix{T}} <: AbstractMatrix{T} + BlockDiagonal{T, V<:AbstractMatrix{T}, AV<:AbstractVector{V}} <: AbstractMatrix{T} A matrix with matrices on the diagonal, and zeros off the diagonal. """ @@ -22,7 +22,7 @@ BlockDiagonal(B::BlockDiagonal) = B is_square(A::AbstractMatrix) = size(A, 1) == size(A, 2) """ - blocks(B::BlockDiagonal{T, V}) -> Vector{V} + blocks(B::BlockDiagonal{T, V, AV}) -> AV Return the on-diagonal blocks of B. """