32 #ifndef CLASSES_CODES_H_ 33 #define CLASSES_CODES_H_ 85 result = (
mket({0, 0, 0, 0, 0}) +
mket({1, 0, 0, 1, 0}) +
86 mket({0, 1, 0, 0, 1}) +
mket({1, 0, 1, 0, 0}) +
87 mket({0, 1, 0, 1, 0}) -
mket({1, 1, 0, 1, 1}) -
88 mket({0, 0, 1, 1, 0}) -
mket({1, 1, 0, 0, 0}) -
89 mket({1, 1, 1, 0, 1}) -
mket({0, 0, 0, 1, 1}) -
90 mket({1, 1, 1, 1, 0}) -
mket({0, 1, 1, 1, 1}) -
91 mket({1, 0, 0, 0, 1}) -
mket({0, 1, 1, 0, 0}) -
92 mket({1, 0, 1, 1, 1}) +
mket({0, 0, 1, 0, 1})) /
96 result = (
mket({1, 1, 1, 1, 1}) +
mket({0, 1, 1, 0, 1}) +
97 mket({1, 0, 1, 1, 0}) +
mket({0, 1, 0, 1, 1}) +
98 mket({1, 0, 1, 0, 1}) -
mket({0, 0, 1, 0, 0}) -
99 mket({1, 1, 0, 0, 1}) -
mket({0, 0, 1, 1, 1}) -
100 mket({0, 0, 0, 1, 0}) -
mket({1, 1, 1, 0, 0}) -
101 mket({0, 0, 0, 0, 1}) -
mket({1, 0, 0, 0, 0}) -
102 mket({0, 1, 1, 1, 0}) -
mket({1, 0, 0, 1, 1}) -
103 mket({0, 1, 0, 0, 0}) +
mket({1, 1, 0, 1, 0})) /
115 (
mket({0, 0, 0, 0, 0, 0, 0}) +
mket({1, 0, 1, 0, 1, 0, 1}) +
116 mket({0, 1, 1, 0, 0, 1, 1}) +
mket({1, 1, 0, 0, 1, 1, 0}) +
117 mket({0, 0, 0, 1, 1, 1, 1}) +
mket({1, 0, 1, 1, 0, 1, 0}) +
118 mket({0, 1, 1, 1, 1, 0, 0}) +
119 mket({1, 1, 0, 1, 0, 0, 1})) /
125 (
mket({1, 1, 1, 1, 1, 1, 1}) +
mket({0, 1, 0, 1, 0, 1, 0}) +
126 mket({1, 0, 0, 1, 1, 0, 0}) +
mket({0, 0, 1, 1, 0, 0, 1}) +
127 mket({1, 1, 1, 0, 0, 0, 0}) +
mket({0, 1, 0, 0, 1, 0, 1}) +
128 mket({1, 0, 0, 0, 0, 1, 1}) +
129 mket({0, 0, 1, 0, 1, 1, 0})) /
147 result =
kron(shora,
kron(shora, shora)) / std::sqrt(8.);
150 result =
kron(shorb,
kron(shorb, shorb)) / std::sqrt(8.);
Codes()
Default constructor.
Definition: codes.h:59
Singleton policy class, used internally to implement the singleton pattern via CRTP (Curiously recurr...
Definition: singleton.h:80
Eigen::VectorXcd ket
Complex (double precision) dynamic Eigen column vector.
Definition: types.h:54
Quantum++ main namespace.
Definition: codes.h:35
Type
Code types, add more codes here if needed.
Definition: codes.h:49
const Singleton class that defines quantum error correcting codes
Definition: codes.h:40
~Codes()=default
Default destructor.
[[7,1,3]] Steane qubit code
dyn_mat< typename T::Scalar > kron(const T &head)
Kronecker product.
Definition: functions.h:868
[[9,1,3]] Shor qubit code
Codeword does not exist exception.
Definition: exception.h:498
ket mket(const std::vector< idx > &mask, const std::vector< idx > &dims)
Multi-partite qudit ket.
Definition: functions.h:1405
ket codeword(Type type, idx i) const
Returns the codeword of the specified code type.
Definition: codes.h:78
std::size_t idx
Non-negative integer index.
Definition: types.h:39