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.
CC @michelp who requested this.
When n=0, I decided to create a complete diagonal matrix using the identity of the binaryop if the identity exists (and raise if it doesn't).
We want the following equality to hold:
We could try to make the diagonal more sparse to better support hypersparse matrices, but this would need to determine both nonempty rows and nonempty columns, because
I
needs to be able to be the left-identity and the right-identity. Creating the complete diagonal matrix is much simpler.CC @jim22k. When we added
Matrix.power
in #483, I believe we discussedn=0
, and we decided to punt until it was needed. As we discussed, n=0 is a little awkward b/c the identity value isn't always available (since it ought to come from the binaryop--not the monoid--of the semiring), and we weren't sure whether we should try to return a sparse diagonal or if this is what the user would want and expect. I think the behavior in this PR is the best approach.