Interface for quantum stabilizer state representations.
Inherits From: QuantumStateRepresentation
This interface is used for CliffordTableau and StabilizerChForm quantum
state representations, allowing simulators to act on them abstractly.
Attributes |
can_represent_mixed_states
|
Subclasses that can represent mixed states should override this.
|
supports_factor
|
Subclasses that allow factorization should override this.
|
Methods
apply_cx
View source
@abc.abstractmethod
apply_cx(
control_axis: int,
target_axis: int,
exponent: float = 1,
global_shift: float = 0
)
Apply a CX operation to the state.
Args |
control_axis
|
The control axis of the operation.
|
target_axis
|
The axis to which the operation should be applied.
|
exponent
|
The exponent of the CX operation, must be an integer.
|
global_shift
|
The global phase shift of the raw operation, prior to
exponentiation. Typically the value in gate.global_shift .
|
Raises |
ValueError
|
If the exponent is not an integer.
|
apply_cz
View source
@abc.abstractmethod
apply_cz(
control_axis: int,
target_axis: int,
exponent: float = 1,
global_shift: float = 0
)
Apply a CZ operation to the state.
Args |
control_axis
|
The control axis of the operation.
|
target_axis
|
The axis to which the operation should be applied.
|
exponent
|
The exponent of the CZ operation, must be an integer.
|
global_shift
|
The global phase shift of the raw operation, prior to
exponentiation. Typically the value in gate.global_shift .
|
Raises |
ValueError
|
If the exponent is not an integer.
|
apply_global_phase
View source
@abc.abstractmethod
apply_global_phase(
coefficient: linear_dict.Scalar
)
Apply a global phase to the state.
Args |
coefficient
|
The global phase to apply.
|
apply_h
View source
@abc.abstractmethod
apply_h(
axis: int, exponent: float = 1, global_shift: float = 0
)
Apply an H operation to the state.
Args |
axis
|
The axis to which the operation should be applied.
|
exponent
|
The exponent of the H operation, must be an integer.
|
global_shift
|
The global phase shift of the raw operation, prior to
exponentiation. Typically the value in gate.global_shift .
|
Raises |
ValueError
|
If the exponent is not an integer.
|
apply_x
View source
@abc.abstractmethod
apply_x(
axis: int, exponent: float = 1, global_shift: float = 0
)
Apply an X operation to the state.
Args |
axis
|
The axis to which the operation should be applied.
|
exponent
|
The exponent of the X operation, must be a half-integer.
|
global_shift
|
The global phase shift of the raw operation, prior to
exponentiation. Typically the value in gate.global_shift .
|
Raises |
ValueError
|
If the exponent is not half-integer.
|
apply_y
View source
@abc.abstractmethod
apply_y(
axis: int, exponent: float = 1, global_shift: float = 0
)
Apply an Y operation to the state.
Args |
axis
|
The axis to which the operation should be applied.
|
exponent
|
The exponent of the Y operation, must be a half-integer.
|
global_shift
|
The global phase shift of the raw operation, prior to
exponentiation. Typically the value in gate.global_shift .
|
Raises |
ValueError
|
If the exponent is not half-integer.
|
apply_z
View source
@abc.abstractmethod
apply_z(
axis: int, exponent: float = 1, global_shift: float = 0
)
Apply a Z operation to the state.
Args |
axis
|
The axis to which the operation should be applied.
|
exponent
|
The exponent of the Z operation, must be a half-integer.
|
global_shift
|
The global phase shift of the raw operation, prior to
exponentiation. Typically the value in gate.global_shift .
|
Raises |
ValueError
|
If the exponent is not half-integer.
|
copy
View source
@abc.abstractmethod
copy(
deep_copy_buffers: bool = True
) -> Self
Creates a copy of the object.
Args |
deep_copy_buffers
|
If True, buffers will also be deep-copied.
Otherwise the copy will share a reference to the original object's
buffers.
|
Returns |
A copied instance.
|
factor
View source
factor(
axes: Sequence[int], *, validate=True, atol=1e-07
) -> Tuple[Self, Self]
Splits two state spaces after a measurement or reset.
kron
View source
kron(
other: Self
) -> Self
Joins two state spaces together.
measure
View source
@abc.abstractmethod
measure(
axes: Sequence[int], seed: 'cirq.RANDOM_STATE_OR_SEED_LIKE' = None
) -> List[int]
Measures the state.
Args |
axes
|
The axes to measure.
|
seed
|
The random number seed to use.
|
Returns |
The measurements in order.
|
reindex
View source
reindex(
axes: Sequence[int]
) -> Self
Physically reindexes the state by the new basis.
Args |
axes
|
The desired axis order.
|
Returns |
The state with qubit order transposed and underlying representation
updated.
|
sample
View source
sample(
axes: Sequence[int],
repetitions: int = 1,
seed: 'cirq.RANDOM_STATE_OR_SEED_LIKE' = None
) -> np.ndarray
Samples the state. Subclasses can override with more performant method.
Args |
axes
|
The axes to sample.
|
repetitions
|
The number of samples to make.
|
seed
|
The random number seed to use.
|
Returns |
The samples in order.
|