This is an automated email from the ASF dual-hosted git repository.
rawkintrevo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/mahout.git
The following commit(s) were added to refs/heads/main by this push:
new 56e62c5fd MAHOUT 464/5/6/7 - Add rotational gates (#471)
56e62c5fd is described below
commit 56e62c5fd78ebe57a4a90ddb7f746cf7e1e2d5c1
Author: Trevor Grant <[email protected]>
AuthorDate: Tue Oct 15 12:45:49 2024 -0500
MAHOUT 464/5/6/7 - Add rotational gates (#471)
* Add rotational gates
* Add U gate
---
qumat/amazon_braket_backend.py | 16 +++++++++++++++-
qumat/cirq_backend.py | 20 +++++++++++++++++++-
qumat/qiskit_backend.py | 15 ++++++++++++++-
qumat/qumat.py | 14 +++++++++++++-
4 files changed, 61 insertions(+), 4 deletions(-)
diff --git a/qumat/amazon_braket_backend.py b/qumat/amazon_braket_backend.py
index bddeae790..9422dda8b 100644
--- a/qumat/amazon_braket_backend.py
+++ b/qumat/amazon_braket_backend.py
@@ -67,4 +67,18 @@ def draw_circuit(circuit):
# Unfortunately, Amazon Braket does not have direct support for drawing
circuits in the same way
# as Qiskit and Cirq. You would typically visualize Amazon Braket circuits
using external tools.
# For simplicity, we'll print the circuit object which gives some textual
representation.
- print(circuit)
\ No newline at end of file
+ print(circuit)
+
+def apply_rx_gate(circuit, qubit_index, angle):
+ circuit.rx(qubit_index, angle)
+
+def apply_ry_gate(circuit, qubit_index, angle):
+ circuit.ry(qubit_index, angle)
+
+def apply_rz_gate(circuit, qubit_index, angle):
+ circuit.rz(qubit_index, angle)
+
+def apply_u_gate(circuit, qubit_index, theta, phi, lambd):
+ circuit.rx(qubit_index, theta)
+ circuit.ry(qubit_index, phi)
+ circuit.rz(qubit_index, lambd)
diff --git a/qumat/cirq_backend.py b/qumat/cirq_backend.py
index 056b302e6..e27ab0701 100644
--- a/qumat/cirq_backend.py
+++ b/qumat/cirq_backend.py
@@ -72,4 +72,22 @@ def execute_circuit(circuit, backend, backend_config):
return result.histogram(key='result')
def draw_circuit(circuit):
- print(circuit)
\ No newline at end of file
+ print(circuit)
+
+def apply_rx_gate(circuit, qubit_index, angle):
+ qubit = cirq.LineQubit(qubit_index)
+ circuit.append(cirq.rx(angle).on(qubit))
+
+def apply_ry_gate(circuit, qubit_index, angle):
+ qubit = cirq.LineQubit(qubit_index)
+ circuit.append(cirq.ry(angle).on(qubit))
+
+def apply_rz_gate(circuit, qubit_index, angle):
+ qubit = cirq.LineQubit(qubit_index)
+ circuit.append(cirq.rz(angle).on(qubit))
+
+def apply_u_gate(circuit, qubit_index, theta, phi, lambd):
+ qubit = cirq.LineQubit(qubit_index)
+ circuit.append(cirq.rz(lambd).on(qubit))
+ circuit.append(cirq.ry(phi).on(qubit))
+ circuit.append(cirq.rx(theta).on(qubit))
diff --git a/qumat/qiskit_backend.py b/qumat/qiskit_backend.py
index c8324dcf8..ca3b0ae62 100644
--- a/qumat/qiskit_backend.py
+++ b/qumat/qiskit_backend.py
@@ -89,4 +89,17 @@ def get_final_state_vector(circuit, backend, backend_config):
def draw_circuit(circuit):
# Use Qiskit's built-in drawing function
- print(circuit.draw())
\ No newline at end of file
+ print(circuit.draw())
+
+def apply_rx_gate(circuit, qubit_index, angle):
+ circuit.rx(angle, qubit_index)
+
+def apply_ry_gate(circuit, qubit_index, angle):
+ circuit.ry(angle, qubit_index)
+
+def apply_rz_gate(circuit, qubit_index, angle):
+ circuit.rz(angle, qubit_index)
+
+def apply_u_gate(circuit, qubit_index, theta, phi, lambd):
+ # Apply the U gate directly with specified parameters
+ circuit.u(theta, phi, lambd, qubit_index)
diff --git a/qumat/qumat.py b/qumat/qumat.py
index dd5b03eb6..97101a4a4 100644
--- a/qumat/qumat.py
+++ b/qumat/qumat.py
@@ -60,4 +60,16 @@ class QuMat:
return self.backend_module.get_final_state_vector(self.circuit,
self.backend, self.backend_config)
def draw(self):
- return self.backend_module.draw_circuit(self.circuit)
\ No newline at end of file
+ return self.backend_module.draw_circuit(self.circuit)
+
+ def apply_rx_gate(self, qubit_index, angle):
+ self.backend_module.apply_rx_gate(self.circuit, qubit_index, angle)
+
+ def apply_ry_gate(self, qubit_index, angle):
+ self.backend_module.apply_ry_gate(self.circuit, qubit_index, angle)
+
+ def apply_rz_gate(self, qubit_index, angle):
+ self.backend_module.apply_rz_gate(self.circuit, qubit_index, angle)
+
+ def apply_u_gate(self, qubit_index, theta, phi, lambd):
+ self.backend_module.apply_u_gate(self.circuit, qubit_index, theta,
phi, lambd)