BosonSampling.Bosonic
— TypeType used to notify that the input is made of FockState indistiguishable photons.
BosonSampling.CoherentState
— TypeCoherentState(displacement_parameter::Complex)
Type used to notify that the input is made of a coherent state.
Fields:
- displacement_parameter::Complex
- displacement::Vector{Complex}
- covariance_matrix::Matrix{Complex}
BosonSampling.Distinguishable
— TypeModel of distinguishable photons FockState.
BosonSampling.Gaussian
— TypeSupertype to any concrete input type of Gaussian state.
BosonSampling.GaussianInput
— TypeGaussianInput{T<:Gaussian}
GaussianInput{T}(r::ModeOccupation, squeezing_parameters::Vector, source_transmission::Union{Vector, Nothing})
Input state made off Gaussian states at the entrance of the interferometer. Models of partial distinguishability for Gausian states being of different nature than those for Fock states, we distinct input of Bosonic
Fock states with indistinguishable Gaussian states.
The notion of ModeOccupation
here is also different. Even though the object is the same, the mode occuputation here as to be understood as a "boolean" where the value 0
tells us that the mode is fed with the vacuum while 1
states that the mode contains a Gaussian state of type T
.
BosonSampling.GramMatrix
— TypeGramMatrix{T}(n::Int) where {T<:InputType}
GramMatrix{T}(n::Int, distinguishability_param::Real) where {T<:InputType}
GramMatrix{T}(n::Int, S::Matrix) where {T<:InputType}
Matrix of partial distinguishability. Will automatically generate the proper matrix related to the provided InputType
.
Fields:
- n::Int: photons number
- S::Matrix: Gram matrix
- rank::Union{Int, Nothing}
- distinguishability_param::Union{Real, Nothing}
- generating_vectors::OrthonormalBasis
BosonSampling.Input
— TypeInput{T<:InputType}
Input{T}(r::ModeOccupation) where {T<:InputType}
Input{T}(r::ModeOccupation, G::GramMatrix) where {T<:InputType}
Input state at the entrance of the interferometer.
Fields:
- r::ModeOccupation
- n::Int
- m::Int: modes numbers
- G::GramMatrix
- distinguishability_param::Union{Real, Nothing}
BosonSampling.InputType
— TypeSupertype to any concrete input type such as Bosonic
, PartDist
, Distinguishable
and Undef
.
BosonSampling.OneParameterInterpolation
— TypeOne parameter model of partial distinguishability interpolating between indistinguishable and fully distinguishable photons FockState.
BosonSampling.OrthonormalBasis
— TypeOrthonormalBasis(vector_matrix::Union{Matrix, Nothing})
Basis of vectors $v_1,...,v_n$ stored as columns in a $n$-by-$r$ matrix possibly empty.
Fields:
vectors_matrix::Union{Matrix,Nothing}
BosonSampling.PartDist
— TypeType used to notify that the input is made of FockState partially distinguishable photons.
BosonSampling.RandomGramMatrix
— TypeModel of partially distinguishable photons FockState described by a randomly generated GramMatrix
.
BosonSampling.SingleModeSqueezedVacuum
— TypeSingleModeSqueezedVacuum(squeezing_parameter::Real)
Type used to notify that the input is made of single mode squeezed state.
Fields:
- squeezing_parameter::Real
- displacement::Vector{Complex}
- covariance_matrix::Matrix{Complex}
BosonSampling.ThermalState
— TypeThermalState(mean_photon_number::Real)
Type used to notify that the input is made of a thermal state.
Fields:
mean_photon_number::Real
displacement::Vector{Complex}
covariance_matrix::Matrix{Complex}
BosonSampling.Undef
— TypeModel of photons FockState with undefined GramMatrix
.
BosonSampling.UnknownInput
— TypeType used to express that we don't know what partial distinguishability experimental samples have.
BosonSampling.UserDefinedGramMatrix
— TypeModel of partially distinguishable photons FockState described by a provided GramMatrix
.
BosonSampling.VacuumState
— TypeVacuumState()
Type used to notify that the input is made of the vacuum state.
Fields:
displacement::Vector{Complex}
covariance_matrix::Matrix{Complex}
BosonSampling.get_spectrum
— Methodget_spectrum(state::Gaussian, k::Int)
Get the spectrum in the Fock basis of a state
up to k
photons.