stabilizer_ch_form_rust/form/
statevector.rs1use crate::{StabilizerCHForm, error::Result};
2use ndarray::Array1;
3use num_complex::Complex64;
4
5impl StabilizerCHForm {
6 pub fn to_statevector(&self) -> Result<Array1<Complex64>> {
13 let dim = 1 << self.num_qubits(); let mut statevector = ndarray::Array1::from_elem(dim, Complex64::new(0.0, 0.0));
15
16 for i in 0..dim {
17 let bitstring: ndarray::Array1<bool> = (0..self.num_qubits())
18 .map(|j| (i & (1 << j)) != 0)
19 .collect();
20 statevector[i] = self
21 .amplitude_at_computational_basis(&bitstring)?
22 .to_complex()
23 * self.global_phase();
24 }
25
26 Ok(statevector)
27 }
28}