A representation of stabilizer states using the CH form,
Inherits From: StabilizerState
, QuantumStateRepresentation
cirq.StabilizerStateChForm(
num_qubits: int, initial_state: int = 0
) -> None
\\(|\psi> = \omega U_C U_H |s>\\)
This representation keeps track of overall phase.
Reference: https://arxiv.org/abs/1808.00128
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
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
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
apply_global_phase(
coefficient: value.Scalar
)
Apply a global phase to the state.
Args |
coefficient
|
The global phase to apply.
|
apply_h
View source
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
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
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
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
copy(
deep_copy_buffers: bool = True
) -> 'cirq.StabilizerStateChForm'
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.
inner_product_of_state_and_x
View source
inner_product_of_state_and_x(
x: int
) -> Union[float, complex]
Returns the amplitude of x'th element of the state vector, i.e.
kron
View source
kron(
other: 'cirq.StabilizerStateChForm'
) -> 'cirq.StabilizerStateChForm'
Joins two state spaces together.
measure
View source
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.
|
project_Z
View source
project_Z(
q, z
)
Applies a Z projector on the q'th qubit.
Returns: a normalized state with Z_q |psi> = z |psi>
reindex
View source
reindex(
axes: Sequence[int]
) -> 'cirq.StabilizerStateChForm'
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.
|
state_vector
View source
state_vector() -> np.ndarray
to_state_vector
View source
to_state_vector() -> np.ndarray
update_sum
View source
update_sum(
t, u, delta=0, alpha=0
)
Implements the transformation (Proposition 4 in Bravyi et al)
i^alpha U_H (|t> + i^delta |u>) = omega W_C W_H |s'>
__eq__
View source
__eq__(
other: _SupportsValueEquality
) -> bool
__ne__
View source
__ne__(
other: _SupportsValueEquality
) -> bool