| 91 | } |
| 92 | |
| 93 | void Encode::amplitude_encode_recursive(const QVec &q, const std::vector<double>& data) |
| 94 | { |
| 95 | vector<double>data_temp(data); |
| 96 | |
| 97 | if (!_check_normalized(data_temp)) { |
| 98 | throw run_fail("Data is not normalized"); |
| 99 | } |
| 100 | |
| 101 | if (data.size() > (1 << q.size())) |
| 102 | { |
| 103 | throw run_fail("Amplitude_encode parameter error."); |
| 104 | } |
| 105 | |
| 106 | while (data_temp.size() < (1 << q.size())) |
| 107 | { |
| 108 | data_temp.push_back(0); |
| 109 | } |
| 110 | m_qcircuit = _recursive_compute_beta(q, data_temp); |
| 111 | |
| 112 | m_out_qubits = q; |
| 113 | |
| 114 | return; |
| 115 | } |
| 116 | |
| 117 | void Encode::amplitude_encode_recursive(const QVec &qubits, const QStat& full_cur_vec) |
| 118 | { |