HamiltonianGate
class HamiltonianGate(data, time, label=None)
Class for representing evolution by a Hermitian Hamiltonian operator as a gate. This gate resolves to a UnitaryGate U(t) = exp(-1j * t * H), which can be decomposed into basis gates if it is 2 qubits or less, or simulated directly in Aer for more qubits.
Create a gate from a hamiltonian operator and evolution time parameter t
Parameters
- data (matrix or Operator) – a hermitian operator.
- time (float) – time evolution parameter.
- label (str) – unitary name for backend [Default: None].
Raises
ExtensionError – if input data is not an N-qubit unitary operator.
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
HamiltonianGate.add_decomposition(decomposition)
Add a decomposition of the instruction to the SessionEquivalenceLibrary.
adjoint
HamiltonianGate.adjoint()
Return the adjoint of the unitary.
assemble
broadcast_arguments
HamiltonianGate.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
HamiltonianGate.c_if(classical, val)
Add classical condition on register classical and value val.
conjugate
HamiltonianGate.conjugate()
Return the conjugate of the Hamiltonian.
control
HamiltonianGate.control(num_ctrl_qubits=1, label=None, ctrl_state=None)
Return controlled version of gate. See ControlledGate
for usage.
Parameters
- num_ctrl_qubits (
Optional
[int
]) – number of controls to add to gate (default=1) - label (
Optional
[str
]) – optional gate label - ctrl_state (
Union
[int
,str
,None
]) – The control state in decimal or as a bitstring (e.g. ‘111’). If None, use 2**num_ctrl_qubits-1.
Returns
Controlled version of gate. This default algorithm uses num_ctrl_qubits-1 ancillae qubits so returns a gate of size num_qubits + 2*num_ctrl_qubits - 1.
Return type
Raises
QiskitError – unrecognized mode or invalid ctrl_state
copy
HamiltonianGate.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
HamiltonianGate.inverse()
Return the adjoint of the unitary.
is_parameterized
HamiltonianGate.is_parameterized()
Return True .IFF. instruction is parameterized else False
mirror
HamiltonianGate.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
HamiltonianGate.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
HamiltonianGate.qasm()
Raise an error, as QASM is not defined for the HamiltonianGate.
repeat
HamiltonianGate.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
HamiltonianGate.to_matrix()
Return matrix for the unitary.
transpose
HamiltonianGate.transpose()
Return the transpose of the Hamiltonian.