Commit 3c08179f authored by Mccaskey, Alex's avatar Mccaskey, Alex
Browse files

updating examples

parent 8356c7f0
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -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";
}
+10 −9
Original line number Diff line number Diff line
@@ -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();
+3 −3
Original line number Diff line number Diff line
@@ -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);
  });
+8 −9
Original line number Diff line number Diff line
@@ -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();
+25 −23
Original line number Diff line number Diff line
@@ -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

@@ -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();
}