MCPcopy Create free account
hub / github.com/OriginQ/QPanda-2 / QDiv

Function QDiv

QAlg/ArithmeticUnit/ArithmeticUnit.cpp:264–283  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

262}
263
264QProg QDiv(QVec& a, QVec& b, QVec& c, QVec& k, ClassicalCondition& t)
265{
266 auto len = a.size();
267 QProg prog;
268 prog << CNOT(a[len - 1], k[len * 2 + 2])
269 << CNOT(b[len - 1], k[len * 2 + 3]);
270 prog << CNOT(k[len * 2 + 2], a[len - 1])
271 << CNOT(k[len * 2 + 3], b[len - 1]);
272 prog << QDivider(a, b, c, k, t);
273 QCircuit circ;
274 circ << X(c[len - 1]);
275 prog << CNOT(k[len * 2 + 2], k[len * 2 + 3]);
276 prog << circ.control(k[len * 2 + 3]);
277 prog << CNOT(k[len * 2 + 2], k[len * 2 + 3]);
278 prog << CNOT(k[len * 2 + 2], a[len - 1])
279 << CNOT(k[len * 2 + 3], b[len - 1]);
280 prog << CNOT(a[len - 1], k[len * 2 + 2])
281 << CNOT(b[len - 1], k[len * 2 + 3]);
282 return prog;
283}
284
285QProg QDivider(
286 QVec& a,

Callers 2

test_QDivFunction · 0.50
test_QDivWithAccuracyFunction · 0.50

Calls 5

CNOTClass · 0.85
XClass · 0.85
QDividerFunction · 0.70
sizeMethod · 0.45
controlMethod · 0.45

Tested by 2

test_QDivFunction · 0.40
test_QDivWithAccuracyFunction · 0.40