aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.toml2
-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
-rw-r--r--libpsi-tester/Cargo.toml2
-rw-r--r--libpsi-tester/src/main.rs20
7 files changed, 34 insertions, 21 deletions
diff --git a/Cargo.toml b/Cargo.toml
index d82fbd0..05cf0fd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[workspace]
resolver = "2"
members = [
- "libpsi",
+ "libpsi-core",
"libpsi-tester"
] \ No newline at end of file
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;
diff --git a/libpsi-tester/Cargo.toml b/libpsi-tester/Cargo.toml
index 6e6ae37..bfa4611 100644
--- a/libpsi-tester/Cargo.toml
+++ b/libpsi-tester/Cargo.toml
@@ -4,4 +4,4 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-libpsi = { path = "../libpsi" } \ No newline at end of file
+libpsi-core = { path = "../libpsi-core" } \ No newline at end of file
diff --git a/libpsi-tester/src/main.rs b/libpsi-tester/src/main.rs
index 08229f2..3fd8de2 100644
--- a/libpsi-tester/src/main.rs
+++ b/libpsi-tester/src/main.rs
@@ -1,21 +1,5 @@
-use libpsi::*;
+use libpsi_core::*;
fn main() {
- let mut quantum_register = quantum_register![QuantumBit::state_0()];
- let mut classical_register = ClassicalRegister::new(1);
-
- quantum_register.measure(&mut classical_register);
- println!("|{}>", classical_register[0]);
-
- quantum_register.apply(&gates::HADAMARD, 0);
- quantum_register.measure(&mut classical_register);
- println!("|{}>", classical_register[0]);
-
- quantum_register.apply(&gates::HADAMARD, 0);
- quantum_register.measure(&mut classical_register);
- println!("|{}>", classical_register[0]);
-
- quantum_register.apply(&gates::HADAMARD, 0);
- quantum_register.measure(&mut classical_register);
- println!("|{}>", classical_register[0]);
+ let _circuit = QuantumCircuit::new(2, 2);
}