Gaussian Zoos
State Zoo
Gabs.vacuumstate
— Functionvacuumstate([Tm=Vector{Float64}, Tc=Matrix{Float64}], basis::SymplecticBasis)
Gaussian state with zero photons, known as the vacuum state. The symplectic representation is defined by basis
.
Mathematical description of a vacuum state
A vacuum state |0⟩
is characterized by the zero mean vector and covariance matrix (ħ/2)I
.
Example
julia> vacuumstate(QuadPairBasis(1))
GaussianState for 1 mode.
symplectic basis: QuadPairBasis
mean: 2-element Vector{Float64}:
0.0
0.0
covariance: 2×2 Matrix{Float64}:
1.0 0.0
0.0 1.0
Gabs.thermalstate
— Functionthermalstate([Tm=Vector{Float64}, Tc=Matrix{Float64},] basis::SymplecticBasis, photons<:Int)
Gaussian state at thermal equilibrium, known as the thermal state. The symplectic representation is defined by basis
. The mean photon number of the state is given by photons
.
Mathematical description of a thermal state
A thermal state |n̄⟩
, where n̄
is the mean number of photons, is characterized by the zero mean vector and covariance matrix ħ(n̄+1/2)I
.
Example
julia> thermalstate(QuadPairBasis(1), 4)
GaussianState for 1 mode.
symplectic basis: QuadPairBasis
mean: 2-element Vector{Float64}:
0.0
0.0
covariance: 2×2 Matrix{Float64}:
9.0 0.0
0.0 9.0
Gabs.coherentstate
— Functioncoherentstate([Tm=Vector{Float64}, Tc=Matrix{Float64},] basis::SymplecticBasis, alpha<:Number)
Gaussian state that is the quantum analogue of a monochromatic electromagnetic field, known as the coherent state. The symplectic representation is defined by basis
. The complex amplitude of the state is given by alpha
.
Mathematical description of a coherent state
A coherent state |α⟩
, where α
is the complex amplitude, is characterized by the mean vector √2ħ [real(α), imag(α)]
and covariance matrix (ħ/2)I
.
Example
julia> coherentstate(QuadPairBasis(1), 1.0+im)
GaussianState for 1 mode.
symplectic basis: QuadPairBasis
mean: 2-element Vector{Float64}:
2.0
2.0
covariance: 2×2 Matrix{Float64}:
1.0 0.0
0.0 1.0
Gabs.squeezedstate
— Functionsqueezedstate([Tm=Vector{Float64}, Tc=Matrix{Float64},] basis::SymplecticBasis, r<:Real, theta<:Real)
Gaussian state with quantum uncertainty in its phase and amplitude, known as the squeezed state. The symplectic representation is defined by basis
. The amplitude and phase squeezing parameters are given by r
and theta
, respectively.
Mathematical description of a squeezed state
A squeezed state |r, θ⟩
, where r
is the amplitude squeezing parameter and θ
is the phase squeezing parameter, is characterized by the zero mean vector and covariance matrix (ħ/2) (cosh(2r)I - sinh(2r)R(θ))
, where R(θ)
is the rotation matrix.
Example
julia> squeezedstate(QuadPairBasis(1), 0.5, pi/4)
GaussianState for 1 mode.
symplectic basis: QuadPairBasis
mean: 2-element Vector{Float64}:
0.0
0.0
covariance: 2×2 Matrix{Float64}:
0.712088 -0.830993
-0.830993 2.37407
Gabs.eprstate
— Functioneprstate([Tm=Vector{Float64}, Tc=Matrix{Float64},] basis::SymplecticBasis, r<:Real, theta<:Real)
Gaussian state that is a two-mode squeezed state, known as the Einstein-Podolski-Rosen (EPR) state. The symplectic representation is defined by basis
. The amplitude and phase squeezing parameters are given by r
and theta
, respectively.
Mathematical description of an EPR state
An EPR state |r, θ⟩ₑₚᵣ
, where r
is the amplitude squeezing parameter and θ
is the phase squeezing parameter, is characterized by the zero mean vector and covariance matrix (ħ/2)[cosh(2r)I -sinh(2r)R(θ); -sinh(2r)R(θ) cosh(2r)I]
, where R(θ)
is the rotation matrix.
Example
julia> eprstate(QuadPairBasis(2), 0.5, pi/4)
GaussianState for 2 modes.
symplectic basis: QuadPairBasis
mean: 4-element Vector{Float64}:
0.0
0.0
0.0
0.0
covariance: 4×4 Matrix{Float64}:
1.54308 0.0 -0.830993 -0.830993
0.0 1.54308 -0.830993 0.830993
-0.830993 -0.830993 1.54308 0.0
-0.830993 0.830993 0.0 1.54308
Operator Zoo
Gabs.displace
— Functiondisplace([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, alpha<:Number)
displace([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, alpha<:Number, noise::Ts)
Gaussian operator that displaces the vacuum state into a coherent state, known as the displacement operator. The symplectic representation is given by basis
. The complex amplitude is given by alpha
. Noise can be added to the operation with noise
.
Mathematical description of a displacement operator
A displacement operator D(α)
is defined by the operation D(α)|0⟩ = |α⟩
, where α
is a complex amplitude. The operator D(α)
is characterized by the displacement vector √2ħ [real(α), imag(α)]
and symplectic matrix I
.
Example
julia> displace(QuadPairBasis(1), 1.0+im)
GaussianUnitary for 1 mode.
symplectic basis: QuadPairBasis
displacement: 2-element Vector{Float64}:
2.0
2.0
symplectic: 2×2 Matrix{Float64}:
1.0 0.0
0.0 1.0
Gabs.squeeze
— Functionsqueeze([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, r<:Real, theta<:Real)
squeeze([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, r<:Real, theta<:Real, noise::Ts)
Gaussian operator that squeezes the vacuum state into a squeezed state, known as the squeezing operator. The symplectic representation is given by basis
. The amplitude and phase squeezing parameters are given by r
and theta
, respectively. Noise can be added to the operation with noise
.
Mathematical description of a squeezing operator
A squeeze operator S(r, θ)
is defined by the operation S(r, θ)|0⟩ = |r, θ⟩
, where r
and θ
are the real amplitude and phase parameters, respectively. The operator S(r, θ)
is characterized by the zero displacement vector and symplectic matrix cosh(r)I - sinh(r)R(θ)
, where R(θ)
is the rotation matrix.
Example
julia> squeeze(QuadPairBasis(1), 0.25, pi/4)
GaussianUnitary for 1 mode.
symplectic basis: QuadPairBasis
displacement: 2-element Vector{Float64}:
0.0
0.0
symplectic: 2×2 Matrix{Float64}:
0.852789 -0.178624
-0.178624 1.21004
Gabs.twosqueeze
— Functiontwosqueeze([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, r<:Real, theta<:Real)
twosqueeze([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, r<:Real, theta<:Real, noise::Ts)
Gaussian operator that squeezes a two-mode vacuum state into a two-mode squeezed state, known as the two-mode squeezing operator. The symplectic representation is given by basis
. The amplitude and phase squeezing parameters are given by r
and theta
, respectively. Noise can be added to the operation with noise
.
Mathematical description of a two-mode squeezing operator
A two-mode squeeze operator S₂(r, θ)
is defined by the operation S₂(r, θ)|0⟩ = |r, θ⟩
, where r
and θ
are the real amplitude and phase parameters, respectively. The operator S₂(r, θ)
is characterized by the zero displacement vector and symplectic matrix [cosh(r)I -sinh(r)R(θ); -sinh(r)R(θ) cosh(r)I]
, where R(θ)
is the rotation matrix.
Example
julia> twosqueeze(QuadPairBasis(2), 0.25, pi/4)
GaussianUnitary for 2 modes.
symplectic basis: QuadPairBasis
displacement: 4-element Vector{Float64}:
0.0
0.0
0.0
0.0
symplectic: 4×4 Matrix{Float64}:
1.03141 0.0 -0.178624 -0.178624
0.0 1.03141 -0.178624 0.178624
-0.178624 -0.178624 1.03141 0.0
-0.178624 0.178624 0.0 1.03141
Gabs.phaseshift
— Functionphaseshift([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, theta<:Real)
phaseshift([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, theta<:Real, noise::Ts)
Gaussian operator that rotates the phase of a given Gaussian mode by theta
, as the phase shift operator. The symplectic representation is given by basis
. Noise can be added to the operation with noise
.
Mathematical description of a phase shift operator
A phase shift operator is defined by the operation U(θ) = exp(-iθâᵗâ)
, where θ
is the phase parameter, and âᵗ
and â
are the raising and lowering operators, respectively. The operator U(θ)
is characterized by the zero displacement vector and symplectic matrix [cos(θ) sin(θ); -sin(θ) cos(θ)]
.
Example
julia> phaseshift(QuadPairBasis(1), 3pi/4)
GaussianUnitary for 1 mode.
symplectic basis: QuadPairBasis
displacement: 2-element Vector{Float64}:
0.0
0.0
symplectic: 2×2 Matrix{Float64}:
-0.707107 0.707107
-0.707107 -0.707107
Gabs.beamsplitter
— Functionbeamsplitter([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, transmit<:Real)
beamsplitter([Tm=Vector{Float64}, Ts=Matrix{Float64}], basis::SymplecticBasis, transmit<:Real, noise::Ts)
Gaussian operator that serves as the beam splitter transformation of a two-mode Gaussian state, known as the beam splitter operator. The symplectic representation is given by basis
. The transmittivity of the operator is given by transmit
. Noise can be added to the operation with noise
.
Mathematical description of a beam splitter operator
A beam splitter operator B(τ)
is defined by the operation B(τ) = exp(θ(âᵗb̂ - âb̂ᵗ))
, where θ
is defined by τ = cos²θ
, and â
and b̂
are the annihilation operators of the two modes, respectively. The operator B(τ)
is characterized by the zero displacement vector and symplectic matrix [√τI √(1-τ)I; -√(1-τ)I √τI]
.
Example
julia> beamsplitter(QuadPairBasis(2), 0.75)
GaussianUnitary for 2 modes.
symplectic basis: QuadPairBasis
displacement: 4-element Vector{Float64}:
0.0
0.0
0.0
0.0
symplectic: 4×4 Matrix{Float64}:
0.5 0.0 0.866025 0.0
0.0 0.5 0.0 0.866025
-0.866025 0.0 0.5 0.0
0.0 -0.866025 0.0 0.5
Gabs.attenuator
— Functionattenuator([Td=Vector{Float64}, Tt=Matrix{Float64},] basis::SymplecticBasis, theta<:Real, n<:Int)
Gaussian channel describing the coupling of an input single mode Gaussian state and its environment via a beam splitter operation. The channel is paramatrized by beam splitter rotation angle theta
and thermal noise n
.
Mathematical description of an attenuator channel
An attenuator channel, E(θ, nₜₕ)
, where θ
is the beam splitter rotation parameter and nₜₕ ≥ 1
is the thermal noise parameter, is characterized by the zero displacement vector, transformation matrix cos(θ)I
, and noise matrix nₜₕsin²(θ)I
.
Example
julia> attenuator(QuadPairBasis(1), pi/6, 3)
GaussianChannel for 1 mode.
symplectic basis: QuadPairBasis
displacement: 2-element Vector{Float64}:
0.0
0.0
transform: 2×2 Matrix{Float64}:
0.866025 0.0
0.0 0.866025
noise: 2×2 Matrix{Float64}:
0.75 0.0
0.0 0.75
Gabs.amplifier
— Functionamplifier([Td=Vector{Float64}, Tt=Matrix{Float64},] basis::SymplecticBasis, r<:Real, n<:Int)
Gaussian channel describing the interaction of an input single mode Gaussian state and its environment via a two-mode squeezing operation. The channel is paramatrized by squeezing amplitude parameter r
and thermal noise n
.
Mathematical description of an amplifier channel
An amplifier channel, A(r, nₜₕ)
, where r
is the squeezing amplitude parameter and nₜₕ ≥ 1
is the thermal noise parameter, is characterized by the zero displacement vector, transformation matrix cosh(r)I
, and noise matrix nₜₕsinh²(r)I
.
Example
julia> amplifier(QuadPairBasis(1), 2.0, 3)
GaussianChannel for 1 mode.
symplectic basis: QuadPairBasis
displacement: 2-element Vector{Float64}:
0.0
0.0
transform: 2×2 Matrix{Float64}:
3.7622 0.0
0.0 3.7622
noise: 2×2 Matrix{Float64}:
39.4623 0.0
0.0 39.4623