-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathinitialize-state.py
32 lines (27 loc) · 909 Bytes
/
initialize-state.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import qsim
import numpy as np
try:
nqbits = 6
# initialise with the default state of all qbits = |0>
q = qsim.QSimulator(nqbits,qtrace=True)
q.qgate(qsim.H(),[1])
q.qgate(qsim.C(),[1,0])
# initialise with initial states of qbits
q = qsim.QSimulator(nqbits,prepqubits=[[1,0],[1,0],[1,0],[0,1],[1,0],[0,1]],qtrace=True)
q.qgate(qsim.H(),[1])
q.qgate(qsim.C(),[1,0])
# or build the full state yourself (good if you need a very custom state, e.g., for testing QFT)
initstate = [None]*(2**nqbits)
p = 0
stsz = 2**nqbits
for i in range(stsz):
c = np.cos(i*2*np.pi/stsz)
s = np.sin(i*2*np.pi/stsz)
initstate[i] = complex(c,s)
p += np.absolute(initstate[i])**2
initstate = np.transpose(np.matrix(initstate,dtype=complex))/np.sqrt(p)
q = qsim.QSimulator(nqbits,initstate=initstate, qtrace=True)
q.qgate(qsim.H(),[1])
q.qgate(qsim.C(),[1,0])
except qsim.QSimError as ex:
print(ex.args)