Loading examples/deuteron_H2_from_fermion_expgen.cpp +12 −9 Original line number Diff line number Diff line Loading @@ -4,22 +4,25 @@ int main(int argc, char **argv) { qcor::Initialize(argc, argv); auto optimizer = qcor::getOptimizer( "nlopt", {{"nlopt-optimizer", "cobyla"}, {"nlopt-maxeval", 20}}); auto optimizer = qcor::getOptimizer("nlopt", {std::make_pair("nlopt-optimizer", "cobyla"), std::make_pair("nlopt-maxeval", 100)}); auto op = qcor::getObservable( "pauli", "5.907 - 2.1433 X0X1 - 2.1433 Y0Y1 + .21829 Z0 - 6.125 Z1"); auto observable = qcor::getObservable("pauli", std::string("5.907 - 2.1433 X0X1 " "- 2.1433 Y0Y1" "+ .21829 Z0 - 6.125 Z1")); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double x) { X(0); exp_i_theta(x, {{"fermion", "0^ 1 - 1^ 0"}}); [&](qbit q, double x) { X(q[0]); exp_i_theta(q, x, {{"fermion", "0^ 1 - 1^ 0"}}); }, op, optimizer); observable, optimizer, 0.0); }); auto results = future.get(); auto energy = mpark::get<double>(results->getInformation("opt-val")); auto energy = results->getInformation("opt-val").as<double>(); std::cout << "Results: " << energy << "\n"; } examples/deuteron_H3_expgen.cpp +10 −9 Original line number Diff line number Diff line Loading @@ -4,20 +4,21 @@ int main(int argc, char **argv) { qcor::Initialize(argc, argv); auto optimizer = qcor::getOptimizer( "nlopt", {{"nlopt-optimizer", "cobyla"}, {"nlopt-maxeval", 20}}); auto optimizer = qcor::getOptimizer("nlopt", {std::make_pair("nlopt-optimizer", "cobyla"), std::make_pair("nlopt-maxeval", 2000)}); auto op = qcor::getObservable( "pauli", "5.907 - 2.1433 X0X1 - 2.1433 Y0Y1 + .21829 Z0 - 6.125 Z1 + 9.625 - 9.625 Z2 - 3.91 X1 X2 - 3.91 Y1 Y2"); auto observable = qcor::getObservable("pauli", std::string("5.907 - 2.1433 X0X1 - 2.1433 Y0Y1 + .21829 Z0 - 6.125 Z1 + 9.625 - 9.625 Z2 - 3.91 X1 X2 - 3.91 Y1 Y2")); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double t0, double t1) { X(0); exp_i_theta(t0, {{"pauli", "X0 Y1 - Y0 X1"}}); exp_i_theta(t1, {{"pauli", "X0 Z1 Y2 - X2 Z1 Y0"}}); [&](qbit q, double t0, double t1) { X(q[0]); exp_i_theta(q, t0, {{"pauli", "X0 Y1 - Y0 X1"}}); exp_i_theta(q, t1, {{"pauli", "X0 Z1 Y2 - X2 Z1 Y0"}}); }, op, optimizer); observable, optimizer, 0.0, 0.0); }); auto results = future.get(); Loading examples/h2_hwe_vqe.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -13,15 +13,15 @@ H 0.00000 0.00000 0.00000 H 0.00000 0.00000 0.7474)geom"; auto op = qcor::getObservable("chemistry", {{"basis", "sto-3g"}, {"geometry", geom}}); {std::make_pair("basis", "sto-3g"), std::make_pair("geometry", geom)}); int nq = op->nBits(); std::vector<std::pair<int, int>> coupling{{0, 1}, {1, 2}, {2, 3}}; auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](std::vector<double> x) { hwe(x, {{"n-qubits", nq}, {"layers", 1}, {"coupling", coupling}}); [&](qbit q, std::vector<double> x) { hwe(q, x, {{"n-qubits", nq}, {"layers", 1}, {"coupling", coupling}}); }, op, optimizer); }); Loading examples/h2_ucc1_expgen_vqe.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -10,20 +10,19 @@ int main(int argc, char **argv) { auto geom = R"geom(2 H 0.00000 0.00000 0.00000 H 0.00000 0.00000 0.7474 )geom"; H 0.00000 0.00000 0.7474)geom"; auto op = qcor::getObservable("chemistry", {{"basis", "sto-3g"}, {"geometry", geom}}); {std::make_pair("basis", "sto-3g"), std::make_pair("geometry", geom)}); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double x) { X(0); X(2); exp_i_theta(x, {{"pauli", "Y0 X1 X2 X3"}}); [&](qbit q, double x) { X(q[0]); X(q[2]); exp_i_theta(q, x, {{"pauli", "Y0 X1 X2 X3"}}); }, op, optimizer); op, optimizer, 0.0); }); auto results = future.get(); Loading examples/h2_ucc1_vqe.cpp +25 −23 Original line number Diff line number Diff line Loading @@ -4,8 +4,9 @@ int main(int argc, char **argv) { qcor::Initialize(argc, argv); auto optimizer = qcor::getOptimizer( "nlopt", {{"nlopt-optimizer", "cobyla"}, {"nlopt-maxeval", 1000}}); auto optimizer = qcor::getOptimizer("nlopt", {std::make_pair("nlopt-optimizer", "cobyla"), std::make_pair("nlopt-maxeval", 2000)}); auto geom = R"geom(2 Loading @@ -13,33 +14,34 @@ H 0.00000 0.00000 0.00000 H 0.00000 0.00000 0.7474)geom"; auto op = qcor::getObservable("chemistry", {{"basis", "sto-3g"}, {"geometry", geom}}); {std::make_pair("basis", "sto-3g"), std::make_pair("geometry", geom)}); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double x) { X(0); X(2); Rx(1.57,0); H(1); H(2); H(3); CX(0,1); CX(1,2); CX(2,3); Rz(x, 3); CX(2,3); CX(1,2); CX(0,1); Rx(-1.57,0); H(1); H(2); H(3); [&](qbit q, double x) { X(q[0]); X(q[2]); Rx(q[0], 1.57); H(q[1]); H(q[2]); H(q[3]); CX(q[0],q[1]); CX(q[1],q[2]); CX(q[2],q[3]); Rz(q[3], x); CX(q[2],q[3]); CX(q[1],q[2]); CX(q[0],q[1]); Rx(q[0], -1.57); H(q[1]); H(q[2]); H(q[3]); }, op, optimizer); op, optimizer, 0.0); }); auto results = future.get(); auto energy = mpark::get<double>(results->getInformation("opt-val")); auto energy = results->getInformation("opt-val").as<double>() std::cout << "Results: " << energy << "\n"; // results->print(); } Loading
examples/deuteron_H2_from_fermion_expgen.cpp +12 −9 Original line number Diff line number Diff line Loading @@ -4,22 +4,25 @@ int main(int argc, char **argv) { qcor::Initialize(argc, argv); auto optimizer = qcor::getOptimizer( "nlopt", {{"nlopt-optimizer", "cobyla"}, {"nlopt-maxeval", 20}}); auto optimizer = qcor::getOptimizer("nlopt", {std::make_pair("nlopt-optimizer", "cobyla"), std::make_pair("nlopt-maxeval", 100)}); auto op = qcor::getObservable( "pauli", "5.907 - 2.1433 X0X1 - 2.1433 Y0Y1 + .21829 Z0 - 6.125 Z1"); auto observable = qcor::getObservable("pauli", std::string("5.907 - 2.1433 X0X1 " "- 2.1433 Y0Y1" "+ .21829 Z0 - 6.125 Z1")); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double x) { X(0); exp_i_theta(x, {{"fermion", "0^ 1 - 1^ 0"}}); [&](qbit q, double x) { X(q[0]); exp_i_theta(q, x, {{"fermion", "0^ 1 - 1^ 0"}}); }, op, optimizer); observable, optimizer, 0.0); }); auto results = future.get(); auto energy = mpark::get<double>(results->getInformation("opt-val")); auto energy = results->getInformation("opt-val").as<double>(); std::cout << "Results: " << energy << "\n"; }
examples/deuteron_H3_expgen.cpp +10 −9 Original line number Diff line number Diff line Loading @@ -4,20 +4,21 @@ int main(int argc, char **argv) { qcor::Initialize(argc, argv); auto optimizer = qcor::getOptimizer( "nlopt", {{"nlopt-optimizer", "cobyla"}, {"nlopt-maxeval", 20}}); auto optimizer = qcor::getOptimizer("nlopt", {std::make_pair("nlopt-optimizer", "cobyla"), std::make_pair("nlopt-maxeval", 2000)}); auto op = qcor::getObservable( "pauli", "5.907 - 2.1433 X0X1 - 2.1433 Y0Y1 + .21829 Z0 - 6.125 Z1 + 9.625 - 9.625 Z2 - 3.91 X1 X2 - 3.91 Y1 Y2"); auto observable = qcor::getObservable("pauli", std::string("5.907 - 2.1433 X0X1 - 2.1433 Y0Y1 + .21829 Z0 - 6.125 Z1 + 9.625 - 9.625 Z2 - 3.91 X1 X2 - 3.91 Y1 Y2")); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double t0, double t1) { X(0); exp_i_theta(t0, {{"pauli", "X0 Y1 - Y0 X1"}}); exp_i_theta(t1, {{"pauli", "X0 Z1 Y2 - X2 Z1 Y0"}}); [&](qbit q, double t0, double t1) { X(q[0]); exp_i_theta(q, t0, {{"pauli", "X0 Y1 - Y0 X1"}}); exp_i_theta(q, t1, {{"pauli", "X0 Z1 Y2 - X2 Z1 Y0"}}); }, op, optimizer); observable, optimizer, 0.0, 0.0); }); auto results = future.get(); Loading
examples/h2_hwe_vqe.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -13,15 +13,15 @@ H 0.00000 0.00000 0.00000 H 0.00000 0.00000 0.7474)geom"; auto op = qcor::getObservable("chemistry", {{"basis", "sto-3g"}, {"geometry", geom}}); {std::make_pair("basis", "sto-3g"), std::make_pair("geometry", geom)}); int nq = op->nBits(); std::vector<std::pair<int, int>> coupling{{0, 1}, {1, 2}, {2, 3}}; auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](std::vector<double> x) { hwe(x, {{"n-qubits", nq}, {"layers", 1}, {"coupling", coupling}}); [&](qbit q, std::vector<double> x) { hwe(q, x, {{"n-qubits", nq}, {"layers", 1}, {"coupling", coupling}}); }, op, optimizer); }); Loading
examples/h2_ucc1_expgen_vqe.cpp +8 −9 Original line number Diff line number Diff line Loading @@ -10,20 +10,19 @@ int main(int argc, char **argv) { auto geom = R"geom(2 H 0.00000 0.00000 0.00000 H 0.00000 0.00000 0.7474 )geom"; H 0.00000 0.00000 0.7474)geom"; auto op = qcor::getObservable("chemistry", {{"basis", "sto-3g"}, {"geometry", geom}}); {std::make_pair("basis", "sto-3g"), std::make_pair("geometry", geom)}); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double x) { X(0); X(2); exp_i_theta(x, {{"pauli", "Y0 X1 X2 X3"}}); [&](qbit q, double x) { X(q[0]); X(q[2]); exp_i_theta(q, x, {{"pauli", "Y0 X1 X2 X3"}}); }, op, optimizer); op, optimizer, 0.0); }); auto results = future.get(); Loading
examples/h2_ucc1_vqe.cpp +25 −23 Original line number Diff line number Diff line Loading @@ -4,8 +4,9 @@ int main(int argc, char **argv) { qcor::Initialize(argc, argv); auto optimizer = qcor::getOptimizer( "nlopt", {{"nlopt-optimizer", "cobyla"}, {"nlopt-maxeval", 1000}}); auto optimizer = qcor::getOptimizer("nlopt", {std::make_pair("nlopt-optimizer", "cobyla"), std::make_pair("nlopt-maxeval", 2000)}); auto geom = R"geom(2 Loading @@ -13,33 +14,34 @@ H 0.00000 0.00000 0.00000 H 0.00000 0.00000 0.7474)geom"; auto op = qcor::getObservable("chemistry", {{"basis", "sto-3g"}, {"geometry", geom}}); {std::make_pair("basis", "sto-3g"), std::make_pair("geometry", geom)}); auto future = qcor::submit([&](qcor::qpu_handler &qh) { qh.vqe( [&](double x) { X(0); X(2); Rx(1.57,0); H(1); H(2); H(3); CX(0,1); CX(1,2); CX(2,3); Rz(x, 3); CX(2,3); CX(1,2); CX(0,1); Rx(-1.57,0); H(1); H(2); H(3); [&](qbit q, double x) { X(q[0]); X(q[2]); Rx(q[0], 1.57); H(q[1]); H(q[2]); H(q[3]); CX(q[0],q[1]); CX(q[1],q[2]); CX(q[2],q[3]); Rz(q[3], x); CX(q[2],q[3]); CX(q[1],q[2]); CX(q[0],q[1]); Rx(q[0], -1.57); H(q[1]); H(q[2]); H(q[3]); }, op, optimizer); op, optimizer, 0.0); }); auto results = future.get(); auto energy = mpark::get<double>(results->getInformation("opt-val")); auto energy = results->getInformation("opt-val").as<double>() std::cout << "Results: " << energy << "\n"; // results->print(); }