Example #1
0
def test(nphotons, nmodes, accelerate, explicit, mode='quantum'):
    '''test the simulator'''
    # build a basis, device and simulator
    basis=lo.basis(nphotons, nmodes)
    device=lo.random_unitary(basis.nmodes)
    simulator=lo.simulator(basis, device)
    simulator.configure_perm(accelerate, explicit)
    mode='quantum' if not mode else 'classical'
    simulator.set_mode(mode)

    # put photons in the top modes
    state=basis.get_state(['m'] + range(basis.nphotons))
    #print str(state).strip()
    simulator.set_input_state(state)

    # how long does it take to work over the full hilbert space
    t=clock()
    for i in range(basis.hilbert_space_dimension):
        simulator.get_probability(i)
        util.progress_bar(i/float(basis.hilbert_space_dimension-1))
    hilbert_space_time=clock()-t
    return hilbert_space_time
Example #2
0
    print 'python'
    print element(5,3,i)
    print 'cython'
    print combinadics.fock(5,3,i)
    print '\n'


# python
t=clock()
for i in range(10):
    for j in range(10000):
        a=element(5,3,i)
print clock()-t


# cython
t=clock()
for i in range(10):
    for j in range(10000):
        a=combinadics.fock(5,3,i)
print clock()-t
    
# basis
b=lo.basis(5,20)
t=clock()
for j in range(10):
    for j in range(10000):
        x = b.get_index(['m']+[1,2,3,4,5])
print clock()-t
    
Example #3
0
import numpy as np
from qy.simulation import linear_optics as lo

'''
Test our code with the CNOT-MZ
'''

# Build the device and a two-photon basis, draw the device
basis=lo.basis(2,2)
device=lo.beamsplitter_network(json='devices/cnot_mz.json')
device.draw('devices/cnot_mz.pdf')

# Start a simulator
simulator=lo.simulator(device, basis)

# Set the input state and get some probabilities
input_state=basis.get_state([1,3])
simulator.set_input_state(input_state)
print 'INPUT:', input_state
print 'P00', simulator.get_probability_quantum([1,3])
print 'P01', simulator.get_probability_quantum([2,3])
print 'P10', simulator.get_probability_quantum([1,4])
print 'P11', simulator.get_probability_quantum([2,4])

# Let's try a few different input states
for input_modes in [[0,1], [0,0], [1,1]]:
    input_state=basis.get_state(input_modes)
    simulator.set_input_state(input_state)
    print '\nINPUT:', str(input_state).strip()
    for index, modes in basis:
        q=simulator.get_probability_quantum(index)
Example #4
0
import numpy as np
from qy.simulation import linear_optics as lo
'''
Test our code with the CNOT-MZ
'''

# Build the device and a two-photon basis, draw the device
basis = lo.basis(2, 2)
device = lo.beamsplitter_network(json='devices/cnot_mz.json')
device.draw('devices/cnot_mz.pdf')

# Start a simulator
simulator = lo.simulator(device, basis)

# Set the input state and get some probabilities
input_state = basis.get_state([1, 3])
simulator.set_input_state(input_state)
print 'INPUT:', input_state
print 'P00', simulator.get_probability_quantum([1, 3])
print 'P01', simulator.get_probability_quantum([2, 3])
print 'P10', simulator.get_probability_quantum([1, 4])
print 'P11', simulator.get_probability_quantum([2, 4])

# Let's try a few different input states
for input_modes in [[0, 1], [0, 0], [1, 1]]:
    input_state = basis.get_state(input_modes)
    simulator.set_input_state(input_state)
    print '\nINPUT:', str(input_state).strip()
    for index, modes in basis:
        q = simulator.get_probability_quantum(index)
        c = simulator.get_probability_classical(index)