| 394 | } |
| 395 | |
| 396 | static bool test_iqp_Amplitude_encoding() |
| 397 | { |
| 398 | auto qvm = new CPUQVM(); |
| 399 | qvm->init(); |
| 400 | //std::vector<double>data{ -0.33164128327780906,-0.23433373435840027,-0.00022877626650846954,0.3466895582845477,0.36968371696590785,-0.21966111818142703,-0.28122454968118343,0.2954805505078439,0.2060812114310625,0.28816304973225565,0.13470785340813266,0.06207383012753573,-0.14157790059772607,0.15044744783305566,-0.28050173370498876,-0.3077795693383025 }; |
| 401 | //std::vector<double>data{ 0.15311858100051695,-0.0961350374871273,0.3859320687001368,-0.5634457467385428,0.1474901012487757,-0.45185782723129864,0.32284355187278985,-0.4132085412578166 }; |
| 402 | std::vector<double>data{ -1.45, 3, 2, -0.05 }; |
| 403 | QProg prog; |
| 404 | auto q = qvm->qAllocMany(data.size()); |
| 405 | Encode encode_b; |
| 406 | encode_b.iqp_encode(q, data); |
| 407 | prog << encode_b.get_circuit() << BARRIER(q); |
| 408 | std::cout << prog << std::endl; |
| 409 | QVec out_qubits = encode_b.get_out_qubits(); |
| 410 | auto result = qvm->probRunDict(prog, out_qubits, -1); |
| 411 | //qvm->directlyRun(prog); |
| 412 | //auto result = qvm->getQState(); |
| 413 | int k = 0; |
| 414 | //double normalization_constant = encode_b.get_normalization_constant(); |
| 415 | for (auto &val : result) |
| 416 | { |
| 417 | double temp = k >= (int)data.size() ? 0 : data[k]; |
| 418 | std::cout << val.first << ':' << val.second << std::endl; |
| 419 | ++k; |
| 420 | } |
| 421 | destroyQuantumMachine(qvm); |
| 422 | return true; |
| 423 | } |
| 424 | |
| 425 | static bool test_Amplitude_encoding1() |
| 426 | { |
no test coverage detected