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
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
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)
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)