pub struct QftFile { /* private fields */ }Expand description
A quantum state file in .qft format
Implementations§
Source§impl QftFile
impl QftFile
Sourcepub fn with_config(num_qubits: usize, config: QftConfig) -> Result<Self>
pub fn with_config(num_qubits: usize, config: QftConfig) -> Result<Self>
Create a QFT file with custom configuration.
Sourcepub fn from_amplitudes(amplitudes: Vec<Complex64>) -> Result<Self>
pub fn from_amplitudes(amplitudes: Vec<Complex64>) -> Result<Self>
Create from a vector of complex amplitudes.
§Example
use qft::QftFile;
use num_complex::Complex64;
let sqrt2_inv = 1.0 / 2.0_f64.sqrt();
let amplitudes = vec![
Complex64::new(sqrt2_inv, 0.0),
Complex64::new(0.0, 0.0),
Complex64::new(0.0, 0.0),
Complex64::new(sqrt2_inv, 0.0),
];
let bell = QftFile::from_amplitudes(amplitudes).unwrap();
assert_eq!(bell.num_qubits(), 2);Sourcepub fn from_real_imag(real: &[f64], imag: &[f64]) -> Result<Self>
pub fn from_real_imag(real: &[f64], imag: &[f64]) -> Result<Self>
Create from separate real and imaginary arrays.
Sourcepub fn num_qubits(&self) -> usize
pub fn num_qubits(&self) -> usize
Get the number of qubits.
Sourcepub fn config_mut(&mut self) -> &mut QftConfig
pub fn config_mut(&mut self) -> &mut QftConfig
Get mutable reference to configuration.
Sourcepub fn amplitudes(&self) -> &[Complex64] ⓘ
pub fn amplitudes(&self) -> &[Complex64] ⓘ
Get all amplitudes as a slice.
Sourcepub fn amplitudes_mut(&mut self) -> &mut [Complex64] ⓘ
pub fn amplitudes_mut(&mut self) -> &mut [Complex64] ⓘ
Get mutable access to amplitudes.
Sourcepub fn get_amplitude(&self, index: usize) -> Result<Complex64>
pub fn get_amplitude(&self, index: usize) -> Result<Complex64>
Get a single amplitude by basis state index.
Sourcepub fn set_amplitude(&mut self, index: usize, value: Complex64) -> Result<()>
pub fn set_amplitude(&mut self, index: usize, value: Complex64) -> Result<()>
Set a single amplitude by basis state index.
Sourcepub fn set_amplitudes(&mut self, amplitudes: &[Complex64]) -> Result<()>
pub fn set_amplitudes(&mut self, amplitudes: &[Complex64]) -> Result<()>
Set all amplitudes from a slice.
Sourcepub fn set_metadata(&mut self, key: impl Into<String>, value: impl Into<String>)
pub fn set_metadata(&mut self, key: impl Into<String>, value: impl Into<String>)
Set a metadata key-value pair.
Sourcepub fn get_metadata(&self, key: &str) -> Option<&str>
pub fn get_metadata(&self, key: &str) -> Option<&str>
Get a metadata value by key.
Sourcepub fn metadata_mut(&mut self) -> &mut HashMap<String, String>
pub fn metadata_mut(&mut self) -> &mut HashMap<String, String>
Get mutable access to metadata.
Sourcepub fn norm_squared(&self) -> f64
pub fn norm_squared(&self) -> f64
Calculate the norm squared (sum of |amplitude|²).
Sourcepub fn is_normalized(&self, tolerance: f64) -> bool
pub fn is_normalized(&self, tolerance: f64) -> bool
Check if the state is normalized within tolerance.
Sourcepub fn inner_product(&self, other: &QftFile) -> Result<Complex64>
pub fn inner_product(&self, other: &QftFile) -> Result<Complex64>
Calculate the inner product ⟨self|other⟩.
Sourcepub fn trace_distance(&self, other: &QftFile) -> Result<f64>
pub fn trace_distance(&self, other: &QftFile) -> Result<f64>
Calculate the trace distance to another state.
Sourcepub fn load(path: impl AsRef<Path>) -> Result<Self>
pub fn load(path: impl AsRef<Path>) -> Result<Self>
Load a QFT file from disk.
§Example
use qft::QftFile;
let state = QftFile::load("state.qft").unwrap();Sourcepub fn save(&self, path: impl AsRef<Path>) -> Result<()>
pub fn save(&self, path: impl AsRef<Path>) -> Result<()>
Save the QFT file to disk.
§Example
use qft::QftFile;
let state = QftFile::new(4).unwrap();
state.save("state.qft").unwrap();Sourcepub fn from_bytes(data: &[u8]) -> Result<Self>
pub fn from_bytes(data: &[u8]) -> Result<Self>
Deserialize from bytes.