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

Method dc_amplitude_encode

QAlg/Encode/Encode.cpp:511–535  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

509}
510
511void Encode::dc_amplitude_encode(const QVec &q, const std::vector<double>& data)
512{
513 vector<double>data_temp(data);
514
515 if (!_check_normalized(data_temp)) {
516 throw run_fail("Data is not normalized");
517 }
518
519 int size = data_temp.size();
520 int log_ceil_size = std::ceil(std::log2(size));
521 if (1 << log_ceil_size > q.size() + 1) {
522 throw run_fail("Dc_Amplitude_encode parameter error.");
523 }
524 while (data_temp.size() < (1 << log_ceil_size))
525 {
526 data_temp.push_back(0);
527 }
528
529 std::vector<std::vector<double>>betas(std::log2(data_temp.size()));
530 std::vector<double>input(data_temp);
531 _recursive_compute_beta(data_temp, betas, (int)(std::log2(data_temp.size()) - 1));
532 _dc_generate_circuit(betas, q, (int)data_temp.size());
533
534 return;
535}
536
537void Encode::_index(const int value, const QVec &control_qubits, const int numberof_controls) {
538 bitset<32> temp(value);

Callers 1

Calls 5

run_failClass · 0.85
ceilFunction · 0.50
log2Function · 0.50
sizeMethod · 0.45
push_backMethod · 0.45

Tested by 1