Ejemplo n.º 1
0
def g_0n(D, Num_max, NFock):
    """
    returns a D-squeezed 0-ancilla
    """

    r = np.log(1 / D)
    psi0 = qt.squeeze(NFock, r) * qt.basis(NFock, 0)
    psi = qt.Qobj()
    for n in np.arange(-Num_max, Num_max + 1):
        psi += np.exp(-2 * np.pi * D**2 * n**2) * qt.displace(
            NFock, n * np.sqrt(2 * np.pi)) * psi0
    return psi.unit()
Ejemplo n.º 2
0
def test_squeeze():
    "Squeezing operator"
    sq = squeeze(4, 0.1 + 0.1j)
    sqmatrix = np.array([[0.99500417 + 0.j, 0.00000000 + 0.j,
                          0.07059289 - 0.07059289j, 0.00000000 + 0.j],
                         [0.00000000 + 0.j, 0.98503746 + 0.j,
                          0.00000000 + 0.j, 0.12186303 - 0.12186303j],
                         [-0.07059289 - 0.07059289j, 0.00000000 + 0.j,
                          0.99500417 + 0.j, 0.00000000 + 0.j],
                         [0.00000000 + 0.j, -0.12186303 - 0.12186303j,
                          0.00000000 + 0.j, 0.98503746 + 0.j]])

    assert_equal(np.allclose(sq.full(), sqmatrix), True)
Ejemplo n.º 3
0
def test_squeeze():
    "Squeezing operator"
    sq = squeeze(4, 0.1 + 0.1j)
    sqmatrix = np.array([[0.99500417 + 0.j, 0.00000000 + 0.j,
                          0.07059289 - 0.07059289j, 0.00000000 + 0.j],
                         [0.00000000 + 0.j, 0.98503746 + 0.j,
                          0.00000000 + 0.j, 0.12186303 - 0.12186303j],
                         [-0.07059289 - 0.07059289j, 0.00000000 + 0.j,
                          0.99500417 + 0.j, 0.00000000 + 0.j],
                         [0.00000000 + 0.j, -0.12186303 - 0.12186303j,
                          0.00000000 + 0.j, 0.98503746 + 0.j]])

    assert_equal(np.allclose(sq.full(), sqmatrix), True)
Ejemplo n.º 4
0
 def __init__(self, N, r, alpha, fockdim):
     zero = qt.Qobj()
     one = qt.Qobj()
     for m in range(2 * N):
         phi = m * np.pi / N
         D = qt.displace(fockdim, alpha * np.exp(1j * phi))
         S = qt.squeeze(fockdim, r * np.exp(2j * (phi - np.pi / 2)))
         blade = D * S * qt.basis(fockdim, 0)
         zero += blade
         one += (-1)**m * blade
     zero = zero / zero.norm()
     one = one / one.norm()
     self._alpha = alpha
     self._r = r
     RotationalCode.__init__(self, zero=zero, one=one, N=N)
     self._name = 'cat'
Ejemplo n.º 5
0
def test_squeeze():
    sq = qutip.squeeze(4, 0.1 + 0.1j)
    sqmatrix = np.array([[
        0.99500417 + 0.j, 0.00000000 + 0.j, 0.07059289 - 0.07059289j,
        0.00000000 + 0.j
    ],
                         [
                             0.00000000 + 0.j, 0.98503746 + 0.j,
                             0.00000000 + 0.j, 0.12186303 - 0.12186303j
                         ],
                         [
                             -0.07059289 - 0.07059289j, 0.00000000 + 0.j,
                             0.99500417 + 0.j, 0.00000000 + 0.j
                         ],
                         [
                             0.00000000 + 0.j, -0.12186303 - 0.12186303j,
                             0.00000000 + 0.j, 0.98503746 + 0.j
                         ]])
    np.testing.assert_allclose(sq.full(), sqmatrix, atol=1e-8)
Ejemplo n.º 6
0
def test_squeeze_type():
    "Operator CSR Type: squeeze"
    op = squeeze(5, 0.1j)
    assert_equal(isspmatrix_csr(op.data), True)
Ejemplo n.º 7
0
env_kwargs = {
    'control_circuit' : 'ECD_control',
    'init' : 'vac',
    'T' : 8, 
    'N' : 50}

# Params for reward function

if 1: # Fock
    target_state = qt.tensor(qt.basis(2,0), qt.basis(50,4))

if 0: # squeezed
    N = 70
    db_val = 8
    z = db_val / (20 * np.log10(np.e))
    target_state = qt.tensor(qt.basis(2,0), qt.squeeze(N,z)*qt.basis(N,0))

if 0: # binomial
    N = 60
    pz = (qt.basis(N,0) + qt.basis(N,4))/np.sqrt(2.0)
    mz = qt.basis(N,2)
    py = (pz + 1j*mz)/np.sqrt(2.0)
    target_state = qt.tensor(qt.basis(2,0), py)

if 0: # GKP
    target_state_cav = qt.qload('E:\data\gkp_sims\PPO\ECD\GKP_state_delta_0p25')
    target_state = qt.tensor(qt.basis(2,0), target_state_cav)
    N = target_state_cav.dims[0][0] # 200


# reward_kwargs = {'reward_mode' : 'tomography',
Ejemplo n.º 8
0
def test_squeeze_type():
    "Operator CSR Type: squeeze"
    op = squeeze(5, 0.1j)
    assert_equal(isspmatrix_csr(op.data), True)
Ejemplo n.º 9
0
"""
Created on Tue Feb 19 14:42:03 2019

@author: z5239621
"""

import qutip as qt
import numpy as np
import operations as ops


# Define some initail parameters
N = 10
eps = 1 + 1j


#D = qt.displace(N, 1)
S = qt.squeeze(N, eps)
vacuum = qt.basis(N)


state = S*vacuum

print("State", state)
print("<S>", ops.mean_homodyne(state, np.pi/2))


print("<S^2>", ops.var_homodyne(state, 0))
print("<S^2>", ops.var_homodyne(state, np.pi/2))

print(np.exp(-2*np.abs(eps))*N)
Ejemplo n.º 10
0
def test_squeezing():
    squeeze = qutip.squeeze(4, 0.1 + 0.1j)
    a = qutip.destroy(4)
    squeezing = qutip.squeezing(a, a, 0.1 + 0.1j)
    assert squeeze == squeezing
Created on Mon Apr  1 14:48:35 2019

@author: Eduardo Villasenor
"""

import qutip as qt
import matplotlib.pyplot as plt
import numpy as np

r = 3
print("Mean photon number:", np.sinh(r)**2)

# N = 10
N = 10
a = qt.basis(N, 0)
Sa = qt.squeeze(N, r)

# N = 20
N = 20
b = qt.basis(N, 0)
Sb = qt.squeeze(N, r)

# N = 30
N = 50
c = qt.basis(N, 0)
Sc = qt.squeeze(N, r)

fig, axes = plt.subplots(1, 3, figsize=(12, 3))
qt.plot_fock_distribution(Sa * a,
                          fig=fig,
                          ax=axes[0],