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)

Reply via email to