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:
MatchgateParamsMatchgate 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:
MatchgateParamsA 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¶