diff options
| author | hachem <im@hachem.wtf> | 2025-12-06 20:59:32 +0100 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-12-06 20:59:32 +0100 |
| commit | 1fef726728a14cc923c7cbaf80d337b4eb35db3c (patch) | |
| tree | be65614b80e566196beb2ed74d679ac2d51d78c5 /libpsi-core/src/core/circuit.rs | |
| parent | c7f082381606700ed49c1d57f85aa4d38a9380e7 (diff) | |
[fix]: rounding errors and fancy printing
Diffstat (limited to 'libpsi-core/src/core/circuit.rs')
| -rw-r--r-- | libpsi-core/src/core/circuit.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/libpsi-core/src/core/circuit.rs b/libpsi-core/src/core/circuit.rs index 293d509..eb64aaf 100644 --- a/libpsi-core/src/core/circuit.rs +++ b/libpsi-core/src/core/circuit.rs @@ -1,5 +1,5 @@ use super::{QuantumGate, QuantumRegister, QuantumState}; -use crate::Vector; +use crate::{format_amplitude, format_probability, Vector}; use core::fmt; #[derive(Clone)] @@ -211,9 +211,23 @@ impl<'a> fmt::Display for QuantumCircuit<'a> { let amp = state.get(i); if amp.real.abs() > 1e-10 || amp.imaginary.abs() > 1e-10 { let basis: String = format!("{:0width$b}", i, width = self.num_qubits()); - writeln!(f, " |{}⟩: {:.4}", basis, amp)?; + writeln!(f, " |{}⟩: {}", basis, format_amplitude(&))?; } } Ok(()) } } + +impl<'a> QuantumCircuit<'a> { + pub fn print_probabilities(&self) { + let probs = self.probabilities(); + let n = self.num_qubits(); + println!("Probabilities:"); + for (i, p) in probs.iter().enumerate() { + if *p > 1e-10 { + let basis: String = format!("{:0width$b}", i, width = n); + println!(" |{}⟩: {}", basis, format_probability(*p)); + } + } + } +} |
