27 #ifndef CLASSES_CODES_H_
28 #define CLASSES_CODES_H_
83 result = (
mket({0, 0, 0, 0, 0}) +
84 mket({1, 0, 0, 1, 0}) +
85 mket({0, 1, 0, 0, 1}) +
86 mket({1, 0, 1, 0, 0}) +
87 mket({0, 1, 0, 1, 0}) -
88 mket({1, 1, 0, 1, 1}) -
89 mket({0, 0, 1, 1, 0}) -
90 mket({1, 1, 0, 0, 0}) -
91 mket({1, 1, 1, 0, 1}) -
92 mket({0, 0, 0, 1, 1}) -
93 mket({1, 1, 1, 1, 0}) -
94 mket({0, 1, 1, 1, 1}) -
95 mket({1, 0, 0, 0, 1}) -
96 mket({0, 1, 1, 0, 0}) -
97 mket({1, 0, 1, 1, 1}) +
98 mket({0, 0, 1, 0, 1}))
102 result = (
mket({1, 1, 1, 1, 1}) +
103 mket({0, 1, 1, 0, 1}) +
104 mket({1, 0, 1, 1, 0}) +
105 mket({0, 1, 0, 1, 1}) +
106 mket({1, 0, 1, 0, 1}) -
107 mket({0, 0, 1, 0, 0}) -
108 mket({1, 1, 0, 0, 1}) -
109 mket({0, 0, 1, 1, 1}) -
110 mket({0, 0, 0, 1, 0}) -
111 mket({1, 1, 1, 0, 0}) -
112 mket({0, 0, 0, 0, 1}) -
113 mket({1, 0, 0, 0, 0}) -
114 mket({0, 1, 1, 1, 0}) -
115 mket({1, 0, 0, 1, 1}) -
116 mket({0, 1, 0, 0, 0}) +
117 mket({1, 1, 0, 1, 0}))
121 throw Exception(
"qpp::Codes::codeword()",
130 result = (
mket({0, 0, 0, 0, 0, 0, 0}) +
131 mket({1, 0, 1, 0, 1, 0, 1}) +
132 mket({0, 1, 1, 0, 0, 1, 1}) +
133 mket({1, 1, 0, 0, 1, 1, 0}) +
134 mket({0, 0, 0, 1, 1, 1, 1}) +
135 mket({1, 0, 1, 1, 0, 1, 0}) +
136 mket({0, 1, 1, 1, 1, 0, 0}) +
137 mket({1, 1, 0, 1, 0, 0, 1})) /
142 result = (
mket({1, 1, 1, 1, 1, 1, 1}) +
143 mket({0, 1, 0, 1, 0, 1, 0}) +
144 mket({1, 0, 0, 1, 1, 0, 0}) +
145 mket({0, 0, 1, 1, 0, 0, 1}) +
146 mket({1, 1, 1, 0, 0, 0, 0}) +
147 mket({0, 1, 0, 0, 1, 0, 1}) +
148 mket({1, 0, 0, 0, 0, 1, 1}) +
149 mket({0, 0, 1, 0, 1, 1, 0})) /
153 throw Exception(
"qpp::Codes::codeword()",
160 shora =
mket({0, 0, 0}) +
mket({1, 1, 1,});
161 shorb =
mket({0, 0, 0}) -
mket({1, 1, 1,});
165 result =
kron(shora,
kron(shora, shora))
169 result =
kron(shorb,
kron(shorb, shorb))
173 throw Exception(
"qpp::Codes::codeword()",
Singleton policy class, used internally to implement the singleton pattern via CRTP (Curiously recurr...
Definition: singleton.h:77
Eigen::VectorXcd ket
Complex (double precision) dynamic Eigen column vector.
Definition: types.h:46
Quantum++ main namespace.
Definition: codes.h:30
Type
Code types, add more codes here if needed.
Definition: codes.h:46
const Singleton class that defines quantum error correcting codes
Definition: codes.h:37
[[7,1,3]] Steane qubit code
dyn_mat< typename T::Scalar > kron(const T &head)
Kronecker product.
Definition: functions.h:798
[[9,1,3]] Shor qubit code
Generates custom exceptions, used when validating function parameters.
Definition: exception.h:39
ket mket(const std::vector< idx > &mask, const std::vector< idx > &dims)
Multi-partite qudit ket.
Definition: functions.h:1333
std::size_t idx
Non-negative integer index.
Definition: types.h:36
ket codeword(Type type, idx i) const
Returns the codeword of the specified code type.
Definition: codes.h:73