-
Notifications
You must be signed in to change notification settings - Fork 1
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
Conversation
…nto manjulas_adder
Fix imports for the ClassicalAdd
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? |
Sure Julien, thanks |
There was a problem hiding this 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!
* 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>
* 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>
Summary
Implemented classical adder in QFT paper