2

I am a beginner when it comes to quantum computing so forgive me if this is a dumb question. Does anyone know how to create a gate from any matrix on OpenQasm2? Specifically, can anyone provide any tips on how to convert a matrix to Qubit rotations using the U gate in OpenQasm2? Also, could you form an addition gate using a similarly designed matrix in this answer

Sam
  • 31
  • 1

1 Answers1

2

Here's one example of a way to do it programmatically:

from cirq import Circuit, LineQubit, ops

from qbraid.interface import random_unitary_matrix from qbraid.transpiler.cirq_qasm import to_qasm

n_qubits = 1 matrix = random_unitary_matrix(dim=2**n_qubits)

qubits = [LineQubit(i) for i in range(n_qubits)] circuit = Circuit(ops.MatrixGate(matrix)(*qubits))

qasm_str = to_qasm(circuit)

print(circuit) print(qasm_str)

      ┌                           ┐
0: ───│-0.255-0.574j  0.266-0.731j│───
      │-0.644-0.436j  0.131+0.615j│
      └                           ┘

// Generated from qBraid v0.4.0

OPENQASM 2.0;
include "qelib1.inc";


// Qubits: [q(0)]
qreg q[1];


u3(pi*1.4327602146,pi*0.822476743,pi*0.2440365932) q[0];

Can then track the qbraid.transpiler.cirq_qasm.to_qasm source code back through cirq.QasmOutput and break down the procedure step-by-step.

ryanhill1
  • 2,493
  • 1
  • 9
  • 37