BosonSampling.at_most_one_photon_per_bin
— Methodat_most_one_photon_per_bin(occupancy_vector::Vector{Int})
check_at_most_one_particle_per_mode(occ)
Check wether occupancy_vector
contains more than one photon per site.
BosonSampling.bosonic_amplitude
— Functionbosonic_amplitude(U, input_state, output_state, permanent=ryser)
process_amplitude(U, input_state, output_state, permanent=ryser)
Compute the probability amplitude to go from input_state
to output_state
through the interferomter U
in the Bosonic
case.
BosonSampling.bosonic_probability
— Methodbosonic_probability(U, input_state, output_state)
process_probability(U, input_state, output_state)
Compute the probability to go from input_state
to output_state
through the interferometer U
in the Bosonic
case.
BosonSampling.check_suppression_law
— Methodcheck_suppression_law(event)
Check if the event is suppressed according to the rule.
BosonSampling.compute_probability!
— Methodcompute_probability(ev::Event{TIn, TOut}) where {TIn<:InputType, TOut<:FockDetection}
Given an Event
, gives the probability to get the outcome TOut
when TIn
passes though the interferometer ev.interferometer
.
BosonSampling.distinguishable_probability
— Functiondistinguishable_probability(U, input_state, output_state, permanent=ryser)
process_probability_distinguishable(U, input_state, output_state, permanent=ryser)
Compute the probability to go from input_state
to output_state
through the interferomter U
in the Distinguishable
case.
BosonSampling.fill_arrangement
— Methodfill_arrangement(occupation_vector)
fill_arrangement(r::ModeOccupation)
fill_arrangement(input::Input)
Convert a mode occupation list to a mode assignement.
BosonSampling.iterate_until_collisionless
— Methoditerate_until_collisionless(f)
Sample f
until the result is collisionless.
BosonSampling.mode_occupancy_to_occupancy_vector
— Methodmode_occupancy_to_occupancy_vector(mo::Vector{Int}, m::Int)
Goes from [2,2,5] to 0,2,0,0,1,0.
BosonSampling.occupancy_vector_to_mode_occupancy
— Methodoccupancy_vector_to_mode_occupancy(occupancy_vector)
Return a partition of occupied modes from an occupancy_vector
.
BosonSampling.occupancy_vector_to_partition
— Methodoccupancy_vector_to_partition(occupancy_vector)
occupancy_vector_to_mode_occupancy(occupancy_vector)
Return a partition of occupied modes from an occupancy_vector
.
BosonSampling.output_mode_occupation
— Methodoutput_mode_occupation(n::Int, m::Int)
Return all possible configurations of n
photons among m
modes.
BosonSampling.process_probability_partial
— Methodprocess_probability_partial(U, S, input_state, output_state)
process_probability_partial(interf::Interferometer, input_state::Input{TIn} where {TIn<:PartDist},output_state::FockDetection)
Compute the probability to go from input_state
to output_state
through the interferometer U
in the PartDist
case where partial distinguishable is described by the GramMatrix
S
.
BosonSampling.random_mode_occupation
— Methodrandom_mode_occupation(n::Int, m::Int)
Create a ModeOccupation
from a mode occupation list of n
ramdomly placed ones among m
sites.
BosonSampling.random_mode_occupation_collisionless
— Methodrandom_mode_occupation_collisionless(n::Int, m::Int)
Create a ModeOccupation
from a random mode occupation that is likely collisionless.
BosonSampling.random_occupancy
— Methodrandom_occupancy(n::Int, m::Int)
Return a vector of size m
with n
randomly placed ones.
BosonSampling.scattering_matrix
— Methodscattering_matrix(U::Matrix, input_state::Vector{Int}, output_state::Vector{Int})
scattering_matrix(U::Interferometer, r::ModeOccupation, s::ModeOccupation)
scattering_matrix(U::Interferometer, i::Input, o::FockDetection)
Return the submatrix of U
whose rows and columns are respectively defined by input_state
and output_state
.