symop.polynomial.channels.models.mzi

Mach-Zehnder interferometer models for CCR polynomial representations.

This module provides helpers for applying a two-mode Mach-Zehnder interferometer (MZI) unitary to ket, density, and operator polynomial objects.

Functions

mzi_densitypoly(rho, *, mode0, mode1, ...[, ...])

Apply a two-mode Mach-Zehnder interferometer to a density polynomial.

mzi_ketpoly(poly, *, mode0, mode1, theta1, ...)

Apply a two-mode Mach-Zehnder interferometer to a ket polynomial.

mzi_oppoly(op, *, mode0, mode1, theta1, ...)

Apply a two-mode Mach-Zehnder interferometer to an operator polynomial.

mzi_densitypoly(rho: DensityPoly, *, mode0: ModeOp, mode1: ModeOp, theta1: float, theta2: float, phi_internal: float, phi_in0: float = 0.0, phi_in1: float = 0.0, phi_out0: float = 0.0, phi_out1: float = 0.0, check_unitary: bool = False, atol: float = 1e-10) DensityPoly

Apply a two-mode Mach-Zehnder interferometer to a density polynomial.

Parameters:
Return type:

DensityPoly

mzi_ketpoly(poly: KetPoly, *, mode0: ModeOp, mode1: ModeOp, theta1: float, theta2: float, phi_internal: float, phi_in0: float = 0.0, phi_in1: float = 0.0, phi_out0: float = 0.0, phi_out1: float = 0.0, check_unitary: bool = False, atol: float = 1e-10) KetPoly

Apply a two-mode Mach-Zehnder interferometer to a ket polynomial.

Parameters:
Return type:

KetPoly

mzi_oppoly(op: OpPoly, *, mode0: ModeOp, mode1: ModeOp, theta1: float, theta2: float, phi_internal: float, phi_in0: float = 0.0, phi_in1: float = 0.0, phi_out0: float = 0.0, phi_out1: float = 0.0, check_unitary: bool = False, atol: float = 1e-10) OpPoly

Apply a two-mode Mach-Zehnder interferometer to an operator polynomial.

Parameters:
Return type:

OpPoly