aboutsummaryrefslogtreecommitdiff
path: root/libpsi-core/src/core/gates.rs
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2024-10-13 15:13:17 +0200
committerhachem <im@hachem.wtf>2024-10-13 15:13:17 +0200
commit7cc3c78a24b51a58d44e1baff20b86292662390e (patch)
treeea7bcb1c6493287abc75f4df55458ed8f4abc1e5 /libpsi-core/src/core/gates.rs
parent00c4b7c44b1364381c65dccbb190d64b3ff4c1e8 (diff)
Mass refactor
Diffstat (limited to 'libpsi-core/src/core/gates.rs')
-rw-r--r--libpsi-core/src/core/gates.rs41
1 files changed, 28 insertions, 13 deletions
diff --git a/libpsi-core/src/core/gates.rs b/libpsi-core/src/core/gates.rs
index 094fec9..97254fc 100644
--- a/libpsi-core/src/core/gates.rs
+++ b/libpsi-core/src/core/gates.rs
@@ -2,21 +2,36 @@ use crate::{complex, matrix, QuantumGate};
#[rustfmt::skip]
lazy_static::lazy_static! {
- pub static ref HADAMARD: QuantumGate = ("H", matrix!([complex!(1.0, 0.0), complex!( 1.0, 0.0)];
- [complex!(1.0, 0.0), complex!(-1.0, 0.0)]) *
- complex!(1.0/2.0_f64.sqrt(), 0.0));
+ pub static ref HADAMARD: QuantumGate = QuantumGate {
+ name: "H",
+ matrix: matrix!([complex!(1.0, 0.0), complex!( 1.0, 0.0)];
+ [complex!(1.0, 0.0), complex!(-1.0, 0.0)]) *
+ complex!(1.0/2.0_f64.sqrt(), 0.0)
+ };
- pub static ref PAULI_X: QuantumGate = ("Pauli-X", matrix!([complex!(0.0, 0.0), complex!(1.0, 0.0)];
- [complex!(1.0, 0.0), complex!(0.0, 0.0)]));
+ pub static ref PAULI_X: QuantumGate = QuantumGate {
+ name: "Pauli-X",
+ matrix: matrix!([complex!(0.0, 0.0), complex!(1.0, 0.0)];
+ [complex!(1.0, 0.0), complex!(0.0, 0.0)])
+ };
- pub static ref PAULI_Y: QuantumGate = ("Pauli-Y", matrix!([complex!(0.0, 0.0), complex!(0.0, -1.0)];
- [complex!(0.0, 1.0), complex!(0.0, 0.0)]));
+ pub static ref PAULI_Y: QuantumGate = QuantumGate {
+ name: "Pauli-Y",
+ matrix: matrix!([complex!(0.0, 0.0), complex!(0.0, -1.0)];
+ [complex!(0.0, 1.0), complex!(0.0, 0.0)])
+ };
- pub static ref PAULI_Z: QuantumGate = ("Pauli-Z", matrix!([complex!(1.0, 0.0), complex!( 0.0, 0.0)];
- [complex!(0.0, 0.0), complex!(-1.0, 0.0)]));
+ pub static ref PAULI_Z: QuantumGate = QuantumGate {
+ name: "Pauli-Z",
+ matrix: matrix!([complex!(1.0, 0.0), complex!( 0.0, 0.0)];
+ [complex!(0.0, 0.0), complex!(-1.0, 0.0)])
+ };
- pub static ref CNOT: QuantumGate = ("CNOT", matrix!([complex!(1.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0)];
- [complex!(0.0, 0.0), complex!(1.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0)];
- [complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(1.0, 0.0)];
- [complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(1.0, 0.0), complex!(0.0, 0.0)]));
+ pub static ref CNOT: QuantumGate = QuantumGate {
+ name: "CNOT",
+ matrix: matrix!([complex!(1.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0)];
+ [complex!(0.0, 0.0), complex!(1.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0)];
+ [complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(1.0, 0.0)];
+ [complex!(0.0, 0.0), complex!(0.0, 0.0), complex!(1.0, 0.0), complex!(0.0, 0.0)])
+ };
}