QuISP
Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
1#pragma once
2#include <Eigen/Eigen>
4enum class CliffordOperator : int {
5 Id = 0,
6 X,
7 Y,
8 Z,
9 RX_INV,
10 RX,
12 Z_RX,
13 RY_INV,
14 RY,
15 H,
16 Z_RY,
17 S_INV,
18 S,
19 X_S_INV,
20 X_S,
24 S_RX,
28 S_RY,
29};
30
32 double pauli_error_rate; // Overall error rate
36
37 void setParams(double x_ratio, double y_ratio, double z_ratio, double error_rate) {
38 double sum = x_ratio + z_ratio + y_ratio;
39 pauli_error_rate = error_rate;
40 if (sum == 0) {
41 x_ratio = 1.;
42 z_ratio = 1.;
43 y_ratio = 1.;
44 sum = 3.;
45 }
46
47 x_error_rate = pauli_error_rate * (x_ratio / sum);
48 y_error_rate = pauli_error_rate * (y_ratio / sum);
49 z_error_rate = pauli_error_rate * (z_ratio / sum);
50 }
51};
52
54 double pauli_error_rate; // Overall error rate
70
71 void setParams(double error_rate,
72
73 double ix_ratio, double iy_ratio, double iz_ratio, double xi_ratio, double xx_ratio, double xy_ratio, double xz_ratio, double yi_ratio, double yx_ratio,
74 double yy_ratio, double yz_ratio, double zi_ratio, double zx_ratio, double zy_ratio, double zz_ratio) {
75 pauli_error_rate = error_rate;
76 double ratio_sum =
77 ix_ratio + iy_ratio + iz_ratio + xi_ratio + xx_ratio + xy_ratio + xz_ratio + yi_ratio + yx_ratio + yy_ratio + yz_ratio + zi_ratio + zx_ratio + zy_ratio + zz_ratio;
78
79 if (ratio_sum == 0) {
80 ix_ratio = 1.;
81 iy_ratio = 1.;
82 iz_ratio = 1.;
83 xi_ratio = 1.;
84 xx_ratio = 1.;
85 xy_ratio = 1.;
86 xz_ratio = 1.;
87 yi_ratio = 1.;
88 yx_ratio = 1.;
89 yy_ratio = 1.;
90 yz_ratio = 1.;
91 zi_ratio = 1.;
92 zx_ratio = 1.;
93 zy_ratio = 1.;
94 zz_ratio = 1.;
95 ratio_sum = 15.;
96 }
97
98 ix_error_rate = pauli_error_rate * (ix_ratio / ratio_sum);
99 iy_error_rate = pauli_error_rate * (iy_ratio / ratio_sum);
100 iz_error_rate = pauli_error_rate * (iz_ratio / ratio_sum);
101 xi_error_rate = pauli_error_rate * (xi_ratio / ratio_sum);
102 xx_error_rate = pauli_error_rate * (xx_ratio / ratio_sum);
103 xy_error_rate = pauli_error_rate * (xy_ratio / ratio_sum);
104 xz_error_rate = pauli_error_rate * (xz_ratio / ratio_sum);
105 yi_error_rate = pauli_error_rate * (yi_ratio / ratio_sum);
106 yx_error_rate = pauli_error_rate * (yx_ratio / ratio_sum);
107 yy_error_rate = pauli_error_rate * (yy_ratio / ratio_sum);
108 yz_error_rate = pauli_error_rate * (yz_ratio / ratio_sum);
109 zi_error_rate = pauli_error_rate * (zi_ratio / ratio_sum);
110 zx_error_rate = pauli_error_rate * (zx_ratio / ratio_sum);
111 zy_error_rate = pauli_error_rate * (zy_ratio / ratio_sum);
112 zz_error_rate = pauli_error_rate * (zz_ratio / ratio_sum);
113 }
114};
115
125
130 void setParams(double x, double y, double z) {
131 x_error_rate = x;
132 y_error_rate = y;
133 z_error_rate = z;
134 }
135};
136} // namespace quisp::backends::graph_state::types
CliffordOperator
Definition types.h:4
void setParams(double x, double y, double z)
Definition types.h:130
void setParams(double x_ratio, double y_ratio, double z_ratio, double error_rate)
Definition types.h:37
void setParams(double error_rate, double ix_ratio, double iy_ratio, double iz_ratio, double xi_ratio, double xx_ratio, double xy_ratio, double xz_ratio, double yi_ratio, double yx_ratio, double yy_ratio, double yz_ratio, double zi_ratio, double zx_ratio, double zy_ratio, double zz_ratio)
Definition types.h:71