Skip to content

Commit c2b319e

Browse files
authored
broadcast numbers over vec(data) (#304)
1 parent 1009bb9 commit c2b319e

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/generic/broadcast.jl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -704,18 +704,23 @@ _default_banded_broadcast(bc::Broadcasted) = _default_banded_broadcast(bc, axes(
704704
_banded_broadcast(f, args::Tuple, _...) = _default_banded_broadcast(broadcasted(f, args...))
705705
_banded_broadcast(f, arg, _...) = _default_banded_broadcast(broadcasted(f, arg))
706706

707-
708707
function _banded_broadcast(f, A::AbstractMatrix{T}, ::BandedColumns) where T
709708
iszero(f(zero(T))) || return _default_banded_broadcast(broadcasted(f, A))
710-
_BandedMatrix(f.(bandeddata(A)), axes(A,1), bandwidths(A)...)
709+
Bdata = bandeddata(A)
710+
Bdata_new = reshape(f.(vec(Bdata)), size(Bdata))
711+
_BandedMatrix(Bdata_new, axes(A,1), bandwidths(A)...)
711712
end
712713
function _banded_broadcast(f, (src,x)::Tuple{AbstractMatrix{T},Number}, ::BandedColumns) where T
713714
iszero(f(zero(T),x)) || return _default_banded_broadcast(broadcasted(f, src,x))
714-
_BandedMatrix(f.(bandeddata(src),x), axes(src,1), bandwidths(src)...)
715+
Bdata = bandeddata(src)
716+
Bdata_new = reshape(f.(vec(Bdata), x), size(Bdata))
717+
_BandedMatrix(Bdata_new, axes(src,1), bandwidths(src)...)
715718
end
716719
function _banded_broadcast(f, (x, src)::Tuple{Number,AbstractMatrix{T}}, ::BandedColumns) where T
717720
iszero(f(x, zero(T))) || return _default_banded_broadcast(broadcasted(f, x,src))
718-
_BandedMatrix(f.(x, bandeddata(src)), axes(src,1), bandwidths(src)...)
721+
Bdata = bandeddata(src)
722+
Bdata_new = reshape(f.(x, vec(Bdata)), size(Bdata))
723+
_BandedMatrix(Bdata_new, axes(src,1), bandwidths(src)...)
719724
end
720725

721726
function copy(bc::Broadcasted{BandedStyle, <:Any, <:Any, <:Tuple{<:AbstractMatrix}})

0 commit comments

Comments
 (0)