# sf.decompositions.rectangular¶

rectangular(V, tol=1e-11)[source]

Rectangular decomposition of a unitary matrix, with local phase shifts applied between two interferometers.

See Rectangular decomposition or [24] for more details.

This function returns a circuit corresponding to an intermediate step in the decomposition as described in Eq. 4 of the article. In this form, the circuit comprises some T matrices (as in Eq. 1), then phases on all modes, and more T matrices.

The procedure to construct these matrices is detailed in the supplementary material of the article.

Parameters
• V (array[complex]) – unitary matrix of size n_size

• tol (float) – the tolerance used when checking if the matrix is unitary: $$|VV^\dagger-I| \leq$$ tol

Returns

tuple of the form (tilist,np.diag(localV),tlist)

where:

• tilist: list containing [n,m,theta,phi,n_size] of the Ti unitaries needed

• tlist: list containing [n,m,theta,phi,n_size] of the T unitaries needed

• localV: Diagonal unitary sitting sandwiched by Ti’s and the T’s

Return type

tuple[array]