diff --git a/cnot_README.txt b/cnot_README.txt new file mode 100644 index 0000000..e69de29 diff --git a/two_qubit_simulator/quantum_gates/hadamard.py b/two_qubit_simulator/quantum_gates/hadamard.py index 2dfcffc..cc67ff4 100644 --- a/two_qubit_simulator/quantum_gates/hadamard.py +++ b/two_qubit_simulator/quantum_gates/hadamard.py @@ -3,7 +3,16 @@ """ from .quantum_gate import QuantumGate +import numpy as np class Hadamard(QuantumGate): """ Implements the Hadamard gate """ + def __init__(self): + unitary_operator = 1/np.sqrt(2)*np.array([[1,1][1,-1]]) + super(Hadamard, self).__init__(unitary_operator,'H',2) + + def unitary_operator(self): + return self.unitary_operator + pass + diff --git a/two_qubit_simulator/quantum_gates/quantum_gate.py b/two_qubit_simulator/quantum_gates/quantum_gate.py index c15f811..11a2098 100644 --- a/two_qubit_simulator/quantum_gates/quantum_gate.py +++ b/two_qubit_simulator/quantum_gates/quantum_gate.py @@ -18,15 +18,16 @@ class QuantumGate(object): # pylint: disable=useless-object-inheritance - - - CONTINUE DOUMENTATION FROM HERE - - - """ - def __init__(self, unitary_operator, symbol=None): + def __init__(self, unitary_operator, symbol=None, dim = 2): """ Create a QuantumGate object """ self.symbol = symbol + self.dim = dim self.unitary_operator = unitary_operator.astype(np.complex128) - self.assert_operation_is_unitary() def assert_operation_is_unitary(self): """ Checks that the input unitary operator is unitary """ + assert np.allclose(np.kron(self.unitary_operator.conj,self.unitary_operator),np.identity(self.dim)) pass def __call__(self, register):