Raise error in parse_einsum_input
when output subscript is specified multiple times
#222
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.
Description
currently relies on the backend to throw an error if an output subscript is specified multiple times. However
would still return an einsum path despite the wrong einsum equation. This might lead to subtle errors if a user ends up relying on this behaviour by accident. E.g. when using the jax backend no error is thrown but only an internal assertion fails.
This PR raises the error already in
parse_einsum_input
which ensures thatcontract_path
matches the behaviour ofnp.einsum
and all backends that might rely onopt_einsum
for error handling will do so as well.This PR also extends the unittests to test error handling for both
contract_path
andcontract
which is independent of the backend.For reference I made a similar PR to numpy/numpy#25230 to fix the same issue for
np.einsum_path
.Status