spheres.symplectic.gaussian_complex_symplectic

spheres.symplectic.gaussian_complex_symplectic(H, h, expm=True, theta=2)[source]

Converts a Gaussian transformation (in the form of a Hermitian matrix and a displacement vector) into a complex symplectic transformation (in the form of a complex symplectic matrix and displacement vector).

Evolving all the creation and annihilation operators by a Gaussian unitary is equivalent to an affine transformation:

\[e^{iH} \xi e^{-iH} = \textbf{S}\xi + \textbf{s}\]

Where \(\textbf{S}\) is a complex symplectic matrix: \(\textbf{S} = e^{-i\Omega_{c}\textbf{H}}\) and \(\textbf{s} = (\textbf{S}-I_{2n})\textbf{H}^{-1}\textbf{h}\).

Here the complex symplectic form is \(\Omega_{c} = \begin{pmatrix}I_{n} & 0 \\ 0 & -I_{n} \end{pmatrix}\), and if \(\textbf{H}\) has no inverse, we take the pseudoinverse instead to calculate \(\textbf{h}\).

Parameters
  • H (np.array) – Gaussian operator.

  • h (np.array) – Gaussian displacement.

  • expm (bool) – Whether to exponentiate.

  • theta (float) – Exponentiation parameter.

Returns

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

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