Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Arithmetic circuit library: multipliers (Qiskit#6470)
* 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 <jules.gacon@googlemail.com> * Switch carry out from ancilla to usual register * Update __init__ docstring with raises * Add suggestions from review; Clean-up Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * Add additional test for ripple-carry adder * Implement initial QFT adder circuit Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * 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 <jules.gacon@googlemail.com> * Switch carry out from ancilla to usual register * Update __init__ docstring with raises * Add suggestions from review; Clean-up Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * Add additional test for ripple-carry adder Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * Fix documentation math Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * Add non-modular test as default Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * 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 <jules.gacon@googlemail.com> * Switch carry out from ancilla to usual register * Update __init__ docstring with raises * Add suggestions from review; Clean-up Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * Add additional test for ripple-carry adder * Implement initial QFT adder circuit Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * 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 <jules.gacon@googlemail.com> * Add non-modular test as default Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * Remove duplicate file after merge Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> * 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 <jules.gacon@googlemail.com> Co-authored-by: Julien Gacon <gaconju@gmail.com> * 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 <jules.gacon@googlemail.com> * 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 <jules.gacon@googlemail.com> * 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 <gaconju@gmail.com> * Update qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py Co-authored-by: Julien Gacon <gaconju@gmail.com> * Update qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py Co-authored-by: Julien Gacon <gaconju@gmail.com> * Update qiskit/circuit/library/arithmetic/multipliers/multiplier.py Co-authored-by: Julien Gacon <gaconju@gmail.com> * Update qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py Co-authored-by: Julien Gacon <gaconju@gmail.com> * Add additional test cases Co-authored-by: Julien Gacon <gaconju@gmail.com> * Include circuit diagram for QFT multiplier Co-authored-by: Julien Gacon <gaconju@gmail.com> * Update docstring as suggested Co-authored-by: Julien Gacon <gaconju@gmail.com> * Move num_result_qubits logic to parent class Co-authored-by: Julien Gacon <gaconju@gmail.com> * Switch to NotImplementedError for cumulative multiplier Co-authored-by: Julien Gacon <gaconju@gmail.com> * Add black changes * Update Multiplier class docstring Co-authored-by: Julien Gacon <gaconju@gmail.com> * Add lint changes * Update qiskit/circuit/library/arithmetic/multipliers/multiplier.py Co-authored-by: Julien Gacon <gaconju@gmail.com> * Update qiskit/circuit/library/arithmetic/multipliers/multiplier.py Co-authored-by: Julien Gacon <gaconju@gmail.com> * Add black and pylint fixes Co-authored-by: Julien Gacon <jules.gacon@googlemail.com> Co-authored-by: Julien Gacon <gaconju@gmail.com> Co-authored-by: Manjula <64902594+ManjulaGandhi@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
- Loading branch information