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 ) -> 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