Loading examples/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ add_qcor_compile_and_exe_test(qrt_qpu_lambda_grover qpu_lambda/grover_lambda_ora add_qcor_compile_and_exe_test(qrt_qpu_lambdas_in_loop qpu_lambda/deuteron_lambda.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_deuteron qpu_lambda/deuteron_vqe.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_objfunc qpu_lambda/deuteron_vqe_obj_func.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_hadamard_test ctrl-gates/hadamard_test.cpp) # Arithmetic tests add_qcor_compile_and_exe_test(qrt_qpu_arith_adder arithmetic/simple.cpp) Loading examples/ctrl-gates/hadamard_test.cpp 0 → 100644 +36 −0 Original line number Diff line number Diff line #include <qcor_hadamard_test> using FO = FermionOperator; int main() { std::vector<FermionOperator> exp_args{ -4 * adag(0) * a(0) - 4 * adag(2) * a(2) + 8 * adag(0) * a(0) * adag(2) * a(2), 0.01 * adag(0) * a(1) + .01 * adag(3) * a(2) + .01 * adag(1) * a(0) + .01 * adag(2) * a(3)}; std::vector<double> trot_params{1.0, 1, 3}; auto sp = qpu_lambda([](qreg q) { X(q[0]); X(q[1]); }); auto unitary = qpu_lambda( [&](qreg q) { auto dt = trot_params[0]; auto num_trot_steps = trot_params[1]; auto tot_trot_steps = trot_params[2]; double delta_t = dt / num_trot_steps; for (auto j : range(tot_trot_steps)) { for (auto i : range(num_trot_steps)) { exp_i_theta(q, .5 * delta_t, exp_args[0]); exp_i_theta(q, delta_t, exp_args[1]); exp_i_theta(q, .5 * delta_t, exp_args[0]); } } }, trot_params, exp_args); auto val = qcor::hadamard_test(sp, unitary, 4); print(val); } No newline at end of file Loading
examples/CMakeLists.txt +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ add_qcor_compile_and_exe_test(qrt_qpu_lambda_grover qpu_lambda/grover_lambda_ora add_qcor_compile_and_exe_test(qrt_qpu_lambdas_in_loop qpu_lambda/deuteron_lambda.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_deuteron qpu_lambda/deuteron_vqe.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_objfunc qpu_lambda/deuteron_vqe_obj_func.cpp) add_qcor_compile_and_exe_test(qrt_qpu_lambda_hadamard_test ctrl-gates/hadamard_test.cpp) # Arithmetic tests add_qcor_compile_and_exe_test(qrt_qpu_arith_adder arithmetic/simple.cpp) Loading
examples/ctrl-gates/hadamard_test.cpp 0 → 100644 +36 −0 Original line number Diff line number Diff line #include <qcor_hadamard_test> using FO = FermionOperator; int main() { std::vector<FermionOperator> exp_args{ -4 * adag(0) * a(0) - 4 * adag(2) * a(2) + 8 * adag(0) * a(0) * adag(2) * a(2), 0.01 * adag(0) * a(1) + .01 * adag(3) * a(2) + .01 * adag(1) * a(0) + .01 * adag(2) * a(3)}; std::vector<double> trot_params{1.0, 1, 3}; auto sp = qpu_lambda([](qreg q) { X(q[0]); X(q[1]); }); auto unitary = qpu_lambda( [&](qreg q) { auto dt = trot_params[0]; auto num_trot_steps = trot_params[1]; auto tot_trot_steps = trot_params[2]; double delta_t = dt / num_trot_steps; for (auto j : range(tot_trot_steps)) { for (auto i : range(num_trot_steps)) { exp_i_theta(q, .5 * delta_t, exp_args[0]); exp_i_theta(q, delta_t, exp_args[1]); exp_i_theta(q, .5 * delta_t, exp_args[0]); } } }, trot_params, exp_args); auto val = qcor::hadamard_test(sp, unitary, 4); print(val); } No newline at end of file