use crate::{StabilizerCHForm, error::Result};
use ndarray::Array1;
use num_complex::Complex64;
impl StabilizerCHForm {
pub fn to_statevector(&self) -> Result<Array1<Complex64>> {
let dim = 1 << self.num_qubits(); let mut statevector = ndarray::Array1::from_elem(dim, Complex64::new(0.0, 0.0));
for i in 0..dim {
let bitstring: ndarray::Array1<bool> = (0..self.num_qubits())
.map(|j| (i & (1 << j)) != 0)
.collect();
statevector[i] = self
.amplitude_at_computational_basis(&bitstring)?
.to_complex()
* self.global_phase();
}
Ok(statevector)
}
}