pub struct QuantumState {
pub num_qubits: usize,
pub amplitudes: ComplexVector,
pub phases: Vec<f64>,
/* private fields */
}Expand description
Quantum state representation
Fields§
§num_qubits: usizeNumber of qubits
amplitudes: ComplexVectorAmplitude vector (2^num_qubits complex numbers)
phases: Vec<f64>Phase factors
Implementations§
Source§impl QuantumState
impl QuantumState
Sourcepub fn uniform_superposition(num_qubits: usize) -> Result<Self>
pub fn uniform_superposition(num_qubits: usize) -> Result<Self>
Create a uniform superposition state |+…+⟩
Sourcepub fn get_probability(&self, state_index: usize) -> f64
pub fn get_probability(&self, state_index: usize) -> f64
Get the probability of measuring a specific state
Sourcepub fn probabilities(&mut self) -> &[f64]
pub fn probabilities(&mut self) -> &[f64]
Get all probabilities
Sourcepub fn apply_single_qubit_gate(
&mut self,
qubit: usize,
gate: &Gate,
) -> Result<()>
pub fn apply_single_qubit_gate( &mut self, qubit: usize, gate: &Gate, ) -> Result<()>
Apply a single-qubit gate
Sourcepub fn apply_two_qubit_gate(
&mut self,
control: usize,
target: usize,
gate: &TwoQubitGate,
) -> Result<()>
pub fn apply_two_qubit_gate( &mut self, control: usize, target: usize, gate: &TwoQubitGate, ) -> Result<()>
Apply a two-qubit gate (like CNOT)
Sourcepub fn measure_qubit(&mut self, qubit: usize) -> Result<u8>
pub fn measure_qubit(&mut self, qubit: usize) -> Result<u8>
Measure a specific qubit
Sourcepub fn entanglement_entropy(
&self,
qubit_a: usize,
qubit_b: usize,
) -> Result<f64>
pub fn entanglement_entropy( &self, qubit_a: usize, qubit_b: usize, ) -> Result<f64>
Calculate the entanglement entropy between two qubits
Sourcepub fn fidelity(&self, other: &QuantumState) -> Result<f64>
pub fn fidelity(&self, other: &QuantumState) -> Result<f64>
Get the fidelity with another quantum state
Sourcepub fn apply_phase(&mut self, qubit: usize, phase: f64) -> Result<()>
pub fn apply_phase(&mut self, qubit: usize, phase: f64) -> Result<()>
Apply a phase to a specific qubit
Sourcepub fn expectation_pauli(
&self,
qubit: usize,
pauli: PauliOperator,
) -> Result<f64>
pub fn expectation_pauli( &self, qubit: usize, pauli: PauliOperator, ) -> Result<f64>
Get the expectation value of a Pauli operator
Trait Implementations§
Source§impl Clone for QuantumState
impl Clone for QuantumState
Source§fn clone(&self) -> QuantumState
fn clone(&self) -> QuantumState
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for QuantumState
impl Debug for QuantumState
Source§impl<'de> Deserialize<'de> for QuantumState
impl<'de> Deserialize<'de> for QuantumState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for QuantumState
impl RefUnwindSafe for QuantumState
impl Send for QuantumState
impl Sync for QuantumState
impl Unpin for QuantumState
impl UnwindSafe for QuantumState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.