aboutsummaryrefslogtreecommitdiff
path: root/libpsi-core
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2024-09-24 21:44:48 +0200
committerhachem <im@hachem.wtf>2024-09-24 21:44:48 +0200
commitd65b1c55782f6a9d89cd5bc7c7337397dcf4b85c (patch)
treea27167d79d18e4a9681dbdc75d5704c4d6fa9fd7 /libpsi-core
parentc07ab7911bd50d0060841690a863333a9a3f226d (diff)
Prepare for quantum circuit
Diffstat (limited to 'libpsi-core')
-rw-r--r--libpsi-core/src/core/circuit.rs25
-rw-r--r--libpsi-core/src/core/component.rs2
-rw-r--r--libpsi-core/src/core/mod.rs3
-rw-r--r--libpsi-core/src/lib.rs1
4 files changed, 30 insertions, 1 deletions
diff --git a/libpsi-core/src/core/circuit.rs b/libpsi-core/src/core/circuit.rs
new file mode 100644
index 0000000..65e359a
--- /dev/null
+++ b/libpsi-core/src/core/circuit.rs
@@ -0,0 +1,25 @@
+use super::{ClassicalRegister, QuantumBit, QuantumGate};
+
+#[allow(dead_code)]
+struct QuantumCircuitInstruction {
+ target_indices: Vec<i32>,
+ control_indices: Vec<i32>,
+ gate: QuantumGate,
+}
+
+#[allow(dead_code)]
+pub struct QuantumCircuit {
+ quantum_bits: Vec<QuantumBit>,
+ classical_register: ClassicalRegister,
+ instructions: Vec<QuantumCircuitInstruction>,
+}
+
+impl QuantumCircuit {
+ pub fn new(quantum_bit_count: usize, classical_bit_count: usize) -> QuantumCircuit {
+ QuantumCircuit {
+ quantum_bits: Vec::with_capacity(quantum_bit_count),
+ classical_register: ClassicalRegister::new(classical_bit_count),
+ instructions: Vec::new(),
+ }
+ }
+}
diff --git a/libpsi-core/src/core/component.rs b/libpsi-core/src/core/component.rs
index 41b7cc7..00462e5 100644
--- a/libpsi-core/src/core/component.rs
+++ b/libpsi-core/src/core/component.rs
@@ -1,5 +1,5 @@
use crate::{complex, ColumnVector, Complex, Matrix, Vector, VectorMatrix};
-use core::{fmt, ops};
+use core::ops;
pub type QuantumBit = ColumnVector<Complex<f64>>;
pub type QuantumGate = Matrix<Complex<f64>>;
diff --git a/libpsi-core/src/core/mod.rs b/libpsi-core/src/core/mod.rs
index 374c555..2f42682 100644
--- a/libpsi-core/src/core/mod.rs
+++ b/libpsi-core/src/core/mod.rs
@@ -1,4 +1,7 @@
+pub mod circuit;
pub mod component;
pub mod gates;
+pub use circuit::*;
+pub use component::*;
pub use gates::*;
diff --git a/libpsi-core/src/lib.rs b/libpsi-core/src/lib.rs
index af50663..45c2c3b 100644
--- a/libpsi-core/src/lib.rs
+++ b/libpsi-core/src/lib.rs
@@ -6,5 +6,6 @@ pub use maths::matrix::*;
pub use maths::numeric_traits::*;
pub use maths::vector::*;
+pub use core::circuit::*;
pub use core::component::*;
pub use core::gates;