Reference: QFT Arithmetic Qubricks¶
Contents¶
QFTIncrement Class¶
psiqworkbench.qubricks.qbk_qft_arithmetic.QFTIncrement ¶
Bases: Qubrick
Qubrick for incrementing a qubit register using QFT.
Follows the construction in "Quantum arithmetic with the Quantum Fourier Transform" (arxiv:1411.5949 ⧉).
compute ¶
Compute an adder using QFT.
Note
This Qubrick does arithmetic addition, NOT modular addition.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lhs
|
Qubits
|
Register to be incremented. |
required |
rhs
|
(Qubits, int)
|
Amount to add to |
1
|
ctrl
|
(Qubits, Optional)
|
Qubits the addition is conditioned on. Defaults to None. |
None
|
QFTAdd Class¶
psiqworkbench.qubricks.qbk_qft_arithmetic.QFTAdd ¶
Bases: Qubrick
Quantum adder implemented using QFT.
Follows the construction in "Quantum arithmetic with the Quantum Fourier Transform" (arxiv:1411.5949 ⧉).
compute ¶
Compute an adder using QFT.
Note
This Qubrick does arithmetic addition, NOT modular addition.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
lhs
|
QUInt
|
Register to be added to. |
required |
rhs
|
(QUInt, int)
|
Amount to add to |
required |
ctrl
|
(Qubits, Optional)
|
Qubits the addition is conditioned on. Defaults to None. |
None
|
QFTSubtract Class¶
psiqworkbench.qubricks.qbk_qft_arithmetic.QFTSubtract ¶
Bases: Qubrick
Quantum subtractor implemented using QFT.
compute ¶
Compute a subtractor using QFT using reversed phase adder.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
target_qubits
|
QUInt
|
Register to be added to. |
required |
subtraction_amount
|
(QUInt, int)
|
Amount to subtract from |
required |
cond
|
(Qubits, int)
|
Qubits the subtraction is conditioned on. |
0
|
QFTMultiply Class¶
psiqworkbench.qubricks.qbk_qft_arithmetic.QFTMultiply ¶
Bases: Qubrick
Quantum multiplier implemented using QFT.
Follows the construction in "Quantum arithmetic with the Quantum Fourier Transform" (arxiv:1411.5949 ⧉).
compute ¶
Compute multiplication using QFT.
Notes
- Only works if
a.num_qubits = b.num_qubits = n - Allocates a fresh output register consisting of \(2n\) qubits.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
QUInt
|
First register to be multiplied. |
required |
b
|
QUInt
|
Second register to be multiplied. |
required |
cond
|
(Qubits, int)
|
Qubits the addition is conditioned on. Defaults to 0. |
0
|