sf.ops.Coherent¶
-
class
Coherent
(r=0.0, phi=0.0)[source]¶ Bases:
strawberryfields.ops.Preparation
Prepare a mode in a coherent state.
The gate is parameterized so that a user can specify a single complex number \(a=\alpha\) or use the polar form \(a = r, p=\phi\) and still get the same result.
- Parameters
r (float) – displacement magnitude \(|\alpha|\)
phi (float) – phase angle \(\phi\)
Details and Conventions
Definition
The coherent state \(\ket{\alpha}\), \(\alpha\in\mathbb{C}\) is a displaced vacuum state defined by
\[\ket{\alpha} = D(\alpha)\ket{0}\]Tip
Available in Strawberry Fields as a NumPy array by
strawberryfields.utils.coherent_state()
A coherent state is a minimum uncertainty state, and the eigenstate of the annihilation operator:
\[\a\ket{\alpha} = \alpha\ket{\alpha}\]In the Fock basis, it has the decomposition
\[|\alpha\rangle = e^{-|\alpha|^2/2} \sum_{n=0}^\infty \frac{\alpha^n}{\sqrt{n!}}|n\rangle\]whilst in the Gaussian formulation, \(\bar{\mathbf{r}}=2 \sqrt{\frac{\hbar}{2}}(\text{Re}(\alpha), \text{Im}(\alpha))\) and \(\mathbf{V}= \frac{\hbar}{2} I\).
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