Loading examples/CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ add_qcor_compile_and_exe_test(qrt_qpu_lambda_bell qpu_lambda/lambda_test_bell.cp add_qcor_compile_and_exe_test(qrt_qpu_lambda_grover qpu_lambda/grover_lambda_oracle.cpp) 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) # Arithmetic tests add_qcor_compile_and_exe_test(qrt_qpu_arith_adder arithmetic/simple.cpp) Loading examples/qpu_lambda/deuteron_vqe_obj_func.cpp +13 −7 Original line number Diff line number Diff line Loading @@ -4,12 +4,16 @@ int main() { // Create the Hamiltonian auto H = -2.1433 * X(0) * X(1) - 2.1433 * Y(0) * Y(1) + .21829 * Z(0) - 6.125 * Z(1) + 5.907; auto ansatz = qpu_lambda([](qreg q, double x) { int iter_count = 0; auto ansatz = qpu_lambda( [](qreg q, double x) { X(q[0]); Ry(q[1], x); CX(q[1], q[0]); }); print("Iter", iter_count, "; angle = ", x); iter_count++; }, iter_count); auto q = qalloc(2); auto objective = createObjectiveFunction(ansatz, H, q, 1); Loading @@ -19,6 +23,7 @@ int main() { // Optimize the above function auto [optval, opt_params] = optimizer->optimize(*objective.get()); std::cout << "Energy: " << optval << "\n"; qcor_expect(std::abs(optval + 1.74886) < 0.1); auto ansatz_vec_param = qpu_lambda([](qreg q, std::vector<double> x) { X(q[0]); Loading @@ -30,6 +35,7 @@ int main() { auto objective_vec = createObjectiveFunction(ansatz_vec_param, H, q1, 1); // Optimize the above function auto [optval_vec, opt_params_vec] = optimizer->optimize(*objective.get()); auto [optval_vec, opt_params_vec] = optimizer->optimize(*objective_vec.get()); std::cout << "Energy: " << optval_vec << "\n"; qcor_expect(std::abs(optval_vec + 1.74886) < 0.1); } No newline at end of file runtime/objectives/objective_function.hpp +3 −3 Original line number Diff line number Diff line Loading @@ -180,10 +180,10 @@ public: std::shared_ptr<ObjectiveFunction> obj_helper, const int dim, HeterogeneousMap opts) : qreg(qq) { std::cout << "Constructed from lambda\n"; // std::cout << "Constructed from lambda\n"; lambda_kernel_evaluator = [&, functor](std::vector<double> x) -> std::shared_ptr<CompositeInstruction> { std::cout << "HOWDY:\n"; // std::cout << "HOWDY:\n"; // Create a new CompositeInstruction, and create a tuple // from it so we can concatenate with the tuple args auto m_kernel = create_new_composite(); Loading @@ -196,7 +196,7 @@ public: auto concatenated = std::tuple_cat(kernel_composite_tuple, translated_tuple); std::apply(functor, concatenated); std::cout << m_kernel->toString() << "\n"; // std::cout << m_kernel->toString() << "\n"; return m_kernel; }; observable = obs; Loading Loading
examples/CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ add_qcor_compile_and_exe_test(qrt_qpu_lambda_bell qpu_lambda/lambda_test_bell.cp add_qcor_compile_and_exe_test(qrt_qpu_lambda_grover qpu_lambda/grover_lambda_oracle.cpp) 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) # Arithmetic tests add_qcor_compile_and_exe_test(qrt_qpu_arith_adder arithmetic/simple.cpp) Loading
examples/qpu_lambda/deuteron_vqe_obj_func.cpp +13 −7 Original line number Diff line number Diff line Loading @@ -4,12 +4,16 @@ int main() { // Create the Hamiltonian auto H = -2.1433 * X(0) * X(1) - 2.1433 * Y(0) * Y(1) + .21829 * Z(0) - 6.125 * Z(1) + 5.907; auto ansatz = qpu_lambda([](qreg q, double x) { int iter_count = 0; auto ansatz = qpu_lambda( [](qreg q, double x) { X(q[0]); Ry(q[1], x); CX(q[1], q[0]); }); print("Iter", iter_count, "; angle = ", x); iter_count++; }, iter_count); auto q = qalloc(2); auto objective = createObjectiveFunction(ansatz, H, q, 1); Loading @@ -19,6 +23,7 @@ int main() { // Optimize the above function auto [optval, opt_params] = optimizer->optimize(*objective.get()); std::cout << "Energy: " << optval << "\n"; qcor_expect(std::abs(optval + 1.74886) < 0.1); auto ansatz_vec_param = qpu_lambda([](qreg q, std::vector<double> x) { X(q[0]); Loading @@ -30,6 +35,7 @@ int main() { auto objective_vec = createObjectiveFunction(ansatz_vec_param, H, q1, 1); // Optimize the above function auto [optval_vec, opt_params_vec] = optimizer->optimize(*objective.get()); auto [optval_vec, opt_params_vec] = optimizer->optimize(*objective_vec.get()); std::cout << "Energy: " << optval_vec << "\n"; qcor_expect(std::abs(optval_vec + 1.74886) < 0.1); } No newline at end of file
runtime/objectives/objective_function.hpp +3 −3 Original line number Diff line number Diff line Loading @@ -180,10 +180,10 @@ public: std::shared_ptr<ObjectiveFunction> obj_helper, const int dim, HeterogeneousMap opts) : qreg(qq) { std::cout << "Constructed from lambda\n"; // std::cout << "Constructed from lambda\n"; lambda_kernel_evaluator = [&, functor](std::vector<double> x) -> std::shared_ptr<CompositeInstruction> { std::cout << "HOWDY:\n"; // std::cout << "HOWDY:\n"; // Create a new CompositeInstruction, and create a tuple // from it so we can concatenate with the tuple args auto m_kernel = create_new_composite(); Loading @@ -196,7 +196,7 @@ public: auto concatenated = std::tuple_cat(kernel_composite_tuple, translated_tuple); std::apply(functor, concatenated); std::cout << m_kernel->toString() << "\n"; // std::cout << m_kernel->toString() << "\n"; return m_kernel; }; observable = obs; Loading