diff --git a/Project.toml b/Project.toml index 697f3692..93a7c6ec 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "BandedMatrices" uuid = "aae01518-5342-5314-be14-df237901396f" -version = "0.16.9" +version = "0.16.10" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/src/generic/broadcast.jl b/src/generic/broadcast.jl index 20898ff5..e3123056 100644 --- a/src/generic/broadcast.jl +++ b/src/generic/broadcast.jl @@ -755,8 +755,7 @@ _band_eval_args(a, b...) = (a, _band_eval_args(b...)...) _band_eval_args(::Base.RefValue{Type{T}}, b...) where T = (T, _band_eval_args(b...)...) _band_eval_args(a::AbstractMatrix{T}, b...) where T = (zero(T), _band_eval_args(b...)...) _band_eval_args(a::AbstractVector{T}, b...) where T = (one(T), _band_eval_args(b...)...) -_broadcast_eltype(a) = Base.promote_op(a.f, map(eltype,a.args)...) -_band_eval_args(a::Broadcasted, b...) = (zero(_broadcast_eltype(a)), _band_eval_args(b...)...) +_band_eval_args(a::Broadcasted, b...) = (zero(Base.Broadcast.combine_eltypes(a.f, a.args)), _band_eval_args(b...)...) # zero dominates. Take the minimum bandwidth. Always treat like matrix. diff --git a/test/test_broadcasting.jl b/test/test_broadcasting.jl index 8c13ff63..d7b4558d 100644 --- a/test/test_broadcasting.jl +++ b/test/test_broadcasting.jl @@ -536,5 +536,9 @@ import BandedMatrices: BandedStyle, BandedRows B = Base.Broadcast.broadcasted(*, Base.Broadcast.broadcasted(+, 2, x), A) @test bandwidths(B) == bandwidths(A) == bandwidths(materialize(B)) == (2,1) @test materialize(B) == (2 .+ x) .* Matrix(A) + + B = Base.Broadcast.broadcasted(+, Base.Broadcast.broadcasted(+, A, A), A) + @test bandwidths(B) == bandwidths(A) + @test (A .+ A) .+ A == 3A end end \ No newline at end of file