# 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$$

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$$.

 measurement_deps Extra dependencies due to parameters that depend on measurements. ns
measurement_deps

Extra dependencies due to parameters that depend on measurements.

Returns

dependencies

Return type

set[RegRef]

ns = 1
 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.

Parameters

reg (Sequence[RegRef]) – subsystems the operation is acting on

Returns

decomposition as a list of operations acting on specific subsystems

Return type

list[Command]

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