Stellar Decomposition

formal_stellar_triples

Returns the core and operator triples for the formal stellar decomposition.

physical_stellar_triples_dm

Physical stellar decomposition rho = rho_core >> channel.

physical_stellar_triples_ket

Returns core and U from the physical stellar decomposition psi = core >> U.

formal_stellar_triples

mrmustard.physics.stellar.formal_stellar_triples(triple, M)[source]

Returns the core and operator triples for the formal stellar decomposition. It decomposes any block Bargmann triple into two triples where the first has the core property on the first M indices and the second is an operator that acts on the first M indices to reconstruct the original triple.

Parameters:
Returns:

The Bargmann triple (A, b, c) of the core state. op_triple: The Bargmann triple (A, b, c) of the operator in out-in ordering.

Return type:

core_triple

physical_stellar_triples_dm

mrmustard.physics.stellar.physical_stellar_triples_dm(triple, M)[source]

Physical stellar decomposition rho = rho_core >> channel.

It decomposes a triple parametrizing a DM into a Gaussian core DM and a Gaussian channel that acts on the core modes to reconstruct the original DM. This is always possible if M is at least half of the total number of modes. If M is fewer than half, the following rank condition must be satisfied:

\[\mathrm{rank}(R^\top R + \sigma^\top \sigma) \leq M\]

where

\[\begin{split}A = \begin{bmatrix} A_m & R \\ R^\top & A_n \end{bmatrix}\end{split}\]
Parameters:
Returns:

The Bargmann triple (A, b, c) of the core state. phi_triple: The Bargmann triple (A, b, c) of the channel.

Return type:

core_triple

Raises:

ValueError – If the rank condition is not satisfied.

physical_stellar_triples_ket

mrmustard.physics.stellar.physical_stellar_triples_ket(triple, M)[source]

Returns core and U from the physical stellar decomposition psi = core >> U. Here core is a Gaussian ket on M+N modes with the core property on the first M modes, and U is an M-mode Gaussian unitary.

Parameters:
Returns:

The Bargmann triple (A, b, c) of the core state. U_triple: The Bargmann triple (A, b, c) of the unitary.

Return type:

core_triple