| 618 | } |
| 619 | |
| 620 | QCircuit FourierADD(QVec &result, size_t a, size_t b) |
| 621 | { |
| 622 | auto circuit = QCircuit(); |
| 623 | std::vector<double> angles(b, 0); |
| 624 | getAngles(a, b, angles); |
| 625 | circuit << QFT(result); |
| 626 | |
| 627 | for (int i = 0; i < result.size(); i++) |
| 628 | { |
| 629 | circuit << RZ(result[i], angles[b - i - 1]); |
| 630 | } |
| 631 | circuit << QFT(result).dagger(); |
| 632 | return circuit; |
| 633 | } |
| 634 | |
| 635 | |
| 636 | QPANDA_END |