I'm testing a code for define a superposition state using a percentage of both basis.
All seems to run well, when the linear percentage is real. But it fails when the percentage is complex parameter.
from cmath import sqrt
from typing import List, Tuple
# Standard basis |0>, |1> (Z axis)
zero_qubit = np.matrix([[1.+0.j], [0.+0.j]])
one_qubit = np.matrix([[0.+0.j], [1.+0.j]])
standard_basis: Tuple[np.matrix] = (zero_qubit, one_qubit)
def superposition(
percentage: float = 100.0,
basis: Tuple[np.matrix] = (zero_qubit, one_qubit)):
p=sqrt(percentage/100)
q=sqrt(1-p*p)
q1 = p*basis[0]+q*basis[1]
q2 = p*basis[0]-q*basis[1]
q3 = -p*basis[0]+q*basis[1]
q4 = -p*basis[0]-q*basis[1]
return q1, q2, q3, q4
# This works
q1,q2,q3,q4 = superposition(50,standard_basis)
print(q1)
print(q2)
print(q3)
print(q4)
# This generate weird values
q1,q2,q3,q4 = superposition(50j,standard_basis)
print(q1)
print(q2)
print(q3)
print(q4)