math¶
A tiny math library which will be extended thoughout the next weeks. Right now, it only contains the math functions necessary to run Beauregard’s implementation of Shor’s algorithm.
projectq.libs.math.all_defined_decomposition_rules |
list() -> new empty list list(iterable) -> new list initialized from iterable’s items |
projectq.libs.math.AddConstant (a) |
Add a constant to a quantum number represented by a quantum register, stored from low- to high-bit. |
projectq.libs.math.SubConstant (a) |
Subtract a constant from a quantum number represented by a quantum register, stored from low- to high-bit. |
projectq.libs.math.AddConstantModN (a, N) |
Add a constant to a quantum number represented by a quantum register modulo N. |
projectq.libs.math.SubConstantModN (a, N) |
Subtract a constant from a quantum number represented by a quantum register modulo N. |
projectq.libs.math.MultiplyByConstantModN (a, N) |
Multiply a quantum number represented by a quantum register by a constant modulo N. |
Module contents¶
-
class
projectq.libs.math.
AddConstant
(a)[source]¶ Add a constant to a quantum number represented by a quantum register, stored from low- to high-bit.
Example
qunum = eng.allocate_qureg(5) # 5-qubit number X | qunum[1] # qunum is now equal to 2 AddConstant(3) | qunum # qunum is now equal to 5
-
class
projectq.libs.math.
AddConstantModN
(a, N)[source]¶ Add a constant to a quantum number represented by a quantum register modulo N.
The number is stored from low- to high-bit, i.e., qunum[0] is the LSB.
Example
qunum = eng.allocate_qureg(5) # 5-qubit number X | qunum[1] # qunum is now equal to 2 AddConstantModN(3, 4) | qunum # qunum is now equal to 1
-
__init__
(a, N)[source]¶ Initializes the gate to the number to add modulo N.
Parameters: - a (int) – Number to add to a quantum register (0 <= a < N).
- N (int) – Number modulo which the addition is carried out.
It also initializes its base class, BasicMathGate, with the corresponding function, so it can be emulated efficiently.
-
-
class
projectq.libs.math.
MultiplyByConstantModN
(a, N)[source]¶ Multiply a quantum number represented by a quantum register by a constant modulo N.
The number is stored from low- to high-bit, i.e., qunum[0] is the LSB.
Example
qunum = eng.allocate_qureg(5) # 5-qubit number X | qunum[2] # qunum is now equal to 4 MultiplyByConstantModN(3,5) | qunum # qunum is now 2.
-
__init__
(a, N)[source]¶ Initializes the gate to the number to multiply with modulo N.
Parameters: - a (int) – Number by which to multiply a quantum register (0 <= a < N).
- N (int) – Number modulo which the multiplication is carried out.
It also initializes its base class, BasicMathGate, with the corresponding function, so it can be emulated efficiently.
-
-
projectq.libs.math.
SubConstant
(a)[source]¶ Subtract a constant from a quantum number represented by a quantum register, stored from low- to high-bit.
Parameters: a (int) – Constant to subtract Example
qunum = eng.allocate_qureg(5) # 5-qubit number X | qunum[2] # qunum is now equal to 4 SubConstant(3) | qunum # qunum is now equal to 1
-
projectq.libs.math.
SubConstantModN
(a, N)[source]¶ Subtract a constant from a quantum number represented by a quantum register modulo N.
The number is stored from low- to high-bit, i.e., qunum[0] is the LSB.
Parameters: - a (int) – Constant to add
- N (int) – Constant modulo which the addition of a should be carried out.
Example
qunum = eng.allocate_qureg(3) # 3-qubit number X | qunum[1] # qunum is now equal to 2 SubConstantModN(4,5) | qunum # qunum is now -2 = 6 = 1 (mod 5)