OperatorSinkhorn

OperatorSinkhorn is a function that performs operator Sinkhorn iterative scaling on a (potentially multipartite) operator, resulting in a locally equivalent operator that has all of its single-party reduced states proportional to the identity (see Section 4 of ).

Syntax

 * SIGMA = OperatorSinkhorn(RHO)
 * SIGMA = OperatorSinkhorn(RHO,DIM)
 * SIGMA = OperatorSinkhorn(RHO,DIM,TOL)
 * [SIGMA,F] = OperatorSinkhorn(RHO,DIM,TOL)

Input arguments

 * RHO: An positive semidefinite operator (typically a density matrix) that acts on a bipartite or multipartite Hilbert space. This operator will have the operator Sinkhorn iteration applied to it.
 * DIM (optional, default has RHO acting on two subsystems of equal size): A vector containing the dimensions of the two or more subsystems on which RHO</tt> acts.
 * TOL</tt> (optional, default sqrt(eps)</tt>): The numerical tolerance used to determine when the iteration has converged.

Output arguments

 * SIGMA</tt>: A positive semidefinite operator with three properties: (1) its trace is the same trace as RHO</tt>, (2) it is locally equivalent to RHO</tt> (i.e., there exist invertible local operators that transform RHO</tt> into SIGMA</tt>), and (3) all of its single-party reduced density matrices are proportional to the identity operator.
 * F</tt> (optional): A cell containing the local filtering operations used to convert RHO</tt> into SIGMA</tt>. That is, a cell containing invertible operators so that Tensor(F)*RHO*Tensor(F)'</tt> equals SIGMA</tt>.

Verifying the partial traces
The following code generates a random density matrix, performs operator Sinkhorn iterative scaling, and then verifies that the result has the claimed properties (both partial traces are proportional to the identity and it is locally equivalent to the input).

A multipartite example
The following example is similar to the previous one, except the density matrix that is used lives on 3-qubit space (i.e., the tripartite space where each local dimension is 2).

Iteration may not converge for low-rank states
It is known that the operator Sinkhorn iteration converges whenever RHO</tt> has full rank. However, the iteration may fail to converge for low-rank density matrices – an error will be produced by this script in these cases. The following code demonstrates an example.