9 #ifndef QNLP_HAMMING_ROTY 10 #define QNLP_HAMMING_ROTY 25 template <
class SimulatorType>
29 using Mat2x2Type = decltype(std::declval<SimulatorType>().getGateX());
70 auto Ry = qSim.getGateI();
72 Ry(0,0) = std::complex<double>( cos(theta/2), 0.);
73 Ry(0,1) = std::complex<double>(-sin(theta/2), 0.);
74 Ry(1,0) = std::complex<double>( sin(theta/2), 0.);
75 Ry(1,1) = std::complex<double>( cos(theta/2), 0.);
77 qSim.addUToCache(
"RY", Ry);
109 for(std::size_t i = 0; i <
reg_memory.size(); i++){
~HammingDistance()
Destroy the Hamming Distance Rot Y object.
HammingDistance(const std::size_t len_bin_pattern_)
Construct a new Hamming Distance Rot Y object.
Class definition for implementing the Hamming distance routine along with controlled Y rotations to e...
decltype(std::declval< SimulatorType >().getGateX()) Mat2x2Type
static void computeHammingDistanceRotY(SimulatorType &qSim, const std::vector< std::size_t > ®_memory, const std::vector< std::size_t > ®_auxiliary, std::size_t len_bin_pattern)
Computes Hamming Distance; adjusts each state's amplitude proportional to the Hamming distance betwee...
HammingDistance()=delete
Construct a new Hamming Distance Rot Y object (disabled)
static void computeHammingDistanceOverwriteAux(SimulatorType &qSim, const std::vector< std::size_t > ®_memory, const std::vector< std::size_t > ®_auxiliary)
Computes Hamming Distance; Overwrites the pattern in reg_auxiliary to track bit differences from reg_...
std::size_t len_bin_pattern