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.
Before submitting
Please complete the following checklist when submitting a PR:
All new features must include a unit test.
If you've fixed a bug or added code that should be tested, add a test to the
test directory!
All new functions and code must be clearly commented and documented.
If you do make documentation changes, make sure that the docs build and
render correctly by running
make docs
.Ensure that the test suite passes, by running
make test
.Ensure that code and tests are properly formatted, by running
make format
orblack -l 100 <filename>
on any relevant files. You will need to have the Black code format installed:pip install black
.Add a new entry to the
.github/CHANGELOG.md
file, summarizing thechange, and including a link back to the PR.
The Strawberry Fields source code conforms to
PEP8 standards.
We check all of our code against Pylint.
To lint modified files, simply
pip install pylint
, and thenrun
pylint strawberryfields/path/to/file.py
.When all the above are checked, delete everything above the dashed
line and fill in the pull request template.
Context:
During testing the interferometer Class I came across the problem that Interferometer(unitary_matrix, mesh = 'triangular', tol = 1e-10) and Interferometer(unitary_matrix, mesh = 'rectangular_phase_end', tol = 1e-10) give different results when applied within the boson sampling. As the matrix we are starting with is the same that should not be (see also here: https://discuss.pennylane.ai/t/problems-in-understanding-sf-decompositions-triangular/7875/6 for more details and the discussion).
Description of the Change:
I changed the following things:
the order of the return in the triangular decomposition from reversed(tlist), np,diag(localV), None to None, np,diag(localV), t_list so that in the Interferometer_decomposition function the order of application is first the diagonal (phase shifters) and then the T_i[0] to T_i[N].
Then I changed the interferometer_decompose method such that it checks if the BS1 from the Decomposition is None.
I also provided the minimal example as a test with which i tested the interferometer class. Now the results for both are the same as it should be.
Benefits:
Fixed a problem with the triangular decomposition in the Interferometer.
Possible Drawbacks:
Since I changed the return of the triangular decomposition it might affect other functions. Maybe we should check that first!!
Related GitHub Issues:
Not a gitub Issue but here the form discussion I had:
https://discuss.pennylane.ai/t/problems-in-understanding-sf-decompositions-triangular/7875/6