renom_q.quantumcircuit

class renom_q.quantumcircuit. QuantumCircuit ( *args , set_qasm=False , set_print_matrix=False , circuit_number=0 )

Bases: object

Definite a quantum circuit.

Args:
* args (renom_q.QuantumRegister and renom_q.ClassicalRegister):
Quantum registers and classical registers that a quantum circuit consists of. In both registers, defining multiple registers is possible, but at least one register needed.
circuit_number (int):
The number used when conflating multiple quantum circuits. There is no need for the user to input.
Example 1:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
Example 2:
>>> import renom_q
>>> qa = renom_q.QuantumRegister(1, 'qa')
>>> qb = renom_q.QuantumRegister(1, 'qb')
>>> ca = renom_q.ClassicalRegister(1, 'ca')
>>> cb = renom_q.ClassicalRegister(1, 'cb')
>>> qc = renom_q.QuantumCircuit(qa, ca, qb, cb)
Example 3:
>>> import renom_q
>>> qa = renom_q.QuantumRegister(1, 'qa')
>>> qb = renom_q.QuantumRegister(1, 'qb')
>>> ca = renom_q.ClassicalRegister(1, 'ca')
>>> cb = renom_q.ClassicalRegister(1, 'cb')
>>> qca = renom_q.QuantumCircuit(qa, ca)
>>> qcb = renom_q.QuantumCircuit(qb, cb)
>>> qc = qca + qcb
qasm ( )

Print the qasm code of quantum circuit.

Returns:
qasm_string (str):
A string of qasm code of quantum circuit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c, set_qasm=True)
>>> qc.x(q[0])
>>> qc.measure()
>>> print(qc.qasm())
OPENQASM 2.0;
include "qelib1.inc";
qreg q[1];
creg c[1];
x q[0];
measure q[0] -> c[0];
measure_exec ( statevector )
barrier ( *args )

Add a barrier block in circuit diagram.

args:
* args (renom_q.QuantumRegister, tuple or None):
If arg type is a tuple (ex: q[0]), a quantum register No.0 is added a barrier block. If arg type is a renom_q.QuantumRegister, all quantum registers in renom_q.QuantumRegister are added a barrier block. If arg type is None, all of multiple quantum registers are added a barrier block.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.barrier()
ccx ( q_ctl1 , q_ctl2 , q_tgt )

Apply ccx gate to quantum register.

Args:
q_ctl1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s one of the control qubit.
q_ctl2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s one of the control qubit.
q_tgt (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(3)
>>> c = renom_q.ClassicalRegister(3)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.ccx(q[0], q[1], q[2])
ch ( q_num1 , q_num2 )

Apply ch gate to quantum register.

Args:
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.ch(q[0], q[1])
convert_q_number ( q_num )
crz ( lam , q_num1 , q_num2 )

Apply crz gate to quantum register.

Args:
lam (float):
Rotation angle of quantum statevector.
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.crz(math.pi, q[0], q[1])
cs ( q_num1 , q_num2 )

Apply cs gate to quantum register.

Args:
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.cs(q[0], q[1])
cswap ( q_ctl , q_num1 , q_num2 )

Apply cswap gate to quantum register.

Args:
q_ctl (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the exchanging qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the exchanging qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(3)
>>> c = renom_q.ClassicalRegister(3)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.cswap(q[0], q[1], q[2])
cu1 ( lam , q_num1 , q_num2 )

Apply cu1 gate to quantum register.

Args:
lam (float):
The paramater of unitary gate cU1.
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.cu1(math.pi, q[0], q[1])
cu3 ( theta , phi , lam , q_num1 , q_num2 )

Apply cu3 gate to quantum register.

Args:
theta (float):
The paramater of unitary gate cU3.
phi (float):
The paramater of unitary gate cU3.
lam (float):
The paramater of unitary gate cU3.
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.cu3(math.pi, 0, math.pi, q[0], q[1])
cx ( q_num1 , q_num2 )

Apply cx gate to quantum register.

Args:
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.cx(q[0], q[1])
cy ( q_num1 , q_num2 )

Apply cy gate to quantum register.

Args:
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.cy(q[0], q[1])
cz ( q_num1 , q_num2 )

Apply cz gate to quantum register.

Args:
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the control qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the target qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.cz(q[0], q[1])
gate_base1 ( gate_matrix , num , gatemark )
gate_base2 ( gate_matrix , ctl , tgt , gatemark )
h ( q_num )

Apply h gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.h(q[0])
id ( q_num )

Apply id gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.id(q[0])
measure ( *args )

Measure the quantum state of the qubits.

args:
* args (renom_q.QuantumRegister and renom_q.ClassicalRegister, tuple and tuple or None):
If arg type is tuple and tuple (ex: q[0], c[0]), measured a quantum register No.0 into a classical register No.0. If arg type is a renom_q.QuantumRegister and a renom_q.ClassicalRegister, measured all quantum registers in renom_q.QuantumRegister into all classical registers in renom_q.ClassicalRegister. If arg is None, measured all of multiple quantum registers into all classical registers in renom_q.ClassicalRegister. Only when definited single classical register, coding like example1 is possible.
Example 1:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.h(q[0])
>>> qc.measure()
Example 2:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.h(q[0])
>>> qc.measure(q, c)
Example 3:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.h(q[0])
>>> for i in range(2):
...     qc.measure(q[i], c[i])
reset ( )

Apply reset gate to quantum register.

Thie gate is available only when resetting all quantum register.

Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.reset()
rx ( theta , q_num )

Apply rx gate to quantum register.

Args:
theta (float):
Rotation angle of quantum statevector.
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.rx(math.pi, q[0])
ry ( theta , q_num )

Apply ry gate to quantum register.

Args:
theta (float):
Rotation angle of quantum statevector.
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.ry(math.pi, q[0])
rz ( theta , q_num )

Apply rz gate to quantum register.

Args:
theta (float):
Rotation angle of quantum statevector.
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.rz(math.pi, q[0])
s ( q_num )

Apply s gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.s(q[0])
sdg ( q_num )

Apply sdg gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.sdg(q[0])
swap ( q_num1 , q_num2 )

Apply swap gate to quantum register.

Args:
q_num1 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the exchanging qubit.
q_num2 (tuple):
A tuple of a quantum register and its index (ex:q[0]). It’s the exchanging qubit.
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(2)
>>> c = renom_q.ClassicalRegister(2)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.swap(q[0], q[1])
t ( q_num )

Apply t gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.t(q[0])
tdg ( q_num )

Apply tdg gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.tsg(q[0])
u1 ( lam , q_num )

Apply u1 gate to quantum register.

Args:
lam (float):
The paramater of unitary gate U1.
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.u1(math.pi, q[0])
u2 ( phi , lam , q_num )

Apply u2 gate to quantum register.

Args:
phi (float):
The paramater of unitary gate U2.
lam (float):
The paramater of unitary gate U2.
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.u2(0, math.pi, q[0])
u3 ( theta , phi , lam , q_num )

Apply u3 gate to quantum register.

Args:
theta (float):
The paramater of unitary gate U3.
phi (float):
The paramater of unitary gate U3.
lam (float):
The paramater of unitary gate U3.
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.u3(math.pi, 0, math.pi, q[0])
x ( q_num )

Apply x gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.x(q[0])
y ( q_num )

Apply y gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.y(q[0])
z ( q_num )

Apply z gate to quantum register.

Args:
q_num (tuple):
A tuple of a quantum register and its index (ex:q[0]).
Example:
>>> import renom_q
>>> q = renom_q.QuantumRegister(1)
>>> c = renom_q.ClassicalRegister(1)
>>> qc = renom_q.QuantumCircuit(q, c)
>>> qc.z(q[0])
convert_c_number ( c_num )