| 243 | return true; |
| 244 | } |
| 245 | static bool test_schmidt_encoding() |
| 246 | { |
| 247 | auto qvm = new CPUQVM(); |
| 248 | qvm->init(); |
| 249 | 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 }; |
| 250 | //std::vector<double>data{ 0.15311858100051695,-0.0961350374871273,0.3859320687001368,-0.5634457467385428,0.1474901012487757,-0.45185782723129864,0.32284355187278985,-0.4132085412578166 }; |
| 251 | //std::vector<double>data{ 0.6793113376921358, 0.1376859100584252, 0.720435424880283, 0.02348393561289133}; |
| 252 | |
| 253 | QProg prog; |
| 254 | auto q = qvm->qAllocMany(4); |
| 255 | //auto circuit = QCircuit(); |
| 256 | //circuit << H(q[0]); |
| 257 | //QStat q_mat(16); |
| 258 | //q_mat[0] = (qcomplex_t)1.0; |
| 259 | //q_mat[5]= (qcomplex_t)1.0; |
| 260 | //q_mat[11] = (qcomplex_t)1.0; |
| 261 | //q_mat[14] = (qcomplex_t)1.0; |
| 262 | //circuit << QOracle(q, q_mat); |
| 263 | Encode encode_b; |
| 264 | encode_b.schmidt_encode(q, data); |
| 265 | prog << encode_b.get_circuit() << BARRIER(q); |
| 266 | std::cout << prog << std::endl; |
| 267 | //std::cout<< convert_qprog_to_originir(prog, qvm)<<std::endl; |
| 268 | QVec out_qubits = encode_b.get_out_qubits(); |
| 269 | //auto result = qvm->probRunDict(prog, q, -1); |
| 270 | qvm->directlyRun(prog); |
| 271 | auto result = qvm->getQState(); |
| 272 | int k = 0; |
| 273 | /*double normalization_constant = encode_b.get_normalization_constant();*/ |
| 274 | for (auto &val : result) |
| 275 | { |
| 276 | //double temp = k >= (int)data.size() ? 0 : data[k]; |
| 277 | std::cout << "Amplitude:" << val << "," << "Originial value:" << data[k] << std::endl; |
| 278 | ++k; |
| 279 | } |
| 280 | destroyQuantumMachine(qvm); |
| 281 | return true; |
| 282 | } |
| 283 | static bool test_mps_encoding() |
| 284 | { |
| 285 | auto qvm = new CPUQVM(); |
no test coverage detected