Initial import

This commit is contained in:
Vincent Bourdon
2026-06-09 16:14:55 +02:00
commit 9af114e391
87 changed files with 20848 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
use clap::Parser;
use spinoza::{
circuit::{QuantumCircuit, QuantumRegister},
config::{Config, QSArgs},
core::CONFIG,
math::{pow2f, PI},
utils::{pretty_print_int, to_table},
};
fn benchmark_circuit_value_encoding(n: usize, show_results: bool) {
let v = 2.4;
let now = std::time::Instant::now();
let mut q = QuantumRegister::new(n);
let mut qc = QuantumCircuit::new(&mut [&mut q]);
for i in 0..n {
qc.h(i)
}
for i in 0..n {
qc.p(2.0 * PI / pow2f(i + 1) * v, i)
}
let targets: Vec<usize> = (0..n).rev().collect();
qc.iqft(&targets);
qc.execute();
let elapsed = now.elapsed().as_micros();
println!("{}", pretty_print_int(elapsed));
if show_results {
println!("{}", to_table(qc.get_statevector()));
}
}
pub fn main() {
let args = QSArgs::parse();
let config = Config::from_cli(args);
CONFIG.set(config).unwrap();
benchmark_circuit_value_encoding(config.qubits.into(), config.print);
}