diff options
Diffstat (limited to 'libpsi/src/core')
| -rw-r--r-- | libpsi/src/core/gates.rs | 22 | ||||
| -rw-r--r-- | libpsi/src/core/mod.rs | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/libpsi/src/core/gates.rs b/libpsi/src/core/gates.rs index e69de29..227df9a 100644 --- a/libpsi/src/core/gates.rs +++ b/libpsi/src/core/gates.rs @@ -0,0 +1,22 @@ +use crate::{complex, matrix, QuantumGate}; + +#[rustfmt::skip] +lazy_static::lazy_static! { + static ref HADAMARD: QuantumGate = 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); + + static ref PAULI_X: QuantumGate = matrix!([complex!(0.0, 0.0), complex!(1.0, 0.0)]; + [complex!(1.0, 0.0), complex!(0.0, 0.0)]); + + static ref PAULI_Y: QuantumGate = matrix!([complex!(0.0, 0.0), complex!(0.0, -1.0)]; + [complex!(0.0, 1.0), complex!(0.0, 0.0)]); + + static ref PAULI_Z: QuantumGate = matrix!([complex!(1.0, 0.0), complex!( 0.0, 0.0)]; + [complex!(0.0, 0.0), complex!(-1.0, 0.0)]); + + static ref CNOT: QuantumGate = 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)]); +} diff --git a/libpsi/src/core/mod.rs b/libpsi/src/core/mod.rs index 9cea807..86ddfaa 100644 --- a/libpsi/src/core/mod.rs +++ b/libpsi/src/core/mod.rs @@ -1 +1,2 @@ pub mod component; +pub mod gates; |
