Commit 569cea20 authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Added U1 gate to QRT



Also, using U1 in the arithmetic example.

Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 7774f354
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -104,8 +104,7 @@ __qpu__ void phiAdd(qreg q, int a, int startBitIdx, int nbQubits, int inverse) {
    int opCount = (abs(theta) < eps) ? 0 : 1;
    for (int ii = 0; ii < opCount; ++ii) {
      int idx = startBitIdx + i;
      // We don't have U1 op, hence use Rz instead
      Rz(q[idx], theta);
      U1(q[idx], theta);
    }
  }
}
+1 −0
Original line number Diff line number Diff line
@@ -106,6 +106,7 @@ public:
  void visit(Rz &rz) override { addOneQubitGate("rz", rz); }
  void visit(Ry &ry) override { addOneQubitGate("ry", ry); }
  void visit(Rx &rx) override { addOneQubitGate("rx", rx); }
  void visit(U1 &u1) override { addOneQubitGate("u1", u1); }
  void visit(X &x) override { addOneQubitGate("x", x); }
  void visit(Y &y) override { addOneQubitGate("y", y); }
  void visit(Z &z) override { addOneQubitGate("z", z); }
+4 −0
Original line number Diff line number Diff line
@@ -102,6 +102,10 @@ void rz(const qubit &qidx, const double theta) {
  one_qubit_inst("Rz", qidx, {theta});
}

void u1(const qubit &qidx, const double theta) {
  one_qubit_inst("U1", qidx, {theta});
}

void mz(const qubit &qidx) { one_qubit_inst("Measure", qidx); }

void cnot(const qubit &src_idx, const qubit &tgt_idx) {
+2 −0
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ void tdg(const qubit& qidx);
void rx(const qubit &qidx, const double theta);
void ry(const qubit &qidx, const double theta);
void rz(const qubit &qidx, const double theta);
// U1(theta) gate
void u1(const qubit &qidx, const double theta);

void mz(const qubit &qidx);