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.