sf.ops.DisplacedSqueezed¶
-
class
DisplacedSqueezed
(r_d=0.0, phi_d=0.0, r_s=0.0, phi_s=0.0)[source]¶ Bases:
strawberryfields.ops.Preparation
Prepare a mode in a displaced squeezed state.
A displaced squeezed state is prepared by squeezing a vacuum state, and then applying a displacement operator.
\[\ket{\alpha,z} = D(\alpha)\ket{0,z} = D(\alpha)S(z)\ket{0},\]where the squeezing parameter \(z=re^{i\phi}\).
- Parameters
r_d (float) – displacement magnitude
phi_d (float) – displacement angle
r_s (float) – squeezing magnitude
phi_s (float) – squeezing angle \(\phi\)
Details and Conventions
Definition
The displaced squeezed state \(\ket{\alpha, z}\), \(\alpha\in\mathbb{C}\), \(z=re^{i\phi}\) is a displaced and squeezed vacuum state defined by
\[\ket{\alpha, z} = D(\alpha)S(z)\ket{0}\]Tip
Available in Strawberry Fields as a NumPy array by
strawberryfields.utils.displaced_squeezed_state()
In the Fock basis, it has the decomposition
\[|\alpha,z\rangle = e^{-\frac{1}{2}|\alpha|^2-\frac{1}{2}{\alpha^*}^2 e^{i\phi}\tanh{(r)}} \sum_{n=0}^\infty\frac{\left[\frac{1}{2}e^{i\phi} \tanh(r)\right]^{n/2}}{\sqrt{n!\cosh(r)}} H_n \left[ \frac{\alpha\cosh(r)+\alpha^*e^{i\phi}\sinh(r)}{\sqrt{e^{i\phi}\sinh(2r)}} \right] |n\rangle\]where \(H_n(x)\) are the Hermite polynomials defined by \(H_n(x)=(-1)^n e^{x^2}\frac{d}{dx}e^{-x^2}\). Alternatively, in the Gaussian formulation, \(\bar{\mathbf{r}} = 2 \sqrt{\frac{\hbar}{2}}(\text{Re}(\alpha),\text{Im}(\alpha))\) and \(\mathbf{V} = R(\phi/2)\begin{bmatrix}e^{-2r} & 0 \\0 & e^{2r} \\ \end{bmatrix}R(\phi/2)^T\)
We can use the displaced squeezed states to approximate the \(x\) position and \(p\) momentum eigenstates;
\[\ket{x}_x \approx D\left(\frac{1}{2}x\right)S(r)\ket{0}, ~~~~ \ket{p}_p \approx D\left(\frac{i}{2}p\right)S(-r)\ket{0}\]where \(z=r\) is sufficiently large.
Attributes
Extra dependencies due to parameters that depend on measurements.
-
measurement_deps
¶ Extra dependencies due to parameters that depend on measurements.
- Returns
dependencies
- Return type
set[RegRef]
-
ns
= 1¶
Methods
apply
(reg, backend, **kwargs)Ask a local backend to execute the operation on the current register state right away.
decompose
(reg, **kwargs)Decompose the operation into elementary operations supported by the backend API.
merge
(other)Merge the operation with another (acting on the exact same set of subsystems).
-
apply
(reg, backend, **kwargs)¶ Ask a local backend to execute the operation on the current register state right away.
Takes care of parameter evaluations and any pending formal transformations (like dagger) and then calls
Operation._apply()
.- Parameters
reg (Sequence[RegRef]) – subsystem(s) the operation is acting on
backend (BaseBackend) – backend to execute the operation
- Returns
the result of self._apply
- Return type
Any
-
decompose
(reg, **kwargs)¶ Decompose the operation into elementary operations supported by the backend API.
See
strawberryfields.backends.base
.
-
merge
(other)¶ Merge the operation with another (acting on the exact same set of subsystems).
Note
For subclass overrides: merge may return a newly created object, or self, or other, but it must never modify self or other because the same Operation objects may be also used elsewhere.
- Parameters
other (Operation) – operation to merge this one with
- Returns
other * self. The return value None represents the identity gate (doing nothing).
- Return type
Operation, None
- Raises
MergeFailure – if the two operations cannot be merged