Represents operator defined by linear combination of PauliStrings.
cirq.PauliSum(
linear_dict: Optional[value.LinearDict[UnitPauliStringT]] = None
)
Since PauliStrings store their own coefficients, this class
does not implement the LinearDict interface. Instead, you can
add and subtract terms and then iterate over the resulting
(simplified) expression.
Under the hood, this class is backed by a LinearDict with coefficient-less
PauliStrings as keys. PauliStrings are reconstructed on-the-fly during
iteration.
Methods
copy
View source
copy() -> 'PauliSum'
expectation_from_density_matrix
View source
expectation_from_density_matrix(
state: np.ndarray,
qubit_map: Mapping[cirq.Qid
, int],
*,
atol: float = 1e-07,
check_preconditions: bool = True
) -> float
Evaluate the expectation of this PauliSum given a density matrix.
See PauliString.expectation_from_density_matrix
.
Args |
state
|
An array representing a valid density matrix.
|
qubit_map
|
A map from all qubits used in this PauliSum to the
indices of the qubits that state is defined over.
|
atol
|
Absolute numerical tolerance.
|
check_preconditions
|
Whether to check that state represents a
valid density matrix.
|
Returns |
The expectation value of the input state.
|
Raises |
NotImplementedError
|
If any of the coefficients are imaginary,
so that this is not Hermitian.
|
TypeError
|
If the input state is not a complex type.
|
ValueError
|
If the input vector is not the correct size or shape.
|
expectation_from_state_vector
View source
expectation_from_state_vector(
state_vector: np.ndarray,
qubit_map: Mapping[cirq.Qid
, int],
*,
atol: float = 1e-07,
check_preconditions: bool = True
) -> float
Evaluate the expectation of this PauliSum given a state vector.
See PauliString.expectation_from_state_vector
.
Args |
state_vector
|
An array representing a valid state vector.
|
qubit_map
|
A map from all qubits used in this PauliSum to the
indices of the qubits that state_vector is defined over.
|
atol
|
Absolute numerical tolerance.
|
check_preconditions
|
Whether to check that state_vector represents
a valid state vector.
|
Returns |
The expectation value of the input state.
|
Raises |
NotImplementedError
|
If any of the coefficients are imaginary,
so that this is not Hermitian.
|
TypeError
|
If the input state is not a complex type.
|
ValueError
|
If the input vector is not the correct size or shape.
|
from_boolean_expression
View source
@classmethod
from_boolean_expression(
boolean_expr: Expr, qubit_map: Dict[str, 'cirq.Qid']
) -> 'PauliSum'
Builds the Hamiltonian representation of a Boolean expression.
This is based on "On the representation of Boolean and real functions as Hamiltonians for
quantum computing" by Stuart Hadfield, https://arxiv.org/abs/1804.09130
Args |
boolean_expr
|
A Sympy expression containing symbols and Boolean operations
|
qubit_map
|
map of string (boolean variable name) to qubit.
|
Return |
The PauliString that represents the Boolean expression.
|
Raises |
ValueError
|
If boolean_expr is of an unsupported type.
|
from_pauli_strings
View source
@classmethod
from_pauli_strings(
terms: Union[PauliString, List[PauliString]]
) -> 'PauliSum'
matrix
View source
matrix(
qubits: Optional[Iterable[raw_types.Qid]] = None
) -> np.ndarray
Reconstructs matrix of self from underlying Pauli operations in
computational basis of qubits.
Raises |
TypeError
|
if any of the gates in self does not provide a unitary.
|
with_qubits
View source
with_qubits(
*new_qubits
) -> 'PauliSum'
wrap
View source
@staticmethod
wrap(
val: cirq.PauliSumLike
) -> 'PauliSum'
__add__
View source
__add__(
other
)
__bool__
View source
__bool__() -> bool
__eq__
View source
__eq__(
other: _SupportsValueEquality
) -> bool
__iter__
View source
__iter__()
__len__
View source
__len__() -> int
__mul__
View source
__mul__(
other: cirq.PauliSumLike
)
__neg__
View source
__neg__()
__pow__
View source
__pow__(
exponent: int
)
__radd__
View source
__radd__(
other
)
__rmul__
View source
__rmul__(
other: cirq.PauliSumLike
)
__rsub__
View source
__rsub__(
other
)
__sub__
View source
__sub__(
other
)
__truediv__
View source
__truediv__(
a: value.Scalar
)