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.