INNER CODE UNIT · C++
single
aromanro/QCSim · QCSim/DensityMatrixTests.cpp:858
auto single = [&](char c) -> Eigen::Matrix2cd {
switch (toupper(static_cast<unsigned char>(c)))
{
case 'X':
return X;
case 'Y':
return Y;
case 'Z':
return Z;
default:
return I;
}
};
// qubit 0 is the least significant bit, so it must be the rightmost factor of the Kronecker product
Eigen::MatrixXcd result = single(pauliString[0]);
for (size_t i = 1; i < pauliString.size(); ++i)
result = Eigen::kroneckerProduct(single(pauliString[i]), result).eval();