spheres.symplectic.complex_real_symplectic

spheres.symplectic.complex_real_symplectic(S, s)[source]

Converts a complex symplectic transformation into a real symplectic transformation.

We can use a complex symplectic matrix to perform a Gaussian unitary transformation on a vector of creation and annihilation operators. At the same time, there is an equivalent real symplectic matrix \(\textbf{R}\) and real displacement vector \(\textbf{r}\) that implements the same transformation on a vector of position and momentum operators.

\[\vec{V} \rightarrow \textbf{R}\vec{V} + \textbf{r}\]

We can easily convert between \(\xi\), the vector of annihilation and creation operators, and \(\vec{V}\), the vector of positions and momenta, via:

\[\vec{V} = L\xi\]

Where \(L = \frac{1}{\sqrt{2}}\begin{pmatrix} I_{n} & I_{n} \\ -iI_{n} & iI_{n} \end{pmatrix}\).

This comes from the definition of position and momentum operators in terms of creation and annihilation operators, e.g.:

\[ \begin{align}\begin{aligned}\hat{Q} = \frac{1}{\sqrt{2}}(\hat{a} + \hat{a}^{\dagger})\\\hat{P} = -\frac{i}{\sqrt{2}}(\hat{a} - \hat{a}^{\dagger})\end{aligned}\end{align} \]

Therefore we can turn our complex symplectic transformation into a real symplectic transformation via:

\[ \begin{align}\begin{aligned}\textbf{R} = L\textbf{S}L^{\dagger}\\\textbf{r} = L\textbf{s}\end{aligned}\end{align} \]

If we’ve represented a Gaussian state in terms of its first and second moments, then the real sympectic transformations act on them!

Parameters
  • S (np.array) – Complex symplectic matrix.

  • s (np.array) – Complex symplectic displacement vector.

Returns

  • R (np.array) – Real symplectic matrix.

  • r (np.array) – Real symplectic displacement vector.