MatchCake

matchcake.matchgate_parameter_sets package

Submodules

matchcake.matchgate_parameter_sets.matchgate_params module

class matchcake.matchgate_parameter_sets.matchgate_params.MatchgateParams

Bases: object

__init__() None
property batch_size: int | None
compute_batch_size() int | None
compute_shape() Tuple[int] | Tuple[int, int]
matrix(dtype: dtype = torch.complex128, device: device | None = None) Tensor
property shape: Tuple[int] | Tuple[int, int]

matchcake.matchgate_parameter_sets.matchgate_polar_params module

class matchcake.matchgate_parameter_sets.matchgate_polar_params.MatchgatePolarParams(r0: TensorLike | Tensor | Number | None = None, r1: TensorLike | Tensor | Number | None = None, theta0: TensorLike | Tensor | Number | None = None, theta1: TensorLike | Tensor | Number | None = None, theta2: TensorLike | Tensor | Number | None = None, theta3: TensorLike | Tensor | Number | None = None, theta4: TensorLike | Tensor | Number | None = None)

Bases: MatchgateParams

Matchgate from polar parameters.

They are the parameters of a Matchgate operation in the standard form which is a 4x4 matrix

\[ \begin{align}\begin{aligned}\begin{split} \begin{bmatrix} r_0 e^{i\theta_0} & 0 & 0 & (\sqrt{1 - r_0^2}) e^{-i(\theta_1+\pi)} \\ 0 & r_1 e^{i\theta_2} & (\sqrt{1 - r_1^2}) e^{-i(\theta_3+\pi)} & 0 \\ 0 & (\sqrt{1 - r_1^2}) e^{i\theta_3} & r_1 e^{-i\theta_2} & 0 \\ (\sqrt{1 - r_0^2}) e^{i\theta_1} & 0 & 0 & r_0 e^{-i\theta_0} \end{bmatrix}\end{split}\\where :math:`r_0, r_1, \theta_0, \theta_1, \theta_2, \theta_3, \theta_4` are the parameters.\end{aligned}\end{align} \]

The polar parameters will be converted to standard parameterization. The conversion is given by

\[\begin{split}\begin{align} a &= r_0 e^{i\theta_0} \\ b &= (\sqrt{1 - r_0^2}) e^{i(\theta_2+\theta_4-(\theta_1+\pi))} \\ c &= (\sqrt{1 - r_0^2}) e^{i\theta_1} \\ d &= r_0 e^{i(\theta_2+\theta_4-\theta_0)} \\ w &= r_1 e^{i\theta_2} \\ x &= (\sqrt{1 - r_1^2}) e^{i(\theta_2+\theta_4-(\theta_3+\pi))} \\ y &= (\sqrt{1 - r_1^2}) e^{i\theta_3} \\ z &= r_1 e^{i\theta_4} \end{align}\end{split}\]
__init__(r0: TensorLike | Tensor | Number | None = None, r1: TensorLike | Tensor | Number | None = None, theta0: TensorLike | Tensor | Number | None = None, theta1: TensorLike | Tensor | Number | None = None, theta2: TensorLike | Tensor | Number | None = None, theta3: TensorLike | Tensor | Number | None = None, theta4: TensorLike | Tensor | Number | None = None) None
get_angles_params_list() List[TensorLike | Tensor | Number | None]
get_modules_params_list() List[TensorLike | Tensor | Number | None]
get_params_list() List[TensorLike | Tensor | Number | None]
matrix(dtype: dtype = torch.complex128, device: device | None = None) Tensor
r0: TensorLike | Tensor | Number | None = None
r1: TensorLike | Tensor | Number | None = None
theta0: TensorLike | Tensor | Number | None = None
theta1: TensorLike | Tensor | Number | None = None
theta2: TensorLike | Tensor | Number | None = None
theta3: TensorLike | Tensor | Number | None = None
theta4: TensorLike | Tensor | Number | None = None

matchcake.matchgate_parameter_sets.matchgate_standard_params module

class matchcake.matchgate_parameter_sets.matchgate_standard_params.MatchgateStandardParams(a: TensorLike | Tensor | Number | None = None, b: TensorLike | Tensor | Number | None = None, c: TensorLike | Tensor | Number | None = None, d: TensorLike | Tensor | Number | None = None, w: TensorLike | Tensor | Number | None = None, x: TensorLike | Tensor | Number | None = None, y: TensorLike | Tensor | Number | None = None, z: TensorLike | Tensor | Number | None = None)

Bases: MatchgateParams

A matchgate is a matrix of the form

\[\begin{split}\begin{pmatrix} a & 0 & 0 & b \\ 0 & w & x & 0 \\ 0 & y & z & 0 \\ c & 0 & 0 & d \end{pmatrix}\end{split}\]

where \(a, b, c, d, w, x, y, z \in \mathbb{C}\). The matrix M can be decomposed as

\[\begin{split}A = \begin{pmatrix} a & b \\ c & d \end{pmatrix}\end{split}\]

and

\[\begin{split}W = \begin{pmatrix} w & x \\ y & z \end{pmatrix}\end{split}\]
__init__(a: TensorLike | Tensor | Number | None = None, b: TensorLike | Tensor | Number | None = None, c: TensorLike | Tensor | Number | None = None, d: TensorLike | Tensor | Number | None = None, w: TensorLike | Tensor | Number | None = None, x: TensorLike | Tensor | Number | None = None, y: TensorLike | Tensor | Number | None = None, z: TensorLike | Tensor | Number | None = None) None
a: TensorLike | Tensor | Number | None = None
b: TensorLike | Tensor | Number | None = None
c: TensorLike | Tensor | Number | None = None
d: TensorLike | Tensor | Number | None = None
classmethod from_sub_matrices(outer_matrix: TensorLike | Tensor | Number, inner_matrix: TensorLike | Tensor | Number)
get_params_list() List[TensorLike | Tensor | Number | None]
matrix(dtype: dtype = torch.complex128, device: device | None = None) Tensor
w: TensorLike | Tensor | Number | None = None
x: TensorLike | Tensor | Number | None = None
y: TensorLike | Tensor | Number | None = None
z: TensorLike | Tensor | Number | None = None

Module contents