one more initializer test case (#222)

This commit is contained in:
Ali Javadi-Abhari 2017-12-28 04:33:09 -05:00 committed by Diego M. Rodríguez
parent 40ba4a0a0d
commit 02496b5155
2 changed files with 30 additions and 2 deletions

View File

@ -74,7 +74,7 @@ class InitializeGate(CompositeGate):
# Check if probabilities (amplitudes squared) sum to 1
if not math.isclose(sum(numpy.absolute(param) ** 2), 1.0,
abs_tol=1e-4):
abs_tol=_EPS):
raise QISKitError("Sum of amplitudes-squared does not equal one.")
super(InitializeGate, self).__init__(name, param, arg, circ)

View File

@ -27,7 +27,6 @@ from qiskit import QuantumProgram
from qiskit.tools.qi.qi import state_fidelity
from .common import QiskitTestCase
class TestInitialize(QiskitTestCase):
"""QISKIT InitializeGate tests."""
@ -191,6 +190,35 @@ class TestInitialize(QiskitTestCase):
fidelity, self._desired_fidelity,
"Initializer has low fidelity {0:.2g}.".format(fidelity))
def test_sympy(self):
desired_vector = [
0,
math.cos(math.pi / 3) * complex(0,1) / math.sqrt(4),
math.sin(math.pi / 3) / math.sqrt(4),
0,
0,
0,
0,
0,
1 / math.sqrt(8) * complex(1, 0),
1 / math.sqrt(8) * complex(0, 1),
0,
0,
0,
0,
1 / math.sqrt(4),
1 / math.sqrt(4) * complex(0, 1)]
qp = QuantumProgram()
qr = qp.create_quantum_register("qr", 4)
cr = qp.create_classical_register("cr", 4)
qc = qp.create_circuit("qc", [qr], [cr])
qc.initialize("QInit", desired_vector, [qr[0], qr[1], qr[2], qr[3]])
result = qp.execute(["qc"], backend='local_qasm_simulator', shots=1)
quantum_state = result.get_data("qc")['quantum_state']
fidelity = state_fidelity(quantum_state, desired_vector)
self.assertGreater(
fidelity, self._desired_fidelity,
"Initializer has low fidelity {0:.2g}.".format(fidelity))
if __name__ == '__main__':
unittest.main()