blob: 180df98f2f4ac9e78c8b7fa558a9e5913f641388 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
use libpsi_core::*;
fn count_qubit_states(measurements: &[Vec<i32>], num_qubits: usize) -> Vec<i32> {
let mut counts = vec![0; num_qubits * 2];
for measurement in measurements {
for (i, &state) in measurement.iter().enumerate() {
if state == 0 {
counts[i] += 1;
} else {
counts[num_qubits + i] += 1;
}
}
}
counts
}
fn main() {
let mut circuit = QuantumCircuit::new(1, 1);
circuit.apply(&gates::HADAMARD, &[], &[0]);
let runtime = BasicRT::new(circuit);
let execution_count = 1024;
let executions = runtime.execute(execution_count);
let mut measurements = Vec::new();
for execution in executions {
let bits = execution.classical_states.get_bits();
measurements.push(bits.clone());
}
let counts = count_qubit_states(&measurements, 1);
println!(
"{:.2} * |0> + {:.2} * |1>",
(counts[0] as f32) / execution_count as f32,
(counts[1] as f32) / execution_count as f32
);
}
|