See Stable
See Nightly
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
) -> None
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
) -> None
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
) -> None
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
) -> None
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
) -> None
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
) -> None
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
) -> None
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
) -> None
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
) -> None
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