U1Gate
class U1Gate(theta, label=None)
Single-qubit rotation about the Z axis.
This is a diagonal gate. It can be implemented virtually in hardware via framechanges (i.e. at zero error and duration).
Circuit symbol:
┌───────┐
q_0: ┤ U1(λ) ├
└───────┘
Matrix Representation:
Examples:
RZGate
: This gate is equivalent to RZ up to a phase factor.
U3Gate
: U3 is a generalization of U2 that covers all single-qubit rotations, using two X90 pulses.
Reference for virtual Z gate implementation: 1612.00858
Create new U1 gate.
Attributes
decompositions
Get the decompositions of the instruction from the SessionEquivalenceLibrary.
definition
Return definition in terms of other basic gates.
label
Type: str
Return gate label
Return type
str
params
return instruction params.
Methods
add_decomposition
U1Gate.add_decomposition(decomposition)
Add a decomposition of the instruction to the SessionEquivalenceLibrary.
assemble
broadcast_arguments
U1Gate.broadcast_arguments(qargs, cargs)
Validation and handling of the arguments and its relationship.
For example, cx([q[0],q[1]], q[2])
means cx(q[0], q[2]); cx(q[1], q[2])
. This method yields the arguments in the right grouping. In the given example:
in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []
The general broadcasting rules are:
If len(qargs) == 1:
[q[0], q[1]] -> [q[0]],[q[1]]
If len(qargs) == 2:
[[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]] [[q[0]], [r[0], r[1]]] -> [q[0], r[0]], [q[0], r[1]] [[q[0], q[1]], [r[0]]] -> [q[0], r[0]], [q[1], r[0]]
If len(qargs) >= 3:
[q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
Parameters
- qargs (
List
) – List of quantum bit arguments. - cargs (
List
) – List of classical bit arguments.
Return type
Tuple
[List
, List
]
Returns
A tuple with single arguments.
Raises
CircuitError – If the input is not valid. For example, the number of arguments does not match the gate expectation.
c_if
U1Gate.c_if(classical, val)
Add classical condition on register classical and value val.
control
U1Gate.control(num_ctrl_qubits=1, label=None, ctrl_state=None)
Return a (mutli-)controlled-U1 gate.
Parameters
- num_ctrl_qubits (int) – number of control qubits.
- label (str or None) – An optional label for the gate [Default: None]
- ctrl_state (int or str or None) – control state expressed as integer, string (e.g. ‘110’), or None. If None, use all 1s.
Returns
controlled version of this gate.
Return type
copy
U1Gate.copy(name=None)
Copy of the instruction.
Parameters
name (str) – name to be given to the copied circuit, if None then the name stays the same.
Returns
a copy of the current instruction, with the name
updated if it was provided
Return type
inverse
U1Gate.inverse()
Return inverted U1 gate ()
is_parameterized
U1Gate.is_parameterized()
Return True .IFF. instruction is parameterized else False
mirror
U1Gate.mirror()
For a composite instruction, reverse the order of sub-gates.
This is done by recursively mirroring all sub-instructions. It does not invert any gate.
Returns
a fresh gate with sub-gates reversed
Return type
power
U1Gate.power(exponent)
Creates a unitary gate as gate^exponent.
Parameters
exponent (float) – Gate^exponent
Returns
To which to_matrix is self.to_matrix^exponent.
Return type
Raises
CircuitError – If Gate is not unitary
qasm
U1Gate.qasm()
Return a default OpenQASM string for the instruction.
Derived instructions may override this to print in a different format (e.g. measure q[0] -> c[0];).
repeat
U1Gate.repeat(n)
Creates an instruction with gate repeated n amount of times.
Parameters
n (int) – Number of times to repeat the instruction
Returns
Containing the definition.
Return type
Raises
CircuitError – If n < 1.
to_matrix
U1Gate.to_matrix()
Return a numpy.array for the U1 gate.