TBS#

class discopy.quantum.optics.TBS(theta, _dagger=False)[source]#

Bases: Box

Tunable Beam Splitter.

Corresponds to Matrix \(\begin{pmatrix} \tt{sin}(\theta \, \pi) & \tt{cos}(\theta \, \pi) \\ \tt{cos}(\theta \, \pi) & - \tt{sin}(\theta \, \pi) \end{pmatrix}\).

Parameters:

theta (float) – TBS parameter ranging from 0 to 1.

Example

>>> BS = BBS(0)
>>> tbs = lambda x: BS >> Phase(x) @ Id(1) >> BS
>>> assert np.allclose(TBS(0.15).array * TBS(0.15).global_phase,
...                    tbs(0.15).array)
>>> assert np.allclose((TBS(0.25) >> TBS(0.25).dagger()).array,
...                    Id(2).array)
>>> assert (TBS(0.25).dagger().global_phase ==
...         np.conjugate(TBS(0.25).global_phase))