Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented classical adder in QFT paper #13

Merged
merged 24 commits into from
Apr 6, 2021

Conversation

ManjulaGandhi
Copy link

  • I have added the tests to cover my changes.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.

Summary

Implemented classical adder in QFT paper

@Cryoris
Copy link
Owner

Cryoris commented Mar 28, 2021

Hi @ManjulaGandhi, the changes look good! Since we merged the ripple-carry adders the code you copied now already exists in the repo. Could you fix the merge conflicts by pulling from my branch and adjusting the inits and tests?

@ManjulaGandhi
Copy link
Author

Sure Julien, thanks

Copy link
Owner

@Cryoris Cryoris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, thanks for the work!

@Cryoris Cryoris merged commit b2dab3f into Cryoris:adders Apr 6, 2021
Cryoris added a commit that referenced this pull request May 25, 2021
* Implement ripple-carry adder circuit (#11)

* Implement initial draft of ripple-carry adder circuit

* Switch to ancilla register for ancilla qubits

* Remove padding for simpler implementation

* Add small fixes from review

* Add initial unit tests

Co-authored-by: Julien Gacon <[email protected]>

* Switch carry out from ancilla to usual register

* Update __init__ docstring with raises

* Add suggestions from review; Clean-up

Co-authored-by: Julien Gacon <[email protected]>

* Add additional test for ripple-carry adder

Co-authored-by: Julien Gacon <[email protected]>

* Implement QFT adder (#22)

* Implement initial draft of ripple-carry adder circuit

* Switch to ancilla register for ancilla qubits

* Remove padding for simpler implementation

* Add small fixes from review

* Add initial unit tests

Co-authored-by: Julien Gacon <[email protected]>

* Switch carry out from ancilla to usual register

* Update __init__ docstring with raises

* Add suggestions from review; Clean-up

Co-authored-by: Julien Gacon <[email protected]>

* Add additional test for ripple-carry adder

* Implement initial QFT adder circuit

Co-authored-by: Julien Gacon <[email protected]>

* Fix QFT adder carry out; Switch to non-modular as default

* Expand adder tests with QFT adder

* Rename test_adder.py -> test_adders.py

* Include additional QFT adder documentation

* Fix typos

* Fix documentation math

Co-authored-by: Julien Gacon <[email protected]>

* Add non-modular test as default

Co-authored-by: Julien Gacon <[email protected]>

* Remove duplicate file after merge

Co-authored-by: Julien Gacon <[email protected]>

* Implemented classical adder in QFT paper (#13)

* empty

* empty

* Implemented classical adder in QFT paper

* Implemented classical adder in QFT paper

* fix classicaladd imports

* fix missing imports

* Added the tests part for ClassicalAdd

* move cin to bottom

* Updated the documentation and test parts for ClassicalAdder

* Updated init files

* Deleted adder folder from the git repository

* Deleted test_classicaladd.py

* Deleted old classicaladder file

* Deleted __init__.py file from repository

* Updated classical_adder file

Co-authored-by: Cryoris <[email protected]>
Co-authored-by: Julien Gacon <[email protected]>

* unify tests

* inject base class ``Adder``

* add reno

* fix lint

* fix trailing whitespace in line beginning

* rework docstrings for less duplication

* several updates

* modular RippleCarryAdder
* test that ancillas are uncomputed
* fix ClassicalAdder ancilla uncompute
* replace all to_instruction by to_gate

* lint

* rename classical to plain, make plain modular

* Renamed PlainAdder to VBERippleCarryAdder (#29)

Co-authored-by: Cryoris <[email protected]>

* rename modular->fixed point

and fix lint

* add author names to adders

* add comment on how the test works

* black

* add fixed/half/full, misses test for full

* add test for "full"

* black

* update docstrings

* fix sphinx

* rename fixed-point to fixed-sized

Co-authored-by: Mantas Čepulkovskis <[email protected]>
Co-authored-by: Manjula <[email protected]>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
mergify bot added a commit that referenced this pull request Jun 1, 2021
* Implement initial draft of ripple-carry adder circuit

* Switch to ancilla register for ancilla qubits

* Remove padding for simpler implementation

* Add small fixes from review

* Add initial unit tests

Co-authored-by: Julien Gacon <[email protected]>

* Switch carry out from ancilla to usual register

* Update __init__ docstring with raises

* Add suggestions from review; Clean-up

Co-authored-by: Julien Gacon <[email protected]>

* Add additional test for ripple-carry adder

* Implement initial QFT adder circuit

Co-authored-by: Julien Gacon <[email protected]>

* Fix QFT adder carry out; Switch to non-modular as default

* Expand adder tests with QFT adder

* Rename test_adder.py -> test_adders.py

* Include additional QFT adder documentation

* Fix typos

* Implement ripple-carry adder circuit (#11)

* Implement initial draft of ripple-carry adder circuit

* Switch to ancilla register for ancilla qubits

* Remove padding for simpler implementation

* Add small fixes from review

* Add initial unit tests

Co-authored-by: Julien Gacon <[email protected]>

* Switch carry out from ancilla to usual register

* Update __init__ docstring with raises

* Add suggestions from review; Clean-up

Co-authored-by: Julien Gacon <[email protected]>

* Add additional test for ripple-carry adder

Co-authored-by: Julien Gacon <[email protected]>

* Fix documentation math

Co-authored-by: Julien Gacon <[email protected]>

* Add non-modular test as default

Co-authored-by: Julien Gacon <[email protected]>

* Remove duplicate file after merge

* Implement QFT adder (#22)

* Implement initial draft of ripple-carry adder circuit

* Switch to ancilla register for ancilla qubits

* Remove padding for simpler implementation

* Add small fixes from review

* Add initial unit tests

Co-authored-by: Julien Gacon <[email protected]>

* Switch carry out from ancilla to usual register

* Update __init__ docstring with raises

* Add suggestions from review; Clean-up

Co-authored-by: Julien Gacon <[email protected]>

* Add additional test for ripple-carry adder

* Implement initial QFT adder circuit

Co-authored-by: Julien Gacon <[email protected]>

* Fix QFT adder carry out; Switch to non-modular as default

* Expand adder tests with QFT adder

* Rename test_adder.py -> test_adders.py

* Include additional QFT adder documentation

* Fix typos

* Fix documentation math

Co-authored-by: Julien Gacon <[email protected]>

* Add non-modular test as default

Co-authored-by: Julien Gacon <[email protected]>

* Remove duplicate file after merge

Co-authored-by: Julien Gacon <[email protected]>

* Implemented classical adder in QFT paper (#13)

* empty

* empty

* Implemented classical adder in QFT paper

* Implemented classical adder in QFT paper

* fix classicaladd imports

* fix missing imports

* Added the tests part for ClassicalAdd

* move cin to bottom

* Updated the documentation and test parts for ClassicalAdder

* Updated init files

* Deleted adder folder from the git repository

* Deleted test_classicaladd.py

* Deleted old classicaladder file

* Deleted __init__.py file from repository

* Updated classical_adder file

Co-authored-by: Cryoris <[email protected]>
Co-authored-by: Julien Gacon <[email protected]>

* unify tests

* inject base class ``Adder``

* add reno

* fix lint

* Implement initial classical multiplier

* Implement test for multipliers

* Update docstring

* fix trailing whitespace in line beginning

* rework docstrings for less duplication

* Change instructions to gates in adder circuits

* Generalize multiplier for any adder

* Expand multiplier test with all adders

* Fix pylint errors

* Implement review suggestions

Co-authored-by: Julien Gacon <[email protected]>

* several updates

* modular RippleCarryAdder
* test that ancillas are uncomputed
* fix ClassicalAdder ancilla uncompute
* replace all to_instruction by to_gate

* lint

* rename classical to plain, make plain modular

* Implement initial QFT multiplier draft

* Update QFT multiplier docstring

* Create common multiplier class

* Renamed PlainAdder to VBERippleCarryAdder (#29)

Co-authored-by: Cryoris <[email protected]>

* rename modular->fixed point

and fix lint

* add author names to adders

* add comment on how the test works

* black

* Fix common multiplier errors

* Update classical multiplier default adder name

* Fix QFT multiplier registers

* Implement tests for multipliers

* Fix lint

* Add black formatter changes

* Switch to adder object instead of type

* Update classical multiplier drawing

* Switch to PhaseGate in QFT multiplier

* Rename multipliers

* Implement modulo in QFT multiplier

* Update to half adder in cumulative multiplier

* Make number of output qubits optional

* Implement modular cumulative multiplier

* Add test for modular multiplication

* Fix wrong parameter name

* Expand common multiplier class with checks; Add more tests for multipliers

* Add black and lint changes

* Add releasenote

* Attempt cyclic import fix

* Attempt to fix cyclic import once more

* Update qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py

Co-authored-by: Julien Gacon <[email protected]>

* Update qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py

Co-authored-by: Julien Gacon <[email protected]>

* Update qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py

Co-authored-by: Julien Gacon <[email protected]>

* Update qiskit/circuit/library/arithmetic/multipliers/multiplier.py

Co-authored-by: Julien Gacon <[email protected]>

* Update qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py

Co-authored-by: Julien Gacon <[email protected]>

* Add additional test cases

Co-authored-by: Julien Gacon <[email protected]>

* Include circuit diagram for QFT multiplier

Co-authored-by: Julien Gacon <[email protected]>

* Update docstring as suggested

Co-authored-by: Julien Gacon <[email protected]>

* Move num_result_qubits logic to parent class

Co-authored-by: Julien Gacon <[email protected]>

* Switch to NotImplementedError for cumulative multiplier

Co-authored-by: Julien Gacon <[email protected]>

* Add black changes

* Update Multiplier class docstring

Co-authored-by: Julien Gacon <[email protected]>

* Add lint changes

* Update qiskit/circuit/library/arithmetic/multipliers/multiplier.py

Co-authored-by: Julien Gacon <[email protected]>

* Update qiskit/circuit/library/arithmetic/multipliers/multiplier.py

Co-authored-by: Julien Gacon <[email protected]>

* Add black and pylint fixes

Co-authored-by: Julien Gacon <[email protected]>
Co-authored-by: Julien Gacon <[email protected]>
Co-authored-by: Manjula <[email protected]>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants