14 this->SubmitGate({FusionGate::Kind::kPhaseGateType, {q0}, {p0}, {}});
19 this->SubmitGate({FusionGate::Kind::kXGateType, {q0}, {}, {}});
24 this->SubmitGate({FusionGate::Kind::kYGateType, {q0}, {}, {}});
29 this->SubmitGate({FusionGate::Kind::kZGateType, {q0}, {}, {}});
34 this->SubmitGate({FusionGate::Kind::kHadamardGateType, {q0}, {}, {}});
39 this->SubmitGate({FusionGate::Kind::kSGateType, {q0}, {}, {}});
44 this->SubmitGate({FusionGate::Kind::kSdgGateType, {q0}, {}, {}});
49 this->SubmitGate({FusionGate::Kind::kTGateType, {q0}, {}, {}});
54 this->SubmitGate({FusionGate::Kind::kTdgGateType, {q0}, {}, {}});
59 this->SubmitGate({FusionGate::Kind::kSxGateType, {q0}, {}, {}});
64 this->SubmitGate({FusionGate::Kind::kSxDagGateType, {q0}, {}, {}});
69 this->SubmitGate({FusionGate::Kind::kKGateType, {q0}, {}, {}});
74 this->SubmitGate({FusionGate::Kind::kRxGateType, {q0}, {p0}, {}});
79 this->SubmitGate({FusionGate::Kind::kRyGateType, {q0}, {p0}, {}});
84 this->SubmitGate({FusionGate::Kind::kRzGateType, {q0}, {p0}, {}});
89 this->SubmitGate({FusionGate::Kind::kUGateType, {q0}, {p0, p1, p2, p3}, {}});
94 this->SubmitGate({FusionGate::Kind::kSwapGateType, {q0, q1}, {}, {}});
99 this->SubmitGate({FusionGate::Kind::kCXGateType, {q0, q1}, {}, {}});
104 this->SubmitGate({FusionGate::Kind::kCYGateType, {q0, q1}, {}, {}});
109 this->SubmitGate({FusionGate::Kind::kCZGateType, {q0, q1}, {}, {}});
114 this->SubmitGate({FusionGate::Kind::kCPGateType, {q0, q1}, {p0}, {}});
119 this->SubmitGate({FusionGate::Kind::kCRxGateType, {q0, q1}, {p0}, {}});
124 this->SubmitGate({FusionGate::Kind::kCRyGateType, {q0, q1}, {p0}, {}});
129 this->SubmitGate({FusionGate::Kind::kCRzGateType, {q0, q1}, {p0}, {}});
134 this->SubmitGate({FusionGate::Kind::kCHGateType, {q0, q1}, {}, {}});
139 this->SubmitGate({FusionGate::Kind::kCSxGateType, {q0, q1}, {}, {}});
144 this->SubmitGate({FusionGate::Kind::kCSxDagGateType, {q0, q1}, {}, {}});
149 this->SubmitGate({FusionGate::Kind::kCUGateType, {q0, q1}, {p0, p1, p2, p3}, {}});
154 this->SubmitGate({FusionGate::Kind::kCSwapGateType, {q0, q1, q2}, {}, {}});
159 this->SubmitGate({FusionGate::Kind::kCCXGateType, {q0, q1, q2}, {}, {}});
164 this->SubmitGate({FusionGate::Kind::kNone, {q}, {}, m});
169 this->SubmitGate({FusionGate::Kind::kNone, {a, b}, {}, m});
174 this->SubmitGate({FusionGate::Kind::kNone, {a, b, c}, {}, m});
179 this->FlushPendingGates();
180 this->immediate_->ApplyNop();
182 this->NotifyObservers({});
Eigen::Matrix< std::complex< double >, 8, 8 > Matrix8cd
void ApplyK(Types::qubit_t q0) override
void ApplyGenericThreeQubitGate(Types::qubit_t a, Types::qubit_t b, Types::qubit_t c, const ISimulator::Matrix8cd &m) override
void ApplyCRx(Types::qubit_t q0, Types::qubit_t q1, double p0) override
void ApplyT(Types::qubit_t q0) override
void ApplySx(Types::qubit_t q0) override
void ApplyCX(Types::qubit_t q0, Types::qubit_t q1) override
void ApplyCRz(Types::qubit_t q0, Types::qubit_t q1, double p0) override
void ApplyCU(Types::qubit_t q0, Types::qubit_t q1, double p0, double p1, double p2, double p3) override
void ApplyU(Types::qubit_t q0, double p0, double p1, double p2, double p3) override
void ApplyCRy(Types::qubit_t q0, Types::qubit_t q1, double p0) override
void ApplyH(Types::qubit_t q0) override
void ApplyP(Types::qubit_t q0, double p0) override
void ApplyCY(Types::qubit_t q0, Types::qubit_t q1) override
void ApplyRz(Types::qubit_t q0, double p0) override
void ApplyGenericTwoQubitGate(Types::qubit_t a, Types::qubit_t b, const Eigen::Matrix4cd &m) override
void ApplySDG(Types::qubit_t q0) override
void ApplyY(Types::qubit_t q0) override
void ApplyTDG(Types::qubit_t q0) override
void ApplyCH(Types::qubit_t q0, Types::qubit_t q1) override
void ApplyS(Types::qubit_t q0) override
void ApplyRx(Types::qubit_t q0, double p0) override
void ApplyCSwap(Types::qubit_t q0, Types::qubit_t q1, Types::qubit_t q2) override
void ApplyX(Types::qubit_t q0) override
void ApplyCZ(Types::qubit_t q0, Types::qubit_t q1) override
void ApplySxDAG(Types::qubit_t q0) override
void ApplyRy(Types::qubit_t q0, double p0) override
void ApplyCP(Types::qubit_t q0, Types::qubit_t q1, double p0) override
void ApplyZ(Types::qubit_t q0) override
void ApplyCSxDAG(Types::qubit_t q0, Types::qubit_t q1) override
void ApplySwap(Types::qubit_t q0, Types::qubit_t q1) override
void ApplyGenericOneQubitGate(Types::qubit_t q, const Eigen::Matrix2cd &m) override
void ApplyCSx(Types::qubit_t q0, Types::qubit_t q1) override
void ApplyCCX(Types::qubit_t q0, Types::qubit_t q1, Types::qubit_t q2) override
@ kNoOp
no operation, just a placeholder, could be used to erase some operation from a circuit
uint_fast64_t qubit_t
The type of a qubit.