Improve broadcasting of PDMat
and PDiagMat
#197
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements
Base.broadcastable
forPDMat
andPDiagMat
by falling back to the wrapped matrix and aDiagonal
object, respectively. Many generic fallbacks use broadcasting, and by falling back on the underlying better supportedAbstractMatrix
objects we reduce the number of surprising and undesired results in broadcasting operations but also e.g. subtraction (see #195 (comment)).One could similarly define
Base.broadcastable(a::ScalMat) = Base.broadcastable(Diagonal(fill(a.value, a.dim)))
but this leads to undesired results when working with e.g. static arrays (and causes undesired allocations which could maybe be fixed by working with FillArrays.Fill - but only recently we noticed that a dependency on FillArrays would increase loading time significantly: #192).