Skip to content

Commit 88af565

Browse files
committed
BroadcastStyle for Bidiagnal
1 parent dfb8513 commit 88af565

File tree

5 files changed

+18
-5
lines changed

5 files changed

+18
-5
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
deps/deps.jl
55
Manifest.toml
66
.DS_Store
7+
.vscode/settings.json

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "LazyBandedMatrices"
22
uuid = "d7e5e226-e90b-4449-9968-0f923699bf6f"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.11.7"
4+
version = "0.11.8"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

src/LazyBandedMatrices.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ using BandedMatrices, BlockBandedMatrices, BlockArrays, LazyArrays, FillArrays,
66
import Base: -, +, *, /, \, ==, AbstractMatrix, Matrix, Array, size, conj, real, imag, copy, copymutable,
77
iszero, isone, one, zero, getindex, setindex!, copyto!, fill, fill!, promote_rule, show, print_matrix, permutedims,
88
OneTo, oneto, require_one_based_indexing, similar, convert, axes, tail, tuple_type_tail, view, resize!
9-
import Base.Broadcast: Broadcasted, BroadcastStyle, broadcasted, instantiate
9+
import Base.Broadcast: Broadcasted, BroadcastStyle, broadcasted, instantiate, result_style
1010
import LinearAlgebra: transpose, adjoint, istriu, istril, isdiag, tril!, triu!, det, logabsdet,
1111
symmetric, symmetric_type, diag, issymmetric, UniformScaling, char_uplo,
1212
AbstractTriangular, AdjOrTrans, StructuredMatrixStyle, Diagonal
@@ -17,7 +17,8 @@ import ArrayLayouts: MemoryLayout, bidiagonallayout, bidiagonaluplo, diagonaldat
1717
materialize!, MulAdd, MatMulVecAdd
1818
import LazyArrays: ApplyLayout, AbstractPaddedLayout, PaddedLayout, PaddedColumns, BroadcastLayout, LazyArrayStyle, LazyLayout,
1919
arguments, call, tuple_type_memorylayouts, paddeddata, _broadcast_sub_arguments, resizedata!,
20-
_cumsum, convexunion, applylayout, AbstractLazyBandedLayout, ApplyBandedLayout, BroadcastBandedLayout, LazyBandedLayout, applied_eltype
20+
_cumsum, convexunion, applylayout, AbstractLazyBandedLayout, ApplyBandedLayout, BroadcastBandedLayout, LazyBandedLayout, applied_eltype,
21+
CachedArrayStyle
2122
import BandedMatrices: AbstractBandedMatrix, BandedStyle, bandwidths, isbanded
2223
import BlockBandedMatrices: AbstractBlockBandedLayout, AbstractBandedBlockBandedLayout, BlockRange1, Block1, blockbandwidths, subblockbandwidths,
2324
BlockBandedStyle, BandedBlockBandedStyle, isblockbanded, isbandedblockbanded

src/bidiag.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,8 @@ similar(B::Bidiagonal, ::Type{T}) where {T} = Bidiagonal(similar(B.dv, T), simil
188188
# The method below is moved to SparseArrays for now
189189
# similar(B::Bidiagonal, ::Type{T}, dims::Union{Dims{1},Dims{2}}) where {T} = spzeros(T, dims...)
190190

191-
191+
# Broadcasting
192+
BroadcastStyle(::Type{<:Bidiagonal{<:Any, DV, EV}}) where {DV, EV} = result_style(BandedStyle(), result_style(BroadcastStyle(DV), BroadcastStyle(EV)))
192193

193194
####################
194195
# Generic routines #

test/test_bidiag.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
module TestBidiag
22

33
# This file is based on a part of Julia LinearAlgebra/test/bidiag.jl. License is MIT: https://julialang.org/license
4-
using Test, LazyBandedMatrices, SparseArrays, Random, FillArrays
4+
using Test, LazyBandedMatrices, SparseArrays, Random, FillArrays, LazyArrays, BandedMatrices
55
import LazyBandedMatrices: Bidiagonal, SymTridiagonal, Tridiagonal
66
import LinearAlgebra
77
import LinearAlgebra: mul!, istril, istriu, diagm, isdiag, triu, tril, triu!, tril!, diag, UpperTriangular, LowerTriangular, UnitLowerTriangular, UnitUpperTriangular,
88
dot, Diagonal
9+
import LazyArrays: CachedArrayStyle
10+
import Base.Broadcast: BroadcastStyle
11+
import BandedMatrices: BandedStyle
912

1013
@testset "Bidiagonal" begin
1114
n = 10 #Size of test matrix
@@ -488,6 +491,13 @@ import LinearAlgebra: mul!, istril, istriu, diagm, isdiag, triu, tril, triu!, tr
488491
@test B.dv 1:5
489492
@test B.ev Ones{Int}(4)
490493
end
494+
495+
@testset "BroadcastStyle" begin
496+
@test BroadcastStyle(typeof(Bidiagonal(1:3, 1:2, :U))) == BandedStyle()
497+
@test BroadcastStyle(typeof(Bidiagonal(1:3, Accumulate(*, 1:2), :L))) == CachedArrayStyle{2}()
498+
@test BroadcastStyle(typeof(Bidiagonal(Accumulate(*, 1:3), Accumulate(*, 1:2), :U))) == CachedArrayStyle{2}()
499+
@test BroadcastStyle(typeof(Bidiagonal(Accumulate(*, 1:3), 1:2, :L))) == CachedArrayStyle{2}()
500+
end
491501
end # testset
492502

493503
end # module TestBidiagonal

0 commit comments

Comments
 (0)