14 #include "catch2/catch.hpp"    28     std::size_t min_idx=0, max_idx=3;
    31     SECTION(
"Full register"){
    32         auto& r = 
sim.getQubitRegister();
    33         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
    34             REQUIRE( r.GetProbability(idx) == 0.0 );
    36         sim.applyQFT(min_idx, max_idx);
    37         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
    38             REQUIRE( r.GetProbability(idx) == Approx( sqrt( 1. / 
num_qubits ) ) );
    41     SECTION(
"Sub register"){
    42         auto& r = 
sim.getQubitRegister();
    43         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
    44             REQUIRE( r.GetProbability(idx) == 0.0 );
    46         sim.applyQFT(min_idx+1, max_idx);
    47         REQUIRE( r.GetProbability(min_idx) == 0.0 );
    48         for(std::size_t idx = min_idx+1; idx <= max_idx; idx++){
    49             REQUIRE( r.GetProbability(idx) == Approx( sqrt( 1. / (
num_qubits-1) ) ) );
    59     std::size_t min_idx=0, max_idx=3;
    62     SECTION(
"Full register"){
    63         auto& r = 
sim.getQubitRegister();
    64         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
    65             REQUIRE( r.GetProbability(idx) == 0.0 );
    67         sim.applyIQFT(min_idx, max_idx);
    68         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
    69             REQUIRE( r.GetProbability(idx) == Approx( sqrt( 1. / 
num_qubits ) ) );
    72     SECTION(
"Sub register"){
    73         auto& r = 
sim.getQubitRegister();
    74         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
    75             REQUIRE( r.GetProbability(idx) == 0.0 );
    77         sim.applyIQFT(min_idx+1, max_idx);
    78         REQUIRE( r.GetProbability(min_idx) == 0.0 );
    79         for(std::size_t idx = min_idx+1; idx <= max_idx; idx++){
    80             REQUIRE( r.GetProbability(idx) == Approx( sqrt( 1. / (
num_qubits-1) ) ) );
    90     std::size_t min_idx=0, max_idx=3;
    94     SECTION(
"Full register"){
    95         auto& r = 
sim.getQubitRegister();
    96         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
    97             REQUIRE( r.GetProbability(idx) == 0.0 );
    99         sim.applyQFT(min_idx, max_idx);
   100         sim.applyIQFT(min_idx, max_idx);
   101         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
   102             REQUIRE( r.GetProbability(idx) == 0.0 );
   105     SECTION(
"Sub register"){
   106         auto& r = 
sim.getQubitRegister();
   107         for(std::size_t idx = min_idx; idx <= max_idx; idx++){
   108             REQUIRE( r.GetProbability(idx) == 0.0 );
   110         sim.applyQFT(min_idx+1, max_idx);
   111         sim.applyIQFT(min_idx+1, max_idx);
   112         for(std::size_t idx = min_idx+1; idx <= max_idx; idx++){
   113             REQUIRE( r.GetProbability(idx) == 0.0 );
 TEST_CASE("QFT forward","[qft]")
Test: QFT forward.
 
Class definition for IntelSimulator. The purpose of this class is to map the functionality of the und...
 
Implements the forward and inverse quantum Fourier transform.