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