Skip to content

Commit d8474c0

Browse files
Update noisy_distribution.jl
1 parent 622f4df commit d8474c0

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/distributions/noisy_distribution.jl

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
noisy_distribution(;input::Input, reflectivity::Real, interf::Interferometer, exact=true, approx=true, samp=true)
2+
noisy_distribution(;input::Input, loss::Real, interf::Interferometer, exact=true, approx=true, samp=true; error=1e-4, failure_probability=1e-4)
33
44
Compute the exact and/or approximated and/or sampled probability distribution of
55
all possible output configurations of partially-distinguishable photons through a
@@ -13,11 +13,11 @@ returns an array containing the three distributions.
1313
!!! note "Reference"
1414
[https://arxiv.org/pdf/1809.01953.pdf](https://arxiv.org/pdf/1809.01953.pdf)
1515
"""
16-
function noisy_distribution(;input::Input, reflectivity::Real, interf::Interferometer, exact=true, approx=true, samp=true)
16+
function noisy_distribution(;input::Input, loss::Real, interf::Interferometer, exact=true, approx=true, samp=true; error=1e-4, failure_probability=1e-4)
1717

1818
output = []
19-
ϵ = 1e-4
20-
δ = 1e-4
19+
ϵ = error
20+
δ = failure_probability
2121

2222
input_modes = input.r.state
2323
number_photons = input.n
@@ -30,14 +30,14 @@ function noisy_distribution(;input::Input, reflectivity::Real, interf::Interfero
3030
get_parametric_type(input)[1] == Bosonic ? distinguishability = 1.0 : distinguishability = 0.0
3131
end
3232

33-
number_output_photons = trunc(Int, number_photons*reflectivity)
33+
number_output_photons = trunc(Int, number_photons*loss)
3434
input_occupancy_modes = fill_arrangement(input_modes)
3535

36-
if reflectivity == 1 ||distinguishability == 0
36+
if loss == 1 ||distinguishability == 0
3737
throw(ArgumentError("invalid input parameters"))
3838
end
3939

40-
ki = (log*δ*(1-reflectivity*distinguishability^2)/2))/log(reflectivity*distinguishability^2)
40+
ki = (log*δ*(1-loss*distinguishability^2)/2))/log(loss*distinguishability^2)
4141
ki = 10^(trunc(Int, log(10, ki)))
4242
ki < 10 ? k = number_photons : k = min(ki, number_photons)
4343
kmax = k-1

0 commit comments

Comments
 (0)