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

Function test_schmidt_encoding

test/QAlg/Encode.test.cpp:245–282  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

243 return true;
244}
245static 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}
283static bool test_mps_encoding()
284{
285 auto qvm = new CPUQVM();

Callers 1

TESTFunction · 0.85

Calls 8

BARRIERClass · 0.85
initMethod · 0.45
qAllocManyMethod · 0.45
schmidt_encodeMethod · 0.45
get_circuitMethod · 0.45
get_out_qubitsMethod · 0.45
directlyRunMethod · 0.45
getQStateMethod · 0.45

Tested by

no test coverage detected