<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<title>QuEST: test_operators.cpp File Reference</title>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="style.css" rel="stylesheet" type="text/css"/>
<link href='https://fonts.googleapis.com/css?family=Roboto+Slab' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="jquery.smartmenus.bootstrap.css" rel="stylesheet">
<script type="text/javascript" src="jquery.smartmenus.js"></script>
<script type="text/javascript" src="jquery.smartmenus.bootstrap.js"></script>
</head>
<body>
<nav class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand"><img alt="Logo" src="logo.png"/></a>
<a class="navbar-brand"><b>QuEST</b> v3.4.0<br>The Quantum Exact Simulation Toolkit</a>
</div>
</div>
</nav>
<div id="top">
<div class="content" id="content">
<div class="container">
<div class="row">
<div class="col-sm-12 panel " style="padding-bottom: 15px;">
<div style="margin-bottom: 15px;">
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_e145b6391efe0b6e575fd5bb5f76dbf8.html">QuEST</a></li><li class="navelem"><a class="el" href="dir_126ffd7f5d49d0bf631a939d5b00372b.html">tests</a></li> </ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">test_operators.cpp File Reference</div> </div>
</div>
<div class="contents">
<div class="textblock"><code>#include "catch.hpp"</code><br />
<code>#include "<a class="el" href="QuEST_8h_source.html">QuEST.h</a>"</code><br />
<code>#include "<a class="el" href="utilities_8hpp_source.html">utilities.hpp</a>"</code><br />
</div>
<p><a href="test__operators_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:aec8f698a7995e17e0ff1055526d2e5d4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test__operators_8cpp.html#aec8f698a7995e17e0ff1055526d2e5d4">CLEANUP_TEST</a>(quregVec, quregMatr)</td></tr>
<tr class="memdesc:aec8f698a7995e17e0ff1055526d2e5d4"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the data structures made by PREPARE_TEST. <a href="test__operators_8cpp.html#aec8f698a7995e17e0ff1055526d2e5d4">More...</a><br /></td></tr>
<tr class="separator:aec8f698a7995e17e0ff1055526d2e5d4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae34496c47ef565b741782f01e710ea2c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="test__operators_8cpp.html#ae34496c47ef565b741782f01e710ea2c">PREPARE_TEST</a>(quregVec, quregMatr, refVec, refMatr)</td></tr>
<tr class="memdesc:ae34496c47ef565b741782f01e710ea2c"><td class="mdescLeft"> </td><td class="mdescRight">Prepares the needed data structures for unit testing some operators. <a href="test__operators_8cpp.html#ae34496c47ef565b741782f01e710ea2c">More...</a><br /></td></tr>
<tr class="separator:ae34496c47ef565b741782f01e710ea2c"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaff6822e79b947a9e3b791572c674c08c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaff6822e79b947a9e3b791572c674c08c">TEST_CASE</a> ("applyDiagonalOp", "[operators]")</td></tr>
<tr class="separator:gaff6822e79b947a9e3b791572c674c08c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaaa80d67f0d860f26067987bcf3970ec1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaaa80d67f0d860f26067987bcf3970ec1">TEST_CASE</a> ("applyFullQFT", "[operators]")</td></tr>
<tr class="separator:gaaa80d67f0d860f26067987bcf3970ec1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8e5f825652d097b2f9aa3bac8250c755"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga8e5f825652d097b2f9aa3bac8250c755">TEST_CASE</a> ("applyMatrix2", "[operators]")</td></tr>
<tr class="separator:ga8e5f825652d097b2f9aa3bac8250c755"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaaf9a656af9b7f24e10768a2408287396"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaaf9a656af9b7f24e10768a2408287396">TEST_CASE</a> ("applyMatrix4", "[operators]")</td></tr>
<tr class="separator:gaaf9a656af9b7f24e10768a2408287396"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaeefabb147eca8dfffe23ca34195b395f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaeefabb147eca8dfffe23ca34195b395f">TEST_CASE</a> ("applyMatrixN", "[operators]")</td></tr>
<tr class="separator:gaeefabb147eca8dfffe23ca34195b395f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa5fbe07e8ee18a944dfa88b00aef1803"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaa5fbe07e8ee18a944dfa88b00aef1803">TEST_CASE</a> ("applyMultiControlledMatrixN", "[operators]")</td></tr>
<tr class="separator:gaa5fbe07e8ee18a944dfa88b00aef1803"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga271aeb53a90bef51ccb1a21bae0f184c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga271aeb53a90bef51ccb1a21bae0f184c">TEST_CASE</a> ("applyMultiVarPhaseFunc", "[operators]")</td></tr>
<tr class="separator:ga271aeb53a90bef51ccb1a21bae0f184c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad82918a41dcee2da7a0cc8e6aebd542d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gad82918a41dcee2da7a0cc8e6aebd542d">TEST_CASE</a> ("applyMultiVarPhaseFuncOverrides", "[operators]")</td></tr>
<tr class="separator:gad82918a41dcee2da7a0cc8e6aebd542d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf532fa260e97dfe85915b88688b8cbcb"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaf532fa260e97dfe85915b88688b8cbcb">TEST_CASE</a> ("applyNamedPhaseFunc", "[operators]")</td></tr>
<tr class="separator:gaf532fa260e97dfe85915b88688b8cbcb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacaa45de6a609b372e667e046e5c9a466"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gacaa45de6a609b372e667e046e5c9a466">TEST_CASE</a> ("applyNamedPhaseFuncOverrides", "[operators]")</td></tr>
<tr class="separator:gacaa45de6a609b372e667e046e5c9a466"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae27f08dded40dbdb9a7b3645ee182ff0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gae27f08dded40dbdb9a7b3645ee182ff0">TEST_CASE</a> ("applyParamNamedPhaseFunc", "[operators]")</td></tr>
<tr class="separator:gae27f08dded40dbdb9a7b3645ee182ff0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaaf0246e83a66816b2b6bfe3f6e69d376"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaaf0246e83a66816b2b6bfe3f6e69d376">TEST_CASE</a> ("applyParamNamedPhaseFuncOverrides", "[operators]")</td></tr>
<tr class="separator:gaaf0246e83a66816b2b6bfe3f6e69d376"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga837338274c89440547aef67628640d97"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga837338274c89440547aef67628640d97">TEST_CASE</a> ("applyPauliHamil", "[operators]")</td></tr>
<tr class="separator:ga837338274c89440547aef67628640d97"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga37d50a46caa1bdf003155dafc4426b73"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga37d50a46caa1bdf003155dafc4426b73">TEST_CASE</a> ("applyPauliSum", "[operators]")</td></tr>
<tr class="separator:ga37d50a46caa1bdf003155dafc4426b73"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga86524404eb3532ca18d0e24e657316d9"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga86524404eb3532ca18d0e24e657316d9">TEST_CASE</a> ("applyPhaseFunc", "[operators]")</td></tr>
<tr class="separator:ga86524404eb3532ca18d0e24e657316d9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga664e2e125ed1b394e177ac3e8d3c1d42"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga664e2e125ed1b394e177ac3e8d3c1d42">TEST_CASE</a> ("applyPhaseFuncOverrides", "[operators]")</td></tr>
<tr class="separator:ga664e2e125ed1b394e177ac3e8d3c1d42"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa72a7f3d6425f04b1e3a8ebb4487ba5e"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#gaa72a7f3d6425f04b1e3a8ebb4487ba5e">TEST_CASE</a> ("applyProjector", "[operators]")</td></tr>
<tr class="separator:gaa72a7f3d6425f04b1e3a8ebb4487ba5e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5731cef400dd2ad09f62ce3b4213fa49"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga5731cef400dd2ad09f62ce3b4213fa49">TEST_CASE</a> ("applyQFT", "[operators]")</td></tr>
<tr class="separator:ga5731cef400dd2ad09f62ce3b4213fa49"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5510ce8d43eb02e094b284a60bc5b47c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unittest.html#ga5510ce8d43eb02e094b284a60bc5b47c">TEST_CASE</a> ("applyTrotterCircuit", "[operators]")</td></tr>
<tr class="separator:ga5510ce8d43eb02e094b284a60bc5b47c"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="aec8f698a7995e17e0ff1055526d2e5d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec8f698a7995e17e0ff1055526d2e5d4">◆ </a></span>CLEANUP_TEST</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CLEANUP_TEST</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">quregVec, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">quregMatr </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code" href="group__type.html#ga8e1e6ad3254892edc2ee08712ea9d692">destroyQureg</a>(quregVec, <a class="code" href="main_8cpp.html#a718130cc1fc36cde991aff3d4c85c47d">QUEST_ENV</a>); \</div>
<div class="line"> destroyQureg(quregMatr, <a class="code" href="main_8cpp.html#a718130cc1fc36cde991aff3d4c85c47d">QUEST_ENV</a>);</div>
</div>
<p>Destroys the data structures made by PREPARE_TEST. </p>
<p class="definition">Definition at line <a class="el" href="test__operators_8cpp_source.html#l00019">19</a> of file <a class="el" href="test__operators_8cpp_source.html">test_operators.cpp</a>.</p>
</div>
</div>
<a id="ae34496c47ef565b741782f01e710ea2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae34496c47ef565b741782f01e710ea2c">◆ </a></span>PREPARE_TEST</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define PREPARE_TEST</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">quregVec, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">quregMatr, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">refVec, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">refMatr </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code" href="structQureg.html">Qureg</a> quregVec = <a class="code" href="group__type.html#ga3392816c0643414165c2f5caeec17df0">createQureg</a>(<a class="code" href="utilities_8hpp.html#a2f52338126bb8cdf7fcf68eaf01c546a">NUM_QUBITS</a>, <a class="code" href="main_8cpp.html#a718130cc1fc36cde991aff3d4c85c47d">QUEST_ENV</a>); \</div>
<div class="line"> Qureg quregMatr = <a class="code" href="group__type.html#ga93e55b6650b408abb30a1d4a8bce757c">createDensityQureg</a>(<a class="code" href="utilities_8hpp.html#a2f52338126bb8cdf7fcf68eaf01c546a">NUM_QUBITS</a>, <a class="code" href="main_8cpp.html#a718130cc1fc36cde991aff3d4c85c47d">QUEST_ENV</a>); \</div>
<div class="line"> initDebugState(quregVec); \</div>
<div class="line"> initDebugState(quregMatr); \</div>
<div class="line"> QVector refVec = <a class="code" href="group__testutilities.html#gade0e7c37811a69f1c21c88c11943a19f">toQVector</a>(quregVec); \</div>
<div class="line"> QMatrix refMatr = <a class="code" href="group__testutilities.html#ga253946523907014c4f198d2bb38d4913">toQMatrix</a>(quregMatr);</div>
</div>
<p>Prepares the needed data structures for unit testing some operators. </p>
<p>This creates a statevector and density matrix of the size NUM_QUBITS, and corresponding QVector and QMatrix instances for analytic comparison. </p>
<p class="definition">Definition at line <a class="el" href="test__operators_8cpp_source.html#l00010">10</a> of file <a class="el" href="test__operators_8cpp_source.html">test_operators.cpp</a>.</p>
</div>
</div>
</div>
<div class="ttc" id="amain_8cpp_html_a718130cc1fc36cde991aff3d4c85c47d"><div class="ttname"><a href="main_8cpp.html#a718130cc1fc36cde991aff3d4c85c47d">QUEST_ENV</a></div><div class="ttdeci">QuESTEnv QUEST_ENV</div><div class="ttdoc">The global QuESTEnv instance, to be created and destroyed once in this main(), so that the MPI enviro...</div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00020">main.cpp:20</a></div></div>
<div class="ttc" id="autilities_8hpp_html_a2f52338126bb8cdf7fcf68eaf01c546a"><div class="ttname"><a href="utilities_8hpp.html#a2f52338126bb8cdf7fcf68eaf01c546a">NUM_QUBITS</a></div><div class="ttdeci">#define NUM_QUBITS</div><div class="ttdoc">The default number of qubits in the registers created for unit testing (both statevectors and density...</div><div class="ttdef"><b>Definition:</b> <a href="utilities_8hpp_source.html#l00036">utilities.hpp:36</a></div></div>
<div class="ttc" id="agroup__testutilities_html_ga253946523907014c4f198d2bb38d4913"><div class="ttname"><a href="group__testutilities.html#ga253946523907014c4f198d2bb38d4913">toQMatrix</a></div><div class="ttdeci">QMatrix toQMatrix(ComplexMatrix2 src)</div><div class="ttdoc">Returns a copy of the given 2-by-2 matrix.</div><div class="ttdef"><b>Definition:</b> <a href="utilities_8cpp_source.html#l01044">utilities.cpp:1044</a></div></div>
<div class="ttc" id="agroup__testutilities_html_gade0e7c37811a69f1c21c88c11943a19f"><div class="ttname"><a href="group__testutilities.html#gade0e7c37811a69f1c21c88c11943a19f">toQVector</a></div><div class="ttdeci">QVector toQVector(Qureg qureg)</div><div class="ttdoc">Returns an equal-size copy of the given state-vector qureg.</div><div class="ttdef"><b>Definition:</b> <a href="utilities_8cpp_source.html#l01113">utilities.cpp:1113</a></div></div>
<div class="ttc" id="agroup__type_html_ga8e1e6ad3254892edc2ee08712ea9d692"><div class="ttname"><a href="group__type.html#ga8e1e6ad3254892edc2ee08712ea9d692">destroyQureg</a></div><div class="ttdeci">void destroyQureg(Qureg qureg, QuESTEnv env)</div><div class="ttdoc">Deallocate a Qureg, freeing its memory.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00077">QuEST.c:77</a></div></div>
<div class="ttc" id="astructQureg_html"><div class="ttname"><a href="structQureg.html">Qureg</a></div><div class="ttdoc">Represents a system of qubits.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00322">QuEST.h:322</a></div></div>
<div class="ttc" id="agroup__type_html_ga3392816c0643414165c2f5caeec17df0"><div class="ttname"><a href="group__type.html#ga3392816c0643414165c2f5caeec17df0">createQureg</a></div><div class="ttdeci">Qureg createQureg(int numQubits, QuESTEnv env)</div><div class="ttdoc">Creates a state-vector Qureg object representing a set of qubits which will remain in a pure state.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00036">QuEST.c:36</a></div></div>
<div class="ttc" id="agroup__type_html_ga93e55b6650b408abb30a1d4a8bce757c"><div class="ttname"><a href="group__type.html#ga93e55b6650b408abb30a1d4a8bce757c">createDensityQureg</a></div><div class="ttdeci">Qureg createDensityQureg(int numQubits, QuESTEnv env)</div><div class="ttdoc">Creates a density matrix Qureg object representing a set of qubits which can enter noisy and mixed st...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00050">QuEST.c:50</a></div></div>
</div>
</div>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="boot.js"></script>
</html>