<!-- HTML header for doxygen 1.8.8-->
<!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">
<!-- For Mobile Devices -->
<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: QuEST.c Source File</title>
<!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
<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>
<!-- SmartMenus jQuery Bootstrap Addon -->
<script type="text/javascript" src="jquery.smartmenus.bootstrap.js"></script>
<!-- SmartMenus jQuery plugin -->
</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.1.0<br>The Quantum Exact Simulation Toolkit</a>
</div>
</div>
</nav>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<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;">
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d522931ffa1371640980b621734a4381.html">Users</a></li><li class="navelem"><a class="el" href="dir_70834f0dcd10de01d2e35ab402a2238e.html">tysonjones</a></li><li class="navelem"><a class="el" href="dir_1957401ef452be7528010ba0f4832a45.html">Desktop</a></li><li class="navelem"><a class="el" href="dir_dee4414d5d72b49a9429e079789ffd08.html">GithubRepos</a></li><li class="navelem"><a class="el" href="dir_a89b43d59316bb5045aa22bb53a67d29.html">QuEST</a></li><li class="navelem"><a class="el" href="dir_f1fe56bf5ef15ff22696c757278c6962.html">QuEST</a></li><li class="navelem"><a class="el" href="dir_757750313c878cfe3b7d1ade55b4b819.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">QuEST.c</div> </div>
</div><!--header-->
<div class="contents">
<a href="QuEST_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Distributed under MIT licence. See https://github.com/QuEST-Kit/QuEST/blob/master/LICENCE.txt for details</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor"># include "<a class="code" href="QuEST_8h.html">QuEST.h</a>"</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># include "<a class="code" href="QuEST__precision_8h.html">QuEST_precision.h</a>"</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"># include "<a class="code" href="QuEST__internal_8h.html">QuEST_internal.h</a>"</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"># include "<a class="code" href="QuEST__validation_8h.html">QuEST_validation.h</a>"</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"># include "<a class="code" href="QuEST__qasm_8h.html">QuEST_qasm.h</a>"</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># include <stdlib.h></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * state-vector management</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="group__type.html#ga3392816c0643414165c2f5caeec17df0"> 34</a></span> <a class="code" href="structQureg.html">Qureg</a> <a class="code" href="group__type.html#ga3392816c0643414165c2f5caeec17df0">createQureg</a>(<span class="keywordtype">int</span> numQubits, <a class="code" href="structQuESTEnv.html">QuESTEnv</a> env) {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="QuEST__validation_8c.html#a45428d4a49b8798a8d25a7155f622238">validateNumQubitsInQureg</a>(numQubits, env.<a class="code" href="structQuESTEnv.html#af22aacd7c9905accae28484785c193b4">numRanks</a>, __func__);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="structQureg.html">Qureg</a> qureg;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="QuEST__internal_8h.html#a365bbb1b80cb00405c8bf1a4fa1ea8e5">statevec_createQureg</a>(&qureg, numQubits, env);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a> = 0;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a> = numQubits;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  qureg.<a class="code" href="structQureg.html#a0a86e8a50ea8c998b4a0a6640c5a1218">numQubitsInStateVec</a> = numQubits;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="QuEST__qasm_8c.html#aa5f05644a6cea13e00f828658bcf7a68">qasm_setup</a>(&qureg);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="group__init.html#ga2f049055d4a51d0ea4d1a43b5234dedb">initZeroState</a>(qureg); <span class="comment">// safe call to public function</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> qureg;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="group__type.html#ga93e55b6650b408abb30a1d4a8bce757c"> 48</a></span> <a class="code" href="structQureg.html">Qureg</a> <a class="code" href="group__type.html#ga93e55b6650b408abb30a1d4a8bce757c">createDensityQureg</a>(<span class="keywordtype">int</span> numQubits, <a class="code" href="structQuESTEnv.html">QuESTEnv</a> env) {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="QuEST__validation_8c.html#a45428d4a49b8798a8d25a7155f622238">validateNumQubitsInQureg</a>(2*numQubits, env.<a class="code" href="structQuESTEnv.html#af22aacd7c9905accae28484785c193b4">numRanks</a>, __func__);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="structQureg.html">Qureg</a> qureg;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="QuEST__internal_8h.html#a365bbb1b80cb00405c8bf1a4fa1ea8e5">statevec_createQureg</a>(&qureg, 2*numQubits, env);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a> = 1;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a> = numQubits;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  qureg.<a class="code" href="structQureg.html#a0a86e8a50ea8c998b4a0a6640c5a1218">numQubitsInStateVec</a> = 2*numQubits;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="QuEST__qasm_8c.html#aa5f05644a6cea13e00f828658bcf7a68">qasm_setup</a>(&qureg);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="group__init.html#ga2f049055d4a51d0ea4d1a43b5234dedb">initZeroState</a>(qureg); <span class="comment">// safe call to public function</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> qureg;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="group__type.html#gabd07eee133dcd4e6ae7c2d2ce4c42978"> 62</a></span> <a class="code" href="structQureg.html">Qureg</a> <a class="code" href="group__type.html#gabd07eee133dcd4e6ae7c2d2ce4c42978">createCloneQureg</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <a class="code" href="structQuESTEnv.html">QuESTEnv</a> env) {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="structQureg.html">Qureg</a> newQureg;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="QuEST__internal_8h.html#a365bbb1b80cb00405c8bf1a4fa1ea8e5">statevec_createQureg</a>(&newQureg, qureg.<a class="code" href="structQureg.html#a0a86e8a50ea8c998b4a0a6640c5a1218">numQubitsInStateVec</a>, env);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  newQureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a> = qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  newQureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a> = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  newQureg.<a class="code" href="structQureg.html#a0a86e8a50ea8c998b4a0a6640c5a1218">numQubitsInStateVec</a> = qureg.<a class="code" href="structQureg.html#a0a86e8a50ea8c998b4a0a6640c5a1218">numQubitsInStateVec</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="QuEST__qasm_8c.html#aa5f05644a6cea13e00f828658bcf7a68">qasm_setup</a>(&newQureg);</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="QuEST__internal_8h.html#aa4b77089145184d990848cd66993aa8b">statevec_cloneQureg</a>(newQureg, qureg);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> newQureg;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> }</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="group__type.html#ga8e1e6ad3254892edc2ee08712ea9d692"> 75</a></span> <span class="keywordtype">void</span> <a class="code" href="group__type.html#ga8e1e6ad3254892edc2ee08712ea9d692">destroyQureg</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <a class="code" href="structQuESTEnv.html">QuESTEnv</a> env) {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="QuEST__internal_8h.html#a2a52ad9f9ad9b2fd6a76f6d433b3b217">statevec_destroyQureg</a>(qureg, env);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="QuEST__qasm_8c.html#ae5ef90741274785eb1ebbbe828b7df8a">qasm_free</a>(qureg);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment"> * QASM</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="group__qasm.html#ga65bf1906298ca6355e2942f4923d77b6"> 85</a></span> <span class="keywordtype">void</span> <a class="code" href="group__qasm.html#ga65bf1906298ca6355e2942f4923d77b6">startRecordingQASM</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="QuEST__qasm_8c.html#a84b0328814c0b17e127396cb36065108">qasm_startRecording</a>(qureg);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="group__qasm.html#gabdaa339967f0955176a4967f01364182"> 89</a></span> <span class="keywordtype">void</span> <a class="code" href="group__qasm.html#gabdaa339967f0955176a4967f01364182">stopRecordingQASM</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="QuEST__qasm_8c.html#a77ad622c5ba852708a80755ac1792288">qasm_stopRecording</a>(qureg);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="group__qasm.html#gab3a410abab3e8beb394bd3bbfae8977c"> 93</a></span> <span class="keywordtype">void</span> <a class="code" href="group__qasm.html#gab3a410abab3e8beb394bd3bbfae8977c">clearRecordedQASM</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="QuEST__qasm_8c.html#af2cdfa07be122a2c0b0e950ef45450bc">qasm_clearRecorded</a>(qureg);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="group__qasm.html#gacf139d0a54b1f9e5c2f2feff742b8c76"> 97</a></span> <span class="keywordtype">void</span> <a class="code" href="group__qasm.html#gacf139d0a54b1f9e5c2f2feff742b8c76">printRecordedQASM</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="QuEST__qasm_8c.html#a9d97fdaec443ed238c1e72e387a688e3">qasm_printRecorded</a>(qureg);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="group__qasm.html#ga0054955857ce83b88e127d731796c23d"> 101</a></span> <span class="keywordtype">void</span> <a class="code" href="group__qasm.html#ga0054955857ce83b88e127d731796c23d">writeRecordedQASMToFile</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">char</span>* filename) {</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">int</span> success = <a class="code" href="QuEST__qasm_8c.html#a39aeacb22460bd1430129795761ade28">qasm_writeRecordedToFile</a>(qureg, filename);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="QuEST__validation_8c.html#a5adacab391af7a5ef05cf4d934a94144">validateFileOpened</a>(success, __func__);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment"> * state initialisation</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group__init.html#ga2f049055d4a51d0ea4d1a43b5234dedb"> 111</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#ga2f049055d4a51d0ea4d1a43b5234dedb">initZeroState</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="QuEST__internal_8h.html#a2ca0c6ba07ab2b4b437321bf17efc966">statevec_initZeroState</a>(qureg); <span class="comment">// valid for both statevec and density matrices</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="QuEST__qasm_8c.html#a4e21adca1f0ca03303bc2e57aaba4ce2">qasm_recordInitZero</a>(qureg);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="group__init.html#gada7230491a50cd409f8b00f5ee1db953"> 117</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#gada7230491a50cd409f8b00f5ee1db953">initBlankState</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="QuEST__internal_8h.html#a758bad4237ff0bf3b4ff5be626a982ae">statevec_initBlankState</a>(qureg);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, the register was initialised to an unphysical all-zero-amplitudes 'state'."</span>);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  </div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group__init.html#ga234bd34016f08288532791903b9884b5"> 123</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#ga234bd34016f08288532791903b9884b5">initPlusState</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>)</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="QuEST__internal_8h.html#a2418bd9a6b9e6a0acf11faf5982d5d29">densmatr_initPlusState</a>(qureg);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="QuEST__internal_8h.html#a482fc361fd5f08075404c72e536316a0">statevec_initPlusState</a>(qureg);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="QuEST__qasm_8c.html#a627b0be7667c5a61a06b3b038fcc8b1b">qasm_recordInitPlus</a>(qureg);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="group__init.html#ga0379e21efca0767a22607fc0e26a5a22"> 132</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#ga0379e21efca0767a22607fc0e26a5a22">initClassicalState</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> stateInd) {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="QuEST__validation_8c.html#a57dc69bb7a2217aafca676b0923d5e27">validateStateIndex</a>(qureg, stateInd, __func__);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>)</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="QuEST__internal_8h.html#a20a155f53efc45c16803d7539c2c199d">densmatr_initClassicalState</a>(qureg, stateInd);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="QuEST__internal_8h.html#a288dc4b46bdacd69cbf4a6fd070d26a7">statevec_initClassicalState</a>(qureg, stateInd);</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="QuEST__qasm_8c.html#a55d0f243437a0bb3b7609a1090323aa3">qasm_recordInitClassical</a>(qureg, stateInd);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="group__init.html#ga9a348df3e1df623c3d4c4f12c3ee3fe8"> 143</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#ga9a348df3e1df623c3d4c4f12c3ee3fe8">initPureState</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <a class="code" href="structQureg.html">Qureg</a> pure) {</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="QuEST__validation_8c.html#a7adc86571f1154558676d95daf0cbd1f">validateSecondQuregStateVec</a>(pure, __func__);</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(qureg, pure, __func__);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>)</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="QuEST__internal_8h.html#ae5ad68d054875913d0f7ec654840a9ec">densmatr_initPureState</a>(qureg, pure);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="QuEST__internal_8h.html#aa4b77089145184d990848cd66993aa8b">statevec_cloneQureg</a>(qureg, pure);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, the register was initialised to an undisclosed given pure state."</span>);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  </div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="group__init.html#ga4589960486ec43dcd63bd985f1c4f398"> 155</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#ga4589960486ec43dcd63bd985f1c4f398">initStateFromAmps</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* reals, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* imags) {</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="QuEST__internal_8h.html#aa121d55f2ca09c06a96ddcd433c60b0f">statevec_setAmps</a>(qureg, 0, reals, imags, qureg.<a class="code" href="structQureg.html#adef4935cac95763c29164cf99b144ed4">numAmpsTotal</a>);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, the register was initialised to an undisclosed given pure state."</span>);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  </div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="group__init.html#ga4534403b721977b669bff7bf4e37f0fb"> 163</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#ga4534403b721977b669bff7bf4e37f0fb">cloneQureg</a>(<a class="code" href="structQureg.html">Qureg</a> targetQureg, <a class="code" href="structQureg.html">Qureg</a> copyQureg) {</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="QuEST__validation_8c.html#a031812e1cf2c98d72d795cea7bbe73a5">validateMatchingQuregTypes</a>(targetQureg, copyQureg, __func__);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(targetQureg, copyQureg, __func__);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  </div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="QuEST__internal_8h.html#aa4b77089145184d990848cd66993aa8b">statevec_cloneQureg</a>(targetQureg, copyQureg);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment"> * unitary gates</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  </div>
<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="group__unitary.html#ga2f3bec8d06e7bf7314c581a5b837641f"> 175</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga2f3bec8d06e7bf7314c581a5b837641f">hadamard</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  </div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="QuEST__internal_8h.html#a9226f386d010aaa85efc0e8889d341d5">statevec_hadamard</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="QuEST__internal_8h.html#a9226f386d010aaa85efc0e8889d341d5">statevec_hadamard</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  </div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="QuEST__qasm_8c.html#a81749d23b8c3c1acf87c9db675872c24">qasm_recordGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa8417e56d80add49216437e0d451e8dd9">GATE_HADAMARD</a>, targetQubit);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> }</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="group__unitary.html#ga5fb1514d67ab43917dc64a357e711425"> 186</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga5fb1514d67ab43917dc64a357e711425">rotateX</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="QuEST__common_8c.html#aca123cc22e13a2cb819ef6c2f455b9e4">statevec_rotateX</a>(qureg, targetQubit, angle);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="QuEST__common_8c.html#aca123cc22e13a2cb819ef6c2f455b9e4">statevec_rotateX</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>, -angle);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  </div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="QuEST__qasm_8c.html#aabeb3e9ec6b2f30938c4cf9592e624fa">qasm_recordParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fada07505b73935b2788032efd30a1a361">GATE_ROTATE_X</a>, targetQubit, angle);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> }</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div>
<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="group__unitary.html#ga680f90d42e56950f40d11d695596a363"> 197</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga680f90d42e56950f40d11d695596a363">rotateY</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="QuEST__common_8c.html#a4a62c8c00dc4adf74b982ad8a9049170">statevec_rotateY</a>(qureg, targetQubit, angle);</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="QuEST__common_8c.html#a4a62c8c00dc4adf74b982ad8a9049170">statevec_rotateY</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>, angle);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  </div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="QuEST__qasm_8c.html#aabeb3e9ec6b2f30938c4cf9592e624fa">qasm_recordParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fae1267d5de573dc2901aa8e724ac1d689">GATE_ROTATE_Y</a>, targetQubit, angle);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  </div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="group__unitary.html#ga30675e80b054d5adf556ae00f98377d9"> 208</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga30675e80b054d5adf556ae00f98377d9">rotateZ</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="QuEST__common_8c.html#ab96ee09e32e297629a481c3ba6d7eaf7">statevec_rotateZ</a>(qureg, targetQubit, angle);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="QuEST__common_8c.html#ab96ee09e32e297629a481c3ba6d7eaf7">statevec_rotateZ</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>, -angle);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  </div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="QuEST__qasm_8c.html#aabeb3e9ec6b2f30938c4cf9592e624fa">qasm_recordParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa0cdc4c588d02a515a68515dd3f24d877">GATE_ROTATE_Z</a>, targetQubit, angle);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="group__unitary.html#ga7dc4ed5d9fd2872a04fea6ef13b65c3d"> 219</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga7dc4ed5d9fd2872a04fea6ef13b65c3d">controlledRotateX</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="QuEST__common_8c.html#af59bc61f97d42cdceaf7fc0257a387d6">statevec_controlledRotateX</a>(qureg, controlQubit, targetQubit, angle);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="QuEST__common_8c.html#af59bc61f97d42cdceaf7fc0257a387d6">statevec_controlledRotateX</a>(qureg, controlQubit+shift, targetQubit+shift, -angle);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="QuEST__qasm_8c.html#ae776148507b8f769cd00d1603212a028">qasm_recordControlledParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fada07505b73935b2788032efd30a1a361">GATE_ROTATE_X</a>, controlQubit, targetQubit, angle);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> }</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  </div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="group__unitary.html#gaf99ba5356a6c20d3d047b36874fc0a50"> 231</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gaf99ba5356a6c20d3d047b36874fc0a50">controlledRotateY</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  </div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="QuEST__common_8c.html#ad2dc0754043172e0449c78569d27fd4a">statevec_controlledRotateY</a>(qureg, controlQubit, targetQubit, angle);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="QuEST__common_8c.html#ad2dc0754043172e0449c78569d27fd4a">statevec_controlledRotateY</a>(qureg, controlQubit+shift, targetQubit+shift, angle); <span class="comment">// rotateY is real</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  </div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="QuEST__qasm_8c.html#ae776148507b8f769cd00d1603212a028">qasm_recordControlledParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fae1267d5de573dc2901aa8e724ac1d689">GATE_ROTATE_Y</a>, controlQubit, targetQubit, angle);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div>
<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="group__unitary.html#ga9afcf34f7c6ae127452b503c074a9b7b"> 243</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga9afcf34f7c6ae127452b503c074a9b7b">controlledRotateZ</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  </div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="QuEST__common_8c.html#a06bffb653fa42a67254d034b6cce6d7d">statevec_controlledRotateZ</a>(qureg, controlQubit, targetQubit, angle);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="QuEST__common_8c.html#a06bffb653fa42a67254d034b6cce6d7d">statevec_controlledRotateZ</a>(qureg, controlQubit+shift, targetQubit+shift, -angle);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  </div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="QuEST__qasm_8c.html#ae776148507b8f769cd00d1603212a028">qasm_recordControlledParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa0cdc4c588d02a515a68515dd3f24d877">GATE_ROTATE_Z</a>, controlQubit, targetQubit, angle);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  </div>
<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="group__unitary.html#ga81cf22c68db66bf9b4593a5d1b3f528c"> 255</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga81cf22c68db66bf9b4593a5d1b3f528c">twoQubitUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit1, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit2, <a class="code" href="structComplexMatrix4.html">ComplexMatrix4</a> u) {</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a>(qureg, (<span class="keywordtype">int</span> []) {targetQubit1, targetQubit2}, 2, __func__);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="QuEST__validation_8c.html#a654db9d60abdcae26427e7d3b3d9c432">validateTwoQubitUnitaryMatrix</a>(qureg, u, __func__);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  </div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="QuEST__common_8c.html#aa8db9b25aae536cdf8054afb6503b7f4">statevec_twoQubitUnitary</a>(qureg, targetQubit1, targetQubit2, u);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="QuEST__common_8c.html#aa8db9b25aae536cdf8054afb6503b7f4">statevec_twoQubitUnitary</a>(qureg, targetQubit1+shift, targetQubit2+shift, <a class="code" href="QuEST__common_8c.html#a20d45e85dd49dd3bf6045990b590b24b">getConjugateMatrix4</a>(u));</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  </div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, an undisclosed 2-qubit unitary was applied."</span>);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  </div>
<div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="group__unitary.html#ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80"> 268</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80">controlledTwoQubitUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit1, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit2, <a class="code" href="structComplexMatrix4.html">ComplexMatrix4</a> u) {</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="QuEST__validation_8c.html#afd4946df21588eb7109ca9b289bcba5f">validateMultiControlsMultiTargets</a>(qureg, (<span class="keywordtype">int</span>[]) {controlQubit}, 1, (<span class="keywordtype">int</span>[]) {targetQubit1, targetQubit2}, 2, __func__);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="QuEST__validation_8c.html#a654db9d60abdcae26427e7d3b3d9c432">validateTwoQubitUnitaryMatrix</a>(qureg, u, __func__);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  </div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="QuEST__common_8c.html#aaa550b31c5576f9305f57cfe68b6dfbe">statevec_controlledTwoQubitUnitary</a>(qureg, controlQubit, targetQubit1, targetQubit2, u);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="QuEST__common_8c.html#aaa550b31c5576f9305f57cfe68b6dfbe">statevec_controlledTwoQubitUnitary</a>(qureg, controlQubit+shift, targetQubit1+shift, targetQubit2+shift, <a class="code" href="QuEST__common_8c.html#a20d45e85dd49dd3bf6045990b590b24b">getConjugateMatrix4</a>(u));</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  </div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, an undisclosed controlled 2-qubit unitary was applied."</span>);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> }</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  </div>
<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="group__unitary.html#ga4183dc6cb8fd996fb790a711bf3e4871"> 281</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga4183dc6cb8fd996fb790a711bf3e4871">multiControlledTwoQubitUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* controlQubits, <span class="keyword">const</span> <span class="keywordtype">int</span> numControlQubits, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit1, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit2, <a class="code" href="structComplexMatrix4.html">ComplexMatrix4</a> u) {</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="QuEST__validation_8c.html#afd4946df21588eb7109ca9b289bcba5f">validateMultiControlsMultiTargets</a>(qureg, controlQubits, numControlQubits, (<span class="keywordtype">int</span>[]) {targetQubit1, targetQubit2}, 2, __func__);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="QuEST__validation_8c.html#a654db9d60abdcae26427e7d3b3d9c432">validateTwoQubitUnitaryMatrix</a>(qureg, u, __func__);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ctrlQubitsMask = <a class="code" href="QuEST__common_8c.html#abd1285091450c7c2806cc26c71eb5df2">getQubitBitMask</a>(controlQubits, numControlQubits);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="QuEST__internal_8h.html#a877d988a763a52989484afc0f8d6ddf0">statevec_multiControlledTwoQubitUnitary</a>(qureg, ctrlQubitsMask, targetQubit1, targetQubit2, u);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="QuEST__internal_8h.html#a877d988a763a52989484afc0f8d6ddf0">statevec_multiControlledTwoQubitUnitary</a>(qureg, ctrlQubitsMask<<shift, targetQubit1+shift, targetQubit2+shift, <a class="code" href="QuEST__common_8c.html#a20d45e85dd49dd3bf6045990b590b24b">getConjugateMatrix4</a>(u));</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  </div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, an undisclosed multi-controlled 2-qubit unitary was applied."</span>);</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> }</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  </div>
<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="group__unitary.html#gab5828a9f0518951451d9fec9370199ae"> 295</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gab5828a9f0518951451d9fec9370199ae">multiQubitUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* targs, <span class="keyword">const</span> <span class="keywordtype">int</span> numTargs, <a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a> u) {</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a>(qureg, targs, numTargs, __func__);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="QuEST__validation_8c.html#ab9947ff071a0c019f715f04b3833dcfd">validateMultiQubitUnitaryMatrix</a>(qureg, u, numTargs, __func__);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="QuEST__common_8c.html#ad92b16763f97e70c052eb87a5d1fd3e9">statevec_multiQubitUnitary</a>(qureg, targs, numTargs, u);</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targs, numTargs, shift);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="QuEST__common_8c.html#a9fd917537204e074119d4f283dea78e3">setConjugateMatrixN</a>(u);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="QuEST__common_8c.html#ad92b16763f97e70c052eb87a5d1fd3e9">statevec_multiQubitUnitary</a>(qureg, targs, numTargs, u);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targs, numTargs, -shift);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="QuEST__common_8c.html#a9fd917537204e074119d4f283dea78e3">setConjugateMatrixN</a>(u);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, an undisclosed multi-qubit unitary was applied."</span>);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> }</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  </div>
<div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="group__unitary.html#ga6375f658bd7cb24d25e0603b5b947bbd"> 312</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga6375f658bd7cb24d25e0603b5b947bbd">controlledMultiQubitUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> ctrl, <span class="keywordtype">int</span>* targs, <span class="keyword">const</span> <span class="keywordtype">int</span> numTargs, <a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a> u) {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="QuEST__validation_8c.html#afd4946df21588eb7109ca9b289bcba5f">validateMultiControlsMultiTargets</a>(qureg, (<span class="keywordtype">int</span>[]) {ctrl}, 1, targs, numTargs, __func__);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="QuEST__validation_8c.html#ab9947ff071a0c019f715f04b3833dcfd">validateMultiQubitUnitaryMatrix</a>(qureg, u, numTargs, __func__);</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  </div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="QuEST__common_8c.html#af81e1960029f6f213bc2edacaf0dcb44">statevec_controlledMultiQubitUnitary</a>(qureg, ctrl, targs, numTargs, u);</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targs, numTargs, shift);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="QuEST__common_8c.html#a9fd917537204e074119d4f283dea78e3">setConjugateMatrixN</a>(u);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="QuEST__common_8c.html#af81e1960029f6f213bc2edacaf0dcb44">statevec_controlledMultiQubitUnitary</a>(qureg, ctrl+shift, targs, numTargs, u);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targs, numTargs, -shift);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="QuEST__common_8c.html#a9fd917537204e074119d4f283dea78e3">setConjugateMatrixN</a>(u);</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  }</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, an undisclosed controlled multi-qubit unitary was applied."</span>);</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  </div>
<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="group__unitary.html#gadad71b27575fd7d9baf110ff780ee0a1"> 329</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gadad71b27575fd7d9baf110ff780ee0a1">multiControlledMultiQubitUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* ctrls, <span class="keyword">const</span> <span class="keywordtype">int</span> numCtrls, <span class="keywordtype">int</span>* targs, <span class="keyword">const</span> <span class="keywordtype">int</span> numTargs, <a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a> u) {</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="QuEST__validation_8c.html#afd4946df21588eb7109ca9b289bcba5f">validateMultiControlsMultiTargets</a>(qureg, ctrls, numCtrls, targs, numTargs, __func__);</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="QuEST__validation_8c.html#ab9947ff071a0c019f715f04b3833dcfd">validateMultiQubitUnitaryMatrix</a>(qureg, u, numTargs, __func__);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ctrlMask = <a class="code" href="QuEST__common_8c.html#abd1285091450c7c2806cc26c71eb5df2">getQubitBitMask</a>(ctrls, numCtrls);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="QuEST__internal_8h.html#a47dcab9a0e6b07ddde264ed924add26c">statevec_multiControlledMultiQubitUnitary</a>(qureg, ctrlMask, targs, numTargs, u);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targs, numTargs, shift);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="QuEST__common_8c.html#a9fd917537204e074119d4f283dea78e3">setConjugateMatrixN</a>(u);</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="QuEST__internal_8h.html#a47dcab9a0e6b07ddde264ed924add26c">statevec_multiControlledMultiQubitUnitary</a>(qureg, ctrlMask<<shift, targs, numTargs, u);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targs, numTargs, -shift);</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="QuEST__common_8c.html#a9fd917537204e074119d4f283dea78e3">setConjugateMatrixN</a>(u);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  </div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, an undisclosed multi-controlled multi-qubit unitary was applied."</span>);</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> }</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  </div>
<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="group__unitary.html#ga5a117f81298e8ed894d964198e737757"> 347</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga5a117f81298e8ed894d964198e737757">unitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="structComplexMatrix2.html">ComplexMatrix2</a> u) {</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="QuEST__validation_8c.html#a0344fbbb2bb505f7db14b420153f1eb5">validateOneQubitUnitaryMatrix</a>(u, __func__);</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  </div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="QuEST__internal_8h.html#a4bea7ed7967083cbabd8a8e5acdd48c0">statevec_unitary</a>(qureg, targetQubit, u);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="QuEST__internal_8h.html#a4bea7ed7967083cbabd8a8e5acdd48c0">statevec_unitary</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>, <a class="code" href="QuEST__common_8c.html#ad34d98eeaa6a3cb45e92c696cfd2d1c8">getConjugateMatrix2</a>(u));</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  </div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="QuEST__qasm_8c.html#ad22260712869e79f07d2f04e2b41a233">qasm_recordUnitary</a>(qureg, u, targetQubit);</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> }</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  </div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="group__unitary.html#gaf2ad34c9659292d32c6c725e4bd668cf"> 359</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gaf2ad34c9659292d32c6c725e4bd668cf">controlledUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="structComplexMatrix2.html">ComplexMatrix2</a> u) {</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="QuEST__validation_8c.html#a0344fbbb2bb505f7db14b420153f1eb5">validateOneQubitUnitaryMatrix</a>(u, __func__);</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  </div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="QuEST__internal_8h.html#a2600999a19c817bfcf7ca14779e33b9a">statevec_controlledUnitary</a>(qureg, controlQubit, targetQubit, u);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="QuEST__internal_8h.html#a2600999a19c817bfcf7ca14779e33b9a">statevec_controlledUnitary</a>(qureg, controlQubit+shift, targetQubit+shift, <a class="code" href="QuEST__common_8c.html#ad34d98eeaa6a3cb45e92c696cfd2d1c8">getConjugateMatrix2</a>(u));</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  </div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="QuEST__qasm_8c.html#a5e99d405002cdf6ddd40922911d058a4">qasm_recordControlledUnitary</a>(qureg, u, controlQubit, targetQubit);</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> }</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  </div>
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="group__unitary.html#ga18c44cb3b947147951590dea2f6b25f7"> 372</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga18c44cb3b947147951590dea2f6b25f7">multiControlledUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* controlQubits, <span class="keyword">const</span> <span class="keywordtype">int</span> numControlQubits, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="structComplexMatrix2.html">ComplexMatrix2</a> u) {</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="QuEST__validation_8c.html#a455024b2f504b0e9646f239d67386d36">validateMultiControlsTarget</a>(qureg, controlQubits, numControlQubits, targetQubit, __func__);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <a class="code" href="QuEST__validation_8c.html#a0344fbbb2bb505f7db14b420153f1eb5">validateOneQubitUnitaryMatrix</a>(u, __func__);</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  </div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ctrlQubitsMask = <a class="code" href="QuEST__common_8c.html#abd1285091450c7c2806cc26c71eb5df2">getQubitBitMask</a>(controlQubits, numControlQubits);</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ctrlFlipMask = 0;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="QuEST__internal_8h.html#a7ec46b4b96cda399095a2488ceff69b6">statevec_multiControlledUnitary</a>(qureg, ctrlQubitsMask, ctrlFlipMask, targetQubit, u);</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="QuEST__internal_8h.html#a7ec46b4b96cda399095a2488ceff69b6">statevec_multiControlledUnitary</a>(qureg, ctrlQubitsMask<<shift, ctrlFlipMask<<shift, targetQubit+shift, <a class="code" href="QuEST__common_8c.html#ad34d98eeaa6a3cb45e92c696cfd2d1c8">getConjugateMatrix2</a>(u));</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  </div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="QuEST__qasm_8c.html#abc29cef03e4a93d5f0a67b1e8b72f66e">qasm_recordMultiControlledUnitary</a>(qureg, u, controlQubits, numControlQubits, targetQubit);</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> }</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  </div>
<div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="group__unitary.html#ga09a08f98955e75d942fdc88d4dca3e33"> 387</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga09a08f98955e75d942fdc88d4dca3e33">multiStateControlledUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* controlQubits, <span class="keywordtype">int</span>* controlState, <span class="keyword">const</span> <span class="keywordtype">int</span> numControlQubits, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="structComplexMatrix2.html">ComplexMatrix2</a> u) {</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="QuEST__validation_8c.html#a455024b2f504b0e9646f239d67386d36">validateMultiControlsTarget</a>(qureg, controlQubits, numControlQubits, targetQubit, __func__);</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="QuEST__validation_8c.html#a0344fbbb2bb505f7db14b420153f1eb5">validateOneQubitUnitaryMatrix</a>(u, __func__);</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="QuEST__validation_8c.html#ada38f885e0a4f704fb82c18a297ee1ae">validateControlState</a>(controlState, numControlQubits, __func__);</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  </div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ctrlQubitsMask = <a class="code" href="QuEST__common_8c.html#abd1285091450c7c2806cc26c71eb5df2">getQubitBitMask</a>(controlQubits, numControlQubits);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> ctrlFlipMask = <a class="code" href="QuEST__common_8c.html#a1da0adad40d2bb1b30b04eda3598e18d">getControlFlipMask</a>(controlQubits, controlState, numControlQubits);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="QuEST__internal_8h.html#a7ec46b4b96cda399095a2488ceff69b6">statevec_multiControlledUnitary</a>(qureg, ctrlQubitsMask, ctrlFlipMask, targetQubit, u);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <a class="code" href="QuEST__internal_8h.html#a7ec46b4b96cda399095a2488ceff69b6">statevec_multiControlledUnitary</a>(qureg, ctrlQubitsMask<<shift, ctrlFlipMask<<shift, targetQubit+shift, <a class="code" href="QuEST__common_8c.html#ad34d98eeaa6a3cb45e92c696cfd2d1c8">getConjugateMatrix2</a>(u));</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  </div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="QuEST__qasm_8c.html#abecd726412180d81f76f570dbbdbcddb">qasm_recordMultiStateControlledUnitary</a>(qureg, u, controlQubits, controlState, numControlQubits, targetQubit);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> }</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  </div>
<div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="group__unitary.html#ga0cbd92af48fe641522e62eea1a76a7c3"> 403</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga0cbd92af48fe641522e62eea1a76a7c3">compactUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="structComplex.html">Complex</a> alpha, <a class="code" href="structComplex.html">Complex</a> beta) {</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="QuEST__validation_8c.html#a5d49d4aadea858794b139c6a195ffd8b">validateUnitaryComplexPair</a>(alpha, beta, __func__);</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  </div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="QuEST__internal_8h.html#a94ee4df9faba286ad7a5bc829ef5174d">statevec_compactUnitary</a>(qureg, targetQubit, alpha, beta);</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="QuEST__internal_8h.html#a94ee4df9faba286ad7a5bc829ef5174d">statevec_compactUnitary</a>(qureg, targetQubit+shift, <a class="code" href="QuEST__common_8c.html#af92fa737f4491324408b3d15543dced4">getConjugateScalar</a>(alpha), <a class="code" href="QuEST__common_8c.html#af92fa737f4491324408b3d15543dced4">getConjugateScalar</a>(beta));</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  </div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="QuEST__qasm_8c.html#a518c4351d574aea8477019dbce02f09c">qasm_recordCompactUnitary</a>(qureg, alpha, beta, targetQubit);</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> }</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  </div>
<div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="group__unitary.html#gaa854e4b76cfd4000a32c06c990960bd9"> 416</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gaa854e4b76cfd4000a32c06c990960bd9">controlledCompactUnitary</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="structComplex.html">Complex</a> alpha, <a class="code" href="structComplex.html">Complex</a> beta) {</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <a class="code" href="QuEST__validation_8c.html#a5d49d4aadea858794b139c6a195ffd8b">validateUnitaryComplexPair</a>(alpha, beta, __func__);</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  </div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="QuEST__internal_8h.html#a47b467a5445c7f15d1a8b0b2ec0ef2de">statevec_controlledCompactUnitary</a>(qureg, controlQubit, targetQubit, alpha, beta);</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="QuEST__internal_8h.html#a47b467a5445c7f15d1a8b0b2ec0ef2de">statevec_controlledCompactUnitary</a>(qureg, </div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  controlQubit+shift, targetQubit+shift, </div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="QuEST__common_8c.html#af92fa737f4491324408b3d15543dced4">getConjugateScalar</a>(alpha), <a class="code" href="QuEST__common_8c.html#af92fa737f4491324408b3d15543dced4">getConjugateScalar</a>(beta));</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  </div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="QuEST__qasm_8c.html#a6bd68fa9c0c1bd9c9f9af714ea0b8b03">qasm_recordControlledCompactUnitary</a>(qureg, alpha, beta, controlQubit, targetQubit);</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> }</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  </div>
<div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="group__unitary.html#ga84cd118c44b9d3866f56b865dbb9bd7d"> 431</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga84cd118c44b9d3866f56b865dbb9bd7d">pauliX</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  </div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="QuEST__internal_8h.html#abdb6e0ee1e407755e1b944086cedd90e">statevec_pauliX</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <a class="code" href="QuEST__internal_8h.html#abdb6e0ee1e407755e1b944086cedd90e">statevec_pauliX</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>);</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  </div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="QuEST__qasm_8c.html#a81749d23b8c3c1acf87c9db675872c24">qasm_recordGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa13c9487aed515148e7594e35eb8dcc55">GATE_SIGMA_X</a>, targetQubit);</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> }</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  </div>
<div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="group__unitary.html#gaa064fcf40fd02b21f98a9a83dc6cea13"> 442</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gaa064fcf40fd02b21f98a9a83dc6cea13">pauliY</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  </div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="QuEST__internal_8h.html#a73b56fbac6e464a37805fa9d9657a8f9">statevec_pauliY</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="QuEST__internal_8h.html#aee97816cfabeea7874cd837a8d105412">statevec_pauliYConj</a>(qureg, targetQubit + qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>);</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  </div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="QuEST__qasm_8c.html#a81749d23b8c3c1acf87c9db675872c24">qasm_recordGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725faa29b98cbb581abf5ec338a1763de7a1b">GATE_SIGMA_Y</a>, targetQubit);</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> }</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  </div>
<div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="group__unitary.html#gadf988ee16f38ddaf404552c41ea2b745"> 453</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gadf988ee16f38ddaf404552c41ea2b745">pauliZ</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  </div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="QuEST__common_8c.html#ad711cac41adb0fea1ad4797ce14953e0">statevec_pauliZ</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <a class="code" href="QuEST__common_8c.html#ad711cac41adb0fea1ad4797ce14953e0">statevec_pauliZ</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>);</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  </div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="QuEST__qasm_8c.html#a81749d23b8c3c1acf87c9db675872c24">qasm_recordGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa228cd6a7ad18928b794ee7ad1f1fc85e">GATE_SIGMA_Z</a>, targetQubit);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> }</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  </div>
<div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="group__unitary.html#ga67a83cdbd8d6ae77f91aa011cf09907a"> 464</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga67a83cdbd8d6ae77f91aa011cf09907a">sGate</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  </div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="QuEST__common_8c.html#aea5b9ea10791217a793a8040c36e4efc">statevec_sGate</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="QuEST__common_8c.html#a78bfeb90f0c1812e726ec3092056bb52">statevec_sGateConj</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>);</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  </div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <a class="code" href="QuEST__qasm_8c.html#a81749d23b8c3c1acf87c9db675872c24">qasm_recordGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa5053f3d968443bc04e8b1d09f18bab9a">GATE_S</a>, targetQubit);</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> }</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  </div>
<div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="group__unitary.html#ga3c500a891a522fd3045c379489f0252a"> 475</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga3c500a891a522fd3045c379489f0252a">tGate</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  </div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="QuEST__common_8c.html#a0bd738cb7e7cdea8f1ce1e640d427d4c">statevec_tGate</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="QuEST__common_8c.html#a3ce1b05fee70d930791513fec378d229">statevec_tGateConj</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>);</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  </div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="QuEST__qasm_8c.html#a81749d23b8c3c1acf87c9db675872c24">qasm_recordGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fadfa058950331ffdba0bf56cb2272e01f">GATE_T</a>, targetQubit);</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> }</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  </div>
<div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="group__unitary.html#ga05c7b8c9491410215e277ea83c0dfef8"> 486</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga05c7b8c9491410215e277ea83c0dfef8">phaseShift</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  </div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="QuEST__common_8c.html#a37bcd16fc0bbc8e665585ba9b99f382b">statevec_phaseShift</a>(qureg, targetQubit, angle);</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <a class="code" href="QuEST__common_8c.html#a37bcd16fc0bbc8e665585ba9b99f382b">statevec_phaseShift</a>(qureg, targetQubit+qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>, -angle);</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  </div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <a class="code" href="QuEST__qasm_8c.html#aabeb3e9ec6b2f30938c4cf9592e624fa">qasm_recordParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa4668b36d21aaeba1fb605b73881ca507">GATE_PHASE_SHIFT</a>, targetQubit, angle);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  </div>
<div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="group__unitary.html#ga69e074c8174e198ca014d9905b98b43d"> 497</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga69e074c8174e198ca014d9905b98b43d">controlledPhaseShift</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> idQubit1, <span class="keyword">const</span> <span class="keywordtype">int</span> idQubit2, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, idQubit1, idQubit2, __func__);</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  </div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="QuEST__internal_8h.html#adeb715f3f2c167f9bfbe92b75f5988ce">statevec_controlledPhaseShift</a>(qureg, idQubit1, idQubit2, angle);</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="QuEST__internal_8h.html#adeb715f3f2c167f9bfbe92b75f5988ce">statevec_controlledPhaseShift</a>(qureg, idQubit1+shift, idQubit2+shift, -angle);</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  </div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <a class="code" href="QuEST__qasm_8c.html#ae776148507b8f769cd00d1603212a028">qasm_recordControlledParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa4668b36d21aaeba1fb605b73881ca507">GATE_PHASE_SHIFT</a>, idQubit1, idQubit2, angle);</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> }</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  </div>
<div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="group__unitary.html#ga0832e39058d913ad47af44e97a854446"> 509</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga0832e39058d913ad47af44e97a854446">multiControlledPhaseShift</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> *controlQubits, <span class="keywordtype">int</span> numControlQubits, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="QuEST__validation_8c.html#a706acae568cbb0854b4729ed9e2f7e6d">validateMultiQubits</a>(qureg, controlQubits, numControlQubits, __func__);</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  </div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="QuEST__internal_8h.html#aa662796ea6e0f471143c53becae8c12c">statevec_multiControlledPhaseShift</a>(qureg, controlQubits, numControlQubits, angle);</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(controlQubits, numControlQubits, shift);</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <a class="code" href="QuEST__internal_8h.html#aa662796ea6e0f471143c53becae8c12c">statevec_multiControlledPhaseShift</a>(qureg, controlQubits, numControlQubits, -angle);</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(controlQubits, numControlQubits, -shift);</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  }</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  </div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <a class="code" href="QuEST__qasm_8c.html#aeca17d22c413cddbd4f5fd99712a2496">qasm_recordMultiControlledParamGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa4668b36d21aaeba1fb605b73881ca507">GATE_PHASE_SHIFT</a>, controlQubits, numControlQubits-1, controlQubits[numControlQubits-1], angle);</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> }</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  </div>
<div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="group__unitary.html#gadf4927a3d5dd8cd6d7400f2e810b4f05"> 523</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gadf4927a3d5dd8cd6d7400f2e810b4f05">controlledNot</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  </div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="QuEST__internal_8h.html#a114038296eb404b9b8a66aaad7b48800">statevec_controlledNot</a>(qureg, controlQubit, targetQubit);</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <a class="code" href="QuEST__internal_8h.html#a114038296eb404b9b8a66aaad7b48800">statevec_controlledNot</a>(qureg, controlQubit+shift, targetQubit+shift);</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  </div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <a class="code" href="QuEST__qasm_8c.html#aa4c380db9eda18892d5a86825fa4b165">qasm_recordControlledGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa13c9487aed515148e7594e35eb8dcc55">GATE_SIGMA_X</a>, controlQubit, targetQubit);</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> }</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  </div>
<div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="group__unitary.html#ga811e9b47126c83ff859059106f66cf96"> 535</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga811e9b47126c83ff859059106f66cf96">controlledPauliY</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit) {</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  </div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="QuEST__internal_8h.html#a708246b16236c492094c2633da0c08ff">statevec_controlledPauliY</a>(qureg, controlQubit, targetQubit);</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="QuEST__internal_8h.html#a9e647339720bf82b30c6331fad544ec5">statevec_controlledPauliYConj</a>(qureg, controlQubit+shift, targetQubit+shift);</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  </div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <a class="code" href="QuEST__qasm_8c.html#aa4c380db9eda18892d5a86825fa4b165">qasm_recordControlledGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725faa29b98cbb581abf5ec338a1763de7a1b">GATE_SIGMA_Y</a>, controlQubit, targetQubit);</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> }</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  </div>
<div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="group__unitary.html#ga4dcb9c6660d7a5f74c9597bc467d39ef"> 547</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga4dcb9c6660d7a5f74c9597bc467d39ef">controlledPhaseFlip</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> idQubit1, <span class="keyword">const</span> <span class="keywordtype">int</span> idQubit2) {</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, idQubit1, idQubit2, __func__);</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  </div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <a class="code" href="QuEST__internal_8h.html#a7c0067cb9f243ead20de7392aea328bc">statevec_controlledPhaseFlip</a>(qureg, idQubit1, idQubit2);</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="QuEST__internal_8h.html#a7c0067cb9f243ead20de7392aea328bc">statevec_controlledPhaseFlip</a>(qureg, idQubit1+shift, idQubit2+shift);</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  </div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="QuEST__qasm_8c.html#aa4c380db9eda18892d5a86825fa4b165">qasm_recordControlledGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa228cd6a7ad18928b794ee7ad1f1fc85e">GATE_SIGMA_Z</a>, idQubit1, idQubit2);</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> }</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  </div>
<div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="group__unitary.html#gad76781842af56821ed4e223bd776f057"> 559</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gad76781842af56821ed4e223bd776f057">multiControlledPhaseFlip</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> *controlQubits, <span class="keywordtype">int</span> numControlQubits) {</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="QuEST__validation_8c.html#a706acae568cbb0854b4729ed9e2f7e6d">validateMultiQubits</a>(qureg, controlQubits, numControlQubits, __func__);</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  </div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <a class="code" href="QuEST__internal_8h.html#ac4ee5979d475e8c729294b8ef7e0270d">statevec_multiControlledPhaseFlip</a>(qureg, controlQubits, numControlQubits);</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(controlQubits, numControlQubits, shift);</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <a class="code" href="QuEST__internal_8h.html#ac4ee5979d475e8c729294b8ef7e0270d">statevec_multiControlledPhaseFlip</a>(qureg, controlQubits, numControlQubits);</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(controlQubits, numControlQubits, -shift);</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  }</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  </div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <a class="code" href="QuEST__qasm_8c.html#a494d9fecfb2adeab56543110f16de74e">qasm_recordMultiControlledGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa228cd6a7ad18928b794ee7ad1f1fc85e">GATE_SIGMA_Z</a>, controlQubits, numControlQubits-1, controlQubits[numControlQubits-1]);</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> }</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  </div>
<div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="group__unitary.html#gac5c485fe330636966effc0642ba2bd99"> 573</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#gac5c485fe330636966effc0642ba2bd99">rotateAroundAxis</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> rotQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle, <a class="code" href="structVector.html">Vector</a> axis) {</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, rotQubit, __func__);</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <a class="code" href="QuEST__validation_8c.html#a782c6f57939eeb72b7be8e247979f3be">validateVector</a>(axis, __func__);</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  </div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <a class="code" href="QuEST__common_8c.html#a65b9087ca37c096caa5c6e8586b67946">statevec_rotateAroundAxis</a>(qureg, rotQubit, angle, axis);</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <a class="code" href="QuEST__common_8c.html#af9839c40de8df0cecc72a0258a20d979">statevec_rotateAroundAxisConj</a>(qureg, rotQubit+shift, angle, axis);</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  </div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <a class="code" href="QuEST__qasm_8c.html#a221776c7112dd6ab8aa13a164abc7e18">qasm_recordAxisRotation</a>(qureg, angle, axis, rotQubit);</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> }</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  </div>
<div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="group__unitary.html#ga82bf9aaf01430d3ecfde52b7731421d7"> 586</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga82bf9aaf01430d3ecfde52b7731421d7">controlledRotateAroundAxis</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> controlQubit, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle, <a class="code" href="structVector.html">Vector</a> axis) {</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <a class="code" href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a>(qureg, controlQubit, targetQubit, __func__);</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="QuEST__validation_8c.html#a782c6f57939eeb72b7be8e247979f3be">validateVector</a>(axis, __func__);</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  </div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <a class="code" href="QuEST__common_8c.html#a2c489375aad6fb71203553c60bff043b">statevec_controlledRotateAroundAxis</a>(qureg, controlQubit, targetQubit, angle, axis);</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <a class="code" href="QuEST__common_8c.html#aeb4ddeb09a3c0fa39ac33984bd5ca0ea">statevec_controlledRotateAroundAxisConj</a>(qureg, controlQubit+shift, targetQubit+shift, angle, axis);</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  }</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  </div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="QuEST__qasm_8c.html#a33be8162c9633bb8015f06b38cf70735">qasm_recordControlledAxisRotation</a>(qureg, angle, axis, controlQubit, targetQubit);</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> }</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  </div>
<div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="group__unitary.html#ga820fd139c035136819e371308c206e36"> 599</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga820fd139c035136819e371308c206e36">swapGate</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> qb1, <span class="keywordtype">int</span> qb2) {</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="QuEST__validation_8c.html#aed5f85789dc4fa43b64e99e6b538035c">validateUniqueTargets</a>(qureg, qb1, qb2, __func__);</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  </div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <a class="code" href="QuEST__internal_8h.html#ab7478fcaf6357ab202d72853b672e375">statevec_swapQubitAmps</a>(qureg, qb1, qb2);</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <a class="code" href="QuEST__internal_8h.html#ab7478fcaf6357ab202d72853b672e375">statevec_swapQubitAmps</a>(qureg, qb1+shift, qb2+shift);</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  }</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  </div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="QuEST__qasm_8c.html#aa4c380db9eda18892d5a86825fa4b165">qasm_recordControlledGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fab12d052de2b7c59c6ab87710fd7d3c78">GATE_SWAP</a>, qb1, qb2);</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> }</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  </div>
<div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="group__unitary.html#ga75d5e65f87c68403602a669b9c6d52b0"> 611</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga75d5e65f87c68403602a669b9c6d52b0">sqrtSwapGate</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> qb1, <span class="keywordtype">int</span> qb2) {</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <a class="code" href="QuEST__validation_8c.html#aed5f85789dc4fa43b64e99e6b538035c">validateUniqueTargets</a>(qureg, qb1, qb2, __func__);</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <a class="code" href="QuEST__validation_8c.html#aa28b7d9c0c3cf9c4be0e324fb9d6bf76">validateMultiQubitMatrixFitsInNode</a>(qureg, 2, __func__); <span class="comment">// uses 2qb unitary in QuEST_common</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  </div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <a class="code" href="QuEST__common_8c.html#a6550462400942be61b171c8840b36aa1">statevec_sqrtSwapGate</a>(qureg, qb1, qb2);</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="QuEST__common_8c.html#a33cde9b6518d55a544eff20301a5d844">statevec_sqrtSwapGateConj</a>(qureg, qb1+shift, qb2+shift);</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  </div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="QuEST__qasm_8c.html#aa4c380db9eda18892d5a86825fa4b165">qasm_recordControlledGate</a>(qureg, <a class="code" href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fab656861dfb036cbcf7009f02a8949253">GATE_SQRT_SWAP</a>, qb1, qb2);</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> }</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  </div>
<div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="group__unitary.html#ga3250d0d95b5d755cad542a6a2372b894"> 624</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga3250d0d95b5d755cad542a6a2372b894">multiRotateZ</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* qubits, <span class="keywordtype">int</span> numQubits, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <a class="code" href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a>(qureg, qubits, numQubits, __func__);</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  </div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> mask = <a class="code" href="QuEST__common_8c.html#abd1285091450c7c2806cc26c71eb5df2">getQubitBitMask</a>(qubits, numQubits);</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <a class="code" href="QuEST__internal_8h.html#a8d88b4ed94ab024e5e7b2f1f4f505b44">statevec_multiRotateZ</a>(qureg, mask, angle);</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <a class="code" href="QuEST__internal_8h.html#a8d88b4ed94ab024e5e7b2f1f4f505b44">statevec_multiRotateZ</a>(qureg, mask << shift, -angle);</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  </div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="comment">// @TODO: create actual QASM</span></div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, </div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="stringliteral">"Here a %d-qubit multiRotateZ of angle %g was performed (QASM not yet implemented)"</span>,</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  numQubits, angle);</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> }</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  </div>
<div class="line"><a name="l00640"></a><span class="lineno"><a class="line" href="group__unitary.html#ga34aa4865c92f9aa5d898c91286c9eca5"> 640</a></span> <span class="keywordtype">void</span> <a class="code" href="group__unitary.html#ga34aa4865c92f9aa5d898c91286c9eca5">multiRotatePauli</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* targetQubits, <span class="keyword">enum</span> <a class="code" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a>* targetPaulis, <span class="keywordtype">int</span> numTargets, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle) {</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <a class="code" href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a>(qureg, targetQubits, numTargets, __func__);</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="QuEST__validation_8c.html#aa194ba5f5c6e19c6caa4c715b3dbefcc">validatePauliCodes</a>(targetPaulis, numTargets, __func__);</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  </div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordtype">int</span> conj=0;</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <a class="code" href="QuEST__common_8c.html#a2153d8611247dd3a2ef483355265cc99">statevec_multiRotatePauli</a>(qureg, targetQubits, targetPaulis, numTargets, angle, conj);</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  conj = 1;</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordtype">int</span> shift = qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targetQubits, numTargets, shift);</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <a class="code" href="QuEST__common_8c.html#a2153d8611247dd3a2ef483355265cc99">statevec_multiRotatePauli</a>(qureg, targetQubits, targetPaulis, numTargets, angle, conj);</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <a class="code" href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a>(targetQubits, numTargets, -shift);</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  </div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="comment">// @TODO: create actual QASM</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, </div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="stringliteral">"Here a %d-qubit multiRotatePauli of angle %g was performed (QASM not yet implemented)"</span>,</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  numTargets, angle);</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> }</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  </div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  </div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  </div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="comment"> * register attributes</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  </div>
<div class="line"><a name="l00666"></a><span class="lineno"><a class="line" href="group__calc.html#ga73036c778d800703585ab3d8796a915f"> 666</a></span> <span class="keywordtype">int</span> <a class="code" href="group__calc.html#ga73036c778d800703585ab3d8796a915f">getNumQubits</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">return</span> qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> }</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  </div>
<div class="line"><a name="l00670"></a><span class="lineno"><a class="line" href="group__calc.html#ga8cbe422d4981bf06847d229a4c6aa3df"> 670</a></span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="group__calc.html#ga8cbe422d4981bf06847d229a4c6aa3df">getNumAmps</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  </div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">return</span> qureg.<a class="code" href="structQureg.html#adef4935cac95763c29164cf99b144ed4">numAmpsTotal</a>;</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> }</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  </div>
<div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="group__calc.html#ga1416145280c62c5dd5ec9bed89b4cd05"> 676</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga1416145280c62c5dd5ec9bed89b4cd05">getRealAmp</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> index) {</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <a class="code" href="QuEST__validation_8c.html#a5f87419b253a97f6caadb72b507b9853">validateAmpIndex</a>(qureg, index, __func__);</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  </div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#abc9a9ef4344c7faaaf28ac25c76649b9">statevec_getRealAmp</a>(qureg, index);</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> }</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  </div>
<div class="line"><a name="l00683"></a><span class="lineno"><a class="line" href="group__calc.html#gad575782de461d9ab0975b38cc7850f1a"> 683</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#gad575782de461d9ab0975b38cc7850f1a">getImagAmp</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> index) {</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <a class="code" href="QuEST__validation_8c.html#a5f87419b253a97f6caadb72b507b9853">validateAmpIndex</a>(qureg, index, __func__);</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  </div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#abd509244d57657e148e4084c5ab5d28f">statevec_getImagAmp</a>(qureg, index);</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> }</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  </div>
<div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="group__calc.html#ga4a14d22379d399760b0cfc5c8053589b"> 690</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga4a14d22379d399760b0cfc5c8053589b">getProbAmp</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> index) {</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <a class="code" href="QuEST__validation_8c.html#a5f87419b253a97f6caadb72b507b9853">validateAmpIndex</a>(qureg, index, __func__);</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  </div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__common_8c.html#a3afe58e49dce5536bc4c1b7caddf44a6">statevec_getProbAmp</a>(qureg, index);</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> }</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  </div>
<div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="group__calc.html#ga30d6f8b7c766c9c9914b2c61a2fc0def"> 697</a></span> <a class="code" href="structComplex.html">Complex</a> <a class="code" href="group__calc.html#ga30d6f8b7c766c9c9914b2c61a2fc0def">getAmp</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> index) {</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <a class="code" href="QuEST__validation_8c.html#a5f87419b253a97f6caadb72b507b9853">validateAmpIndex</a>(qureg, index, __func__);</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  </div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <a class="code" href="structComplex.html">Complex</a> amp;</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  amp.<a class="code" href="structComplex.html#ab5b2e2eca02131fc74b289a83636cbe3">real</a> = <a class="code" href="QuEST__internal_8h.html#abc9a9ef4344c7faaaf28ac25c76649b9">statevec_getRealAmp</a>(qureg, index);</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  amp.<a class="code" href="structComplex.html#a84f5439aad0ef495efdd3b4c1c02d27e">imag</a> = <a class="code" href="QuEST__internal_8h.html#abd509244d57657e148e4084c5ab5d28f">statevec_getImagAmp</a>(qureg, index);</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">return</span> amp;</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> }</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  </div>
<div class="line"><a name="l00707"></a><span class="lineno"><a class="line" href="group__calc.html#gadca286c4ad5cde6124d4e80a7ab95a68"> 707</a></span> <a class="code" href="structComplex.html">Complex</a> <a class="code" href="group__calc.html#gadca286c4ad5cde6124d4e80a7ab95a68">getDensityAmp</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> row, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> col) {</div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <a class="code" href="QuEST__validation_8c.html#a5f87419b253a97f6caadb72b507b9853">validateAmpIndex</a>(qureg, row, __func__);</div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <a class="code" href="QuEST__validation_8c.html#a5f87419b253a97f6caadb72b507b9853">validateAmpIndex</a>(qureg, col, __func__);</div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  </div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> ind = row + col*(1LL << qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>);</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <a class="code" href="structComplex.html">Complex</a> amp;</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  amp.<a class="code" href="structComplex.html#ab5b2e2eca02131fc74b289a83636cbe3">real</a> = <a class="code" href="QuEST__internal_8h.html#abc9a9ef4344c7faaaf28ac25c76649b9">statevec_getRealAmp</a>(qureg, ind);</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  amp.imag = <a class="code" href="QuEST__internal_8h.html#abd509244d57657e148e4084c5ab5d28f">statevec_getImagAmp</a>(qureg, ind);</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">return</span> amp;</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> }</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  </div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  </div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="comment"> * non-unitary actions</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  </div>
<div class="line"><a name="l00724"></a><span class="lineno"><a class="line" href="group__normgate.html#gab164930b260718d85ed3f55f50c76a59"> 724</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__normgate.html#gab164930b260718d85ed3f55f50c76a59">collapseToOutcome</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> measureQubit, <span class="keywordtype">int</span> outcome) {</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, measureQubit, __func__);</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <a class="code" href="QuEST__validation_8c.html#ad613c75ff252a88e54f911053bd2032c">validateOutcome</a>(outcome, __func__);</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  </div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> outcomeProb;</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) {</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  outcomeProb = <a class="code" href="QuEST__internal_8h.html#ad405e3fac20997043e0236b751e44270">densmatr_calcProbOfOutcome</a>(qureg, measureQubit, outcome);</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <a class="code" href="QuEST__validation_8c.html#a8accabb8a9d573c2ff80305841c3053d">validateMeasurementProb</a>(outcomeProb, __func__);</div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <a class="code" href="QuEST__internal_8h.html#ab321af37fe3490253e12b7c70b8d2a98">densmatr_collapseToKnownProbOutcome</a>(qureg, measureQubit, outcome, outcomeProb);</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  outcomeProb = <a class="code" href="QuEST__internal_8h.html#ab33cdf01831c4545e51299178acf7f27">statevec_calcProbOfOutcome</a>(qureg, measureQubit, outcome);</div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="QuEST__validation_8c.html#a8accabb8a9d573c2ff80305841c3053d">validateMeasurementProb</a>(outcomeProb, __func__);</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <a class="code" href="QuEST__internal_8h.html#ae7f25bb40734e18a992403b17355893b">statevec_collapseToKnownProbOutcome</a>(qureg, measureQubit, outcome, outcomeProb);</div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  }</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  </div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <a class="code" href="QuEST__qasm_8c.html#a76841e952d8c587c0c5ba947d86b061c">qasm_recordMeasurement</a>(qureg, measureQubit);</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> outcomeProb;</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> }</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  </div>
<div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="group__normgate.html#gae192ac0759e46c7b20a7182020155240"> 743</a></span> <span class="keywordtype">int</span> <a class="code" href="group__normgate.html#gae192ac0759e46c7b20a7182020155240">measureWithStats</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> measureQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *outcomeProb) {</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, measureQubit, __func__);</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  </div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordtype">int</span> outcome;</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>)</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  outcome = <a class="code" href="QuEST__common_8c.html#ae4ebc1f4dd48922bfb30ad1692310269">densmatr_measureWithStats</a>(qureg, measureQubit, outcomeProb);</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  outcome = <a class="code" href="QuEST__common_8c.html#ac2eb81c71d0e0fbec7be5b45b1db1448">statevec_measureWithStats</a>(qureg, measureQubit, outcomeProb);</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  </div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <a class="code" href="QuEST__qasm_8c.html#a76841e952d8c587c0c5ba947d86b061c">qasm_recordMeasurement</a>(qureg, measureQubit);</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">return</span> outcome;</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> }</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  </div>
<div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="group__normgate.html#ga2a3794103125f1e3cfa103f8b1963656"> 756</a></span> <span class="keywordtype">int</span> <a class="code" href="group__normgate.html#ga2a3794103125f1e3cfa103f8b1963656">measure</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> measureQubit) {</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, measureQubit, __func__);</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  </div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordtype">int</span> outcome;</div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> discardedProb;</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>)</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  outcome = <a class="code" href="QuEST__common_8c.html#ae4ebc1f4dd48922bfb30ad1692310269">densmatr_measureWithStats</a>(qureg, measureQubit, &discardedProb);</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  outcome = <a class="code" href="QuEST__common_8c.html#ac2eb81c71d0e0fbec7be5b45b1db1448">statevec_measureWithStats</a>(qureg, measureQubit, &discardedProb);</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  </div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <a class="code" href="QuEST__qasm_8c.html#a76841e952d8c587c0c5ba947d86b061c">qasm_recordMeasurement</a>(qureg, measureQubit);</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">return</span> outcome;</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> }</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  </div>
<div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga97d563fa8f4bc51f720bbb653f5480b3"> 770</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga97d563fa8f4bc51f720bbb653f5480b3">mixDensityMatrix</a>(<a class="code" href="structQureg.html">Qureg</a> combineQureg, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> otherProb, <a class="code" href="structQureg.html">Qureg</a> otherQureg) {</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(combineQureg, __func__);</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(otherQureg, __func__);</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(combineQureg, otherQureg, __func__);</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <a class="code" href="QuEST__validation_8c.html#ae06b0f6b669c03241d0db3b9dc560da1">validateProb</a>(otherProb, __func__);</div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  </div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <a class="code" href="QuEST__internal_8h.html#a8adaba9dbdad6f7ab41ae4b8db0abefe">densmatr_mixDensityMatrix</a>(combineQureg, otherProb, otherQureg);</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> }</div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  </div>
<div class="line"><a name="l00779"></a><span class="lineno"><a class="line" href="group__init.html#gabc0c64f8adf307d2a44184dc0f8ca66e"> 779</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#gabc0c64f8adf307d2a44184dc0f8ca66e">setAmps</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> startInd, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* reals, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* imags, <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> numAmps) {</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <a class="code" href="QuEST__validation_8c.html#a6904359f35d0b61b2c8fcecfac836033">validateNumAmps</a>(qureg, startInd, numAmps, __func__);</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  </div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <a class="code" href="QuEST__internal_8h.html#aa121d55f2ca09c06a96ddcd433c60b0f">statevec_setAmps</a>(qureg, startInd, reals, imags, numAmps);</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  </div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, some amplitudes in the statevector were manually edited."</span>);</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> }</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  </div>
<div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="QuEST__debug_8h.html#ae85a2c07d2f1ff2265c4bf22e17653eb"> 788</a></span> <span class="keywordtype">void</span> <a class="code" href="QuEST_8c.html#ae85a2c07d2f1ff2265c4bf22e17653eb">setDensityAmps</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* reals, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* imags) {</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> numAmps = qureg.<a class="code" href="structQureg.html#adef4935cac95763c29164cf99b144ed4">numAmpsTotal</a>; </div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <a class="code" href="QuEST__internal_8h.html#aa121d55f2ca09c06a96ddcd433c60b0f">statevec_setAmps</a>(qureg, 0, reals, imags, numAmps);</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  </div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, <span class="stringliteral">"Here, some amplitudes in the density matrix were manually edited."</span>);</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> }</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  </div>
<div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="group__init.html#ga5d0f3f71ea38d3c44597f8c2c2f014d4"> 795</a></span> <span class="keywordtype">void</span> <a class="code" href="group__init.html#ga5d0f3f71ea38d3c44597f8c2c2f014d4">setWeightedQureg</a>(<a class="code" href="structComplex.html">Complex</a> fac1, <a class="code" href="structQureg.html">Qureg</a> qureg1, <a class="code" href="structComplex.html">Complex</a> fac2, <a class="code" href="structQureg.html">Qureg</a> qureg2, <a class="code" href="structComplex.html">Complex</a> facOut, <a class="code" href="structQureg.html">Qureg</a> out) {</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <a class="code" href="QuEST__validation_8c.html#a031812e1cf2c98d72d795cea7bbe73a5">validateMatchingQuregTypes</a>(qureg1, qureg2, __func__);</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <a class="code" href="QuEST__validation_8c.html#a031812e1cf2c98d72d795cea7bbe73a5">validateMatchingQuregTypes</a>(qureg1, out, __func__);</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(qureg1, qureg2, __func__);</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(qureg1, out, __func__);</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  </div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <a class="code" href="QuEST__internal_8h.html#ad64a23933361fafc1b6b1787759c2663">statevec_setWeightedQureg</a>(fac1, qureg1, fac2, qureg2, facOut, out);</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  </div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(out, <span class="stringliteral">"Here, the register was modified to an undisclosed and possibly unphysical state (setWeightedQureg)."</span>);</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> } </div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  </div>
<div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="group__operator.html#ga6fc26cf857db070e12959e59ecfed8a6"> 806</a></span> <span class="keywordtype">void</span> <a class="code" href="group__operator.html#ga6fc26cf857db070e12959e59ecfed8a6">applyPauliSum</a>(<a class="code" href="structQureg.html">Qureg</a> inQureg, <span class="keyword">enum</span> <a class="code" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a>* allPauliCodes, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* termCoeffs, <span class="keywordtype">int</span> numSumTerms, <a class="code" href="structQureg.html">Qureg</a> outQureg) {</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <a class="code" href="QuEST__validation_8c.html#a031812e1cf2c98d72d795cea7bbe73a5">validateMatchingQuregTypes</a>(inQureg, outQureg, __func__);</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(inQureg, outQureg, __func__);</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <a class="code" href="QuEST__validation_8c.html#a5be128290a7bba9a7f12d32cabe2276b">validateNumPauliSumTerms</a>(numSumTerms, __func__);</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <a class="code" href="QuEST__validation_8c.html#aa194ba5f5c6e19c6caa4c715b3dbefcc">validatePauliCodes</a>(allPauliCodes, numSumTerms*inQureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>, __func__);</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  </div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <a class="code" href="QuEST__common_8c.html#af71c2470694795a8d639be8ff9c34ed5">statevec_applyPauliSum</a>(inQureg, allPauliCodes, termCoeffs, numSumTerms, outQureg);</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  </div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(outQureg, <span class="stringliteral">"Here, the register was modified to an undisclosed and possibly unphysical state (applyPauliSum)."</span>);</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> }</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  </div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  </div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <span class="comment"> * calculations</span></div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  </div>
<div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="group__calc.html#gab082910d33473ec29e1d5852943de468"> 822</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#gab082910d33473ec29e1d5852943de468">calcTotalProb</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>) </div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#a6153547f245c05874161a105e9a2f02c">densmatr_calcTotalProb</a>(qureg);</div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#ad65ad1b5ea6f30b0c6b4ffda96e1a8e6">statevec_calcTotalProb</a>(qureg);</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> }</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  </div>
<div class="line"><a name="l00829"></a><span class="lineno"><a class="line" href="group__calc.html#ga374ad70804998394ae41ebfe106258a6"> 829</a></span> <a class="code" href="structComplex.html">Complex</a> <a class="code" href="group__calc.html#ga374ad70804998394ae41ebfe106258a6">calcInnerProduct</a>(<a class="code" href="structQureg.html">Qureg</a> bra, <a class="code" href="structQureg.html">Qureg</a> ket) {</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(bra, __func__);</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(ket, __func__);</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(bra, ket, __func__);</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  </div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#a7ebd3198a198f4cd20840f64fd8b84d0">statevec_calcInnerProduct</a>(bra, ket);</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> }</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  </div>
<div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="group__calc.html#ga658b3a5cab5e73a17a7fd76a83583a22"> 837</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga658b3a5cab5e73a17a7fd76a83583a22">calcDensityInnerProduct</a>(<a class="code" href="structQureg.html">Qureg</a> rho1, <a class="code" href="structQureg.html">Qureg</a> rho2) {</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(rho1, __func__);</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(rho2, __func__);</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(rho1, rho2, __func__);</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  </div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#a6ff3dc624b5fafe8edae4fe327c255a0">densmatr_calcInnerProduct</a>(rho1, rho2);</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span> }</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  </div>
<div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="group__calc.html#ga2a0fbd65f42d35dcd5ae966c48826920"> 845</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga2a0fbd65f42d35dcd5ae966c48826920">calcProbOfOutcome</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> measureQubit, <span class="keywordtype">int</span> outcome) {</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, measureQubit, __func__);</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <a class="code" href="QuEST__validation_8c.html#ad613c75ff252a88e54f911053bd2032c">validateOutcome</a>(outcome, __func__);</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  </div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>)</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#ad405e3fac20997043e0236b751e44270">densmatr_calcProbOfOutcome</a>(qureg, measureQubit, outcome);</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#ab33cdf01831c4545e51299178acf7f27">statevec_calcProbOfOutcome</a>(qureg, measureQubit, outcome);</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> }</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  </div>
<div class="line"><a name="l00855"></a><span class="lineno"><a class="line" href="group__calc.html#ga683779343fb2c6055f6b1d01079c2ede"> 855</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga683779343fb2c6055f6b1d01079c2ede">calcPurity</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  </div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#ae45eefa65f4ecd37bab84fade7cf7f1f">densmatr_calcPurity</a>(qureg);</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span> }</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  </div>
<div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="group__calc.html#gaa266ed6c8ae5d0d0f49e1ac50819cffc"> 861</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#gaa266ed6c8ae5d0d0f49e1ac50819cffc">calcFidelity</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <a class="code" href="structQureg.html">Qureg</a> pureState) {</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <a class="code" href="QuEST__validation_8c.html#a7adc86571f1154558676d95daf0cbd1f">validateSecondQuregStateVec</a>(pureState, __func__);</div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(qureg, pureState, __func__);</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  </div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">if</span> (qureg.<a class="code" href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">isDensityMatrix</a>)</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#aa6c3f86010ad398f42b0577ea3bb5bcf">densmatr_calcFidelity</a>(qureg, pureState);</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__common_8c.html#aeeec9fe1501e25930adf6c38763a158e">statevec_calcFidelity</a>(qureg, pureState);</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> }</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  </div>
<div class="line"><a name="l00871"></a><span class="lineno"><a class="line" href="group__calc.html#ga15cfad3f3d26339128e3be32ae7deacd"> 871</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga15cfad3f3d26339128e3be32ae7deacd">calcExpecPauliProd</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* targetQubits, <span class="keyword">enum</span> <a class="code" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a>* pauliCodes, <span class="keywordtype">int</span> numTargets, <a class="code" href="structQureg.html">Qureg</a> workspace) {</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <a class="code" href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a>(qureg, targetQubits, numTargets, __func__);</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="QuEST__validation_8c.html#aa194ba5f5c6e19c6caa4c715b3dbefcc">validatePauliCodes</a>(pauliCodes, numTargets, __func__);</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="QuEST__validation_8c.html#a031812e1cf2c98d72d795cea7bbe73a5">validateMatchingQuregTypes</a>(qureg, workspace, __func__);</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(qureg, workspace, __func__);</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  </div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__common_8c.html#aef380928d1b0003411d6159ca6594cd5">statevec_calcExpecPauliProd</a>(qureg, targetQubits, pauliCodes, numTargets, workspace);</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span> }</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  </div>
<div class="line"><a name="l00880"></a><span class="lineno"><a class="line" href="group__calc.html#ga50ee589fd5ceab52fdd70d0082352b41"> 880</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga50ee589fd5ceab52fdd70d0082352b41">calcExpecPauliSum</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">enum</span> <a class="code" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a>* allPauliCodes, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* termCoeffs, <span class="keywordtype">int</span> numSumTerms, <a class="code" href="structQureg.html">Qureg</a> workspace) {</div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <a class="code" href="QuEST__validation_8c.html#a5be128290a7bba9a7f12d32cabe2276b">validateNumPauliSumTerms</a>(numSumTerms, __func__);</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <a class="code" href="QuEST__validation_8c.html#aa194ba5f5c6e19c6caa4c715b3dbefcc">validatePauliCodes</a>(allPauliCodes, numSumTerms*qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>, __func__);</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="QuEST__validation_8c.html#a031812e1cf2c98d72d795cea7bbe73a5">validateMatchingQuregTypes</a>(qureg, workspace, __func__);</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(qureg, workspace, __func__);</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  </div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__common_8c.html#ae0cfea24091c8336146aa84c2253992e">statevec_calcExpecPauliSum</a>(qureg, allPauliCodes, termCoeffs, numSumTerms, workspace);</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  </div>
<div class="line"><a name="l00889"></a><span class="lineno"><a class="line" href="group__calc.html#ga87ddbe5c8281543541ccd99e0dafd387"> 889</a></span> <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> <a class="code" href="group__calc.html#ga87ddbe5c8281543541ccd99e0dafd387">calcHilbertSchmidtDistance</a>(<a class="code" href="structQureg.html">Qureg</a> a, <a class="code" href="structQureg.html">Qureg</a> b) {</div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(a, __func__);</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(b, __func__);</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(a, b, __func__);</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  </div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#a8c9da88f734b0862f4cce7d819e6d3b5">densmatr_calcHilbertSchmidtDistance</a>(a, b);</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span> }</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  </div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  </div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="comment"> * decoherence</span></div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  </div>
<div class="line"><a name="l00902"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga91edd6320f517810a58afd4b845edf12"> 902</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga91edd6320f517810a58afd4b845edf12">mixDephasing</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob) {</div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <a class="code" href="QuEST__validation_8c.html#aef4d89ae4b8a8b4f414ebd03ef4c6acf">validateOneQubitDephaseProb</a>(prob, __func__);</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  </div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <a class="code" href="QuEST__internal_8h.html#a515b6a920b1715d4eae25dcf29f39b95">densmatr_mixDephasing</a>(qureg, targetQubit, 2*prob);</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, </div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="stringliteral">"Here, a phase (Z) error occured on qubit %d with probability %g"</span>, targetQubit, prob);</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> }</div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  </div>
<div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga14282bdb1dc65760ca9ecbe6305eb770"> 912</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga14282bdb1dc65760ca9ecbe6305eb770">mixTwoQubitDephasing</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> qubit1, <span class="keywordtype">int</span> qubit2, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob) {</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <a class="code" href="QuEST__validation_8c.html#aed5f85789dc4fa43b64e99e6b538035c">validateUniqueTargets</a>(qureg, qubit1, qubit2, __func__);</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <a class="code" href="QuEST__validation_8c.html#a2f58e35b04edfbc053e0c9ae19f1be97">validateTwoQubitDephaseProb</a>(prob, __func__);</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  </div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <a class="code" href="QuEST__common_8c.html#ac8ea84dd85eca525daeeb30b3c96b673">ensureIndsIncrease</a>(&qubit1, &qubit2);</div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="code" href="QuEST__internal_8h.html#a5090b080392ab9be8fcf538161d4e5c1">densmatr_mixTwoQubitDephasing</a>(qureg, qubit1, qubit2, (4*prob)/3.0);</div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg,</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="stringliteral">"Here, a phase (Z) error occured on either or both of qubits "</span></div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="stringliteral">"%d and %d with total probability %g"</span>, qubit1, qubit2, prob);</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span> }</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  </div>
<div class="line"><a name="l00924"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga556fe013915bca4626367d98db948f5e"> 924</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga556fe013915bca4626367d98db948f5e">mixDepolarising</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob) {</div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <a class="code" href="QuEST__validation_8c.html#a269b2f7ee5c4376ae633cd2b77a7be38">validateOneQubitDepolProb</a>(prob, __func__);</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  </div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <a class="code" href="QuEST__internal_8h.html#a3765e92c79d4c2a0df6761a0e7da2676">densmatr_mixDepolarising</a>(qureg, targetQubit, (4*prob)/3.0);</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg,</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="stringliteral">"Here, a homogeneous depolarising error (X, Y, or Z) occured on "</span></div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="stringliteral">"qubit %d with total probability %g"</span>, targetQubit, prob);</div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> }</div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  </div>
<div class="line"><a name="l00935"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga3e39405eb2ce05ce4bb88c0f00dace45"> 935</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga3e39405eb2ce05ce4bb88c0f00dace45">mixDamping</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keyword">const</span> <span class="keywordtype">int</span> targetQubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob) {</div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, targetQubit, __func__);</div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <a class="code" href="QuEST__validation_8c.html#a260639d187d09cbeef3ff36f0d4d1f0e">validateOneQubitDampingProb</a>(prob, __func__);</div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  </div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="QuEST__internal_8h.html#a72b26b971531dbdc64de20501f368545">densmatr_mixDamping</a>(qureg, targetQubit, prob);</div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span> }</div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  </div>
<div class="line"><a name="l00943"></a><span class="lineno"><a class="line" href="group__decoherence.html#gacfc45a8fc86ee18f60866bbd0c874ed0"> 943</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#gacfc45a8fc86ee18f60866bbd0c874ed0">mixTwoQubitDepolarising</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> qubit1, <span class="keywordtype">int</span> qubit2, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob) {</div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="QuEST__validation_8c.html#aed5f85789dc4fa43b64e99e6b538035c">validateUniqueTargets</a>(qureg, qubit1, qubit2, __func__);</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="QuEST__validation_8c.html#abedaf81fa9ed252b2f8fbd1bd73f8f8e">validateTwoQubitDepolProb</a>(prob, __func__);</div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  </div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <a class="code" href="QuEST__common_8c.html#ac8ea84dd85eca525daeeb30b3c96b673">ensureIndsIncrease</a>(&qubit1, &qubit2);</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="code" href="QuEST__internal_8h.html#a43afa97e300b87bce7f3eb1213eb05f6">densmatr_mixTwoQubitDepolarising</a>(qureg, qubit1, qubit2, (16*prob)/15.0);</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg,</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="stringliteral">"Here, a homogeneous depolarising error occured on qubits %d and %d "</span></div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="stringliteral">"with total probability %g"</span>, qubit1, qubit2, prob);</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> }</div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  </div>
<div class="line"><a name="l00955"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga9a77f84e1aa7d25d036b14d7d0cd8b61"> 955</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga9a77f84e1aa7d25d036b14d7d0cd8b61">mixPauli</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> qubit, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> probX, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> probY, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> probZ) {</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, qubit, __func__);</div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <a class="code" href="QuEST__validation_8c.html#a1b018a5766c1b26c731e8dcaa76abb19">validateOneQubitPauliProbs</a>(probX, probY, probZ, __func__);</div>
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  </div>
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <a class="code" href="QuEST__common_8c.html#a63bf6575f12d7113fb854a2b6cc1a756">densmatr_mixPauli</a>(qureg, qubit, probX, probY, probZ);</div>
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg,</div>
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="stringliteral">"Here, X, Y and Z errors occured on qubit %d with probabilities "</span></div>
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="stringliteral">"%g, %g and %g respectively"</span>, qubit, probX, probY, probZ);</div>
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> }</div>
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  </div>
<div class="line"><a name="l00966"></a><span class="lineno"><a class="line" href="group__decoherence.html#gacb7faa9d8afb0f4270c866424fffbccd"> 966</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#gacb7faa9d8afb0f4270c866424fffbccd">mixKrausMap</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> target, <a class="code" href="structComplexMatrix2.html">ComplexMatrix2</a> *ops, <span class="keywordtype">int</span> numOps) {</div>
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(qureg, target, __func__);</div>
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <a class="code" href="QuEST__validation_8c.html#a2d43dbc8bf59a58b0ba9da31a8b7db8b">validateOneQubitKrausMap</a>(qureg, ops, numOps, __func__);</div>
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  </div>
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <a class="code" href="QuEST__common_8c.html#ab987904f721746d1176aba7ac6b566fa">densmatr_mixKrausMap</a>(qureg, target, ops, numOps);</div>
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, </div>
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="stringliteral">"Here, an undisclosed Kraus map was effected on qubit %d"</span>, target);</div>
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> }</div>
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  </div>
<div class="line"><a name="l00976"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga2cf7dece0efea4207349f872cdcb7e81"> 976</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga2cf7dece0efea4207349f872cdcb7e81">mixTwoQubitKrausMap</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span> target1, <span class="keywordtype">int</span> target2, <a class="code" href="structComplexMatrix4.html">ComplexMatrix4</a> *ops, <span class="keywordtype">int</span> numOps) {</div>
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <a class="code" href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a>(qureg, (<span class="keywordtype">int</span>[]) {target1,target2}, 2, __func__);</div>
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <a class="code" href="QuEST__validation_8c.html#ad0f5b8fe9cf31ef3a565e722966a5511">validateTwoQubitKrausMap</a>(qureg, ops, numOps, __func__);</div>
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  </div>
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <a class="code" href="QuEST__common_8c.html#ab004038b5f906ea897621c88bf213129">densmatr_mixTwoQubitKrausMap</a>(qureg, target1, target2, ops, numOps);</div>
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg, </div>
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="stringliteral">"Here, an undisclosed two-qubit Kraus map was effected on qubits %d and %d"</span>, target1, target2);</div>
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> }</div>
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  </div>
<div class="line"><a name="l00986"></a><span class="lineno"><a class="line" href="group__decoherence.html#ga65b4c0944090fae78a37ba3b94811ace"> 986</a></span> <span class="keywordtype">void</span> <a class="code" href="group__decoherence.html#ga65b4c0944090fae78a37ba3b94811ace">mixMultiQubitKrausMap</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <span class="keywordtype">int</span>* targets, <span class="keywordtype">int</span> numTargets, <a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a>* ops, <span class="keywordtype">int</span> numOps) {</div>
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <a class="code" href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a>(qureg, __func__);</div>
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <a class="code" href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a>(qureg, targets, numTargets, __func__);</div>
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <a class="code" href="QuEST__validation_8c.html#a38738db33da795b9d52bace2d9fbe7ee">validateMultiQubitKrausMap</a>(qureg, numTargets, ops, numOps, __func__);</div>
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  </div>
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <a class="code" href="QuEST__common_8c.html#a99702f4667c429969d7e7b4ecd45c2f3">densmatr_mixMultiQubitKrausMap</a>(qureg, targets, numTargets, ops, numOps);</div>
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <a class="code" href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a>(qureg,</div>
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="stringliteral">"Here, an undisclosed %d-qubit Kraus map was applied to undisclosed qubits"</span>, numTargets);</div>
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> }</div>
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  </div>
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="comment"> * other data structures </span></div>
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  </div>
<div class="line"><a name="l01000"></a><span class="lineno"><a class="line" href="group__type.html#ga815103261fb22ea9690e1427571df00e"> 1000</a></span>  <a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a> <a class="code" href="group__type.html#ga815103261fb22ea9690e1427571df00e">createComplexMatrixN</a>(<span class="keywordtype">int</span> numQubits) {</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <a class="code" href="QuEST__validation_8c.html#a7c8491926b4c7b4bf8e8123f4464a08e">validateNumQubitsInMatrix</a>(numQubits, __func__);</div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  </div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordtype">int</span> numRows = 1 << numQubits;</div>
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  </div>
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a> m = {</div>
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  .<a class="code" href="structComplexMatrixN.html#a606f7afbc3f65a596bdca21cb43be6a8">numQubits</a> = numQubits,</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  .real = malloc(numRows * <span class="keyword">sizeof</span> *m.<a class="code" href="structComplexMatrixN.html#a446e8a077597e4f76049d547df0c9738">real</a>),</div>
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  .imag = malloc(numRows * <span class="keyword">sizeof</span> *m.<a class="code" href="structComplexMatrixN.html#afde13e469a3b4f179f45e53d1ec0a7cf">imag</a>)};</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  </div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> n=0; n < 1<<numQubits; n++) {</div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  m.<a class="code" href="structComplexMatrixN.html#a446e8a077597e4f76049d547df0c9738">real</a>[n] = calloc(numRows, <span class="keyword">sizeof</span> **m.<a class="code" href="structComplexMatrixN.html#a446e8a077597e4f76049d547df0c9738">real</a>);</div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  m.<a class="code" href="structComplexMatrixN.html#afde13e469a3b4f179f45e53d1ec0a7cf">imag</a>[n] = calloc(numRows, <span class="keyword">sizeof</span> **m.<a class="code" href="structComplexMatrixN.html#afde13e469a3b4f179f45e53d1ec0a7cf">imag</a>);</div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  }</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  </div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="comment">// error if the ComplexMatrixN was not successfully malloc'ds</span></div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <a class="code" href="QuEST__validation_8c.html#a6a3d99bc780707a90120a78a6e203792">validateMatrixInit</a>(m, __func__);</div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  </div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">return</span> m;</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  }</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  </div>
<div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="group__type.html#ga9df2f3d86be4a6e9aad481665e5e6753"> 1021</a></span> <span class="keywordtype">void</span> <a class="code" href="group__type.html#ga9df2f3d86be4a6e9aad481665e5e6753">destroyComplexMatrixN</a>(<a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a> m) {</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="comment">/* this checks m.real/imag != NULL, which is only ever set when the mallocs </span></div>
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="comment"> * in createComplexMatrixN fail, which already prompts an error. Hence </span></div>
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="comment"> * this check if useless </span></div>
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="comment"> */</span></div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <a class="code" href="QuEST__validation_8c.html#a6a3d99bc780707a90120a78a6e203792">validateMatrixInit</a>(m, __func__);</div>
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  </div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordtype">int</span> numRows = 1 << m.<a class="code" href="structComplexMatrixN.html#a606f7afbc3f65a596bdca21cb43be6a8">numQubits</a>;</div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> r=0; r < numRows; r++) {</div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  free(m.<a class="code" href="structComplexMatrixN.html#a446e8a077597e4f76049d547df0c9738">real</a>[r]);</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  free(m.<a class="code" href="structComplexMatrixN.html#afde13e469a3b4f179f45e53d1ec0a7cf">imag</a>[r]);</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  }</div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  free(m.<a class="code" href="structComplexMatrixN.html#a446e8a077597e4f76049d547df0c9738">real</a>);</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  free(m.<a class="code" href="structComplexMatrixN.html#afde13e469a3b4f179f45e53d1ec0a7cf">imag</a>);</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> }</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  </div>
<div class="line"><a name="l01037"></a><span class="lineno"><a class="line" href="group__type.html#ga429f1b90b3ef06c786dec8c7f0eda4ce"> 1037</a></span> <span class="keywordtype">void</span> <a class="code" href="group__type.html#ga429f1b90b3ef06c786dec8c7f0eda4ce">initComplexMatrixN</a>(<a class="code" href="structComplexMatrixN.html">ComplexMatrixN</a> m, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> re[][1<<m.<a class="code" href="structComplexMatrixN.html#a606f7afbc3f65a596bdca21cb43be6a8">numQubits</a>], <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> im[][1<<m.<a class="code" href="structComplexMatrixN.html#a606f7afbc3f65a596bdca21cb43be6a8">numQubits</a>]) {</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <a class="code" href="QuEST__validation_8c.html#a6a3d99bc780707a90120a78a6e203792">validateMatrixInit</a>(m, __func__);</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  </div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordtype">int</span> dim = 1 << m.<a class="code" href="structComplexMatrixN.html#a606f7afbc3f65a596bdca21cb43be6a8">numQubits</a>;</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<dim; i++)</div>
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j<dim; j++) {</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  m.<a class="code" href="structComplexMatrixN.html#a446e8a077597e4f76049d547df0c9738">real</a>[i][j] = re[i][j];</div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  m.<a class="code" href="structComplexMatrixN.html#afde13e469a3b4f179f45e53d1ec0a7cf">imag</a>[i][j] = im[i][j];</div>
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  }</div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> }</div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  </div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="comment">/*</span></div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="comment"> * debug</span></div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="comment"> */</span></div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  </div>
<div class="line"><a name="l01052"></a><span class="lineno"><a class="line" href="QuEST__debug_8h.html#a0bef4d330656ba2265569506a0a6400f"> 1052</a></span> <span class="keywordtype">int</span> <a class="code" href="QuEST_8c.html#acb5e66108a5c6cf36642148335c0d9ab">compareStates</a>(<a class="code" href="structQureg.html">Qureg</a> qureg1, <a class="code" href="structQureg.html">Qureg</a> qureg2, <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> precision) {</div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <a class="code" href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a>(qureg1, qureg2, __func__);</div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__internal_8h.html#ae6cecbad32a03416138b321cdc1a2c33">statevec_compareStates</a>(qureg1, qureg2, precision);</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> }</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  </div>
<div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="group__debug.html#gaa696c94112e5fbbc996af10dfc4e2c1c"> 1057</a></span> <span class="keywordtype">void</span> <a class="code" href="group__debug.html#gaa696c94112e5fbbc996af10dfc4e2c1c">initDebugState</a>(<a class="code" href="structQureg.html">Qureg</a> qureg) {</div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <a class="code" href="QuEST__internal_8h.html#ad9fd3017ea40cf63fd04b39e03494972">statevec_initDebugState</a>(qureg);</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> }</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  </div>
<div class="line"><a name="l01061"></a><span class="lineno"><a class="line" href="QuEST__debug_8h.html#a6456bc310db1989c5b17febdb23c2c93"> 1061</a></span> <span class="keywordtype">void</span> <a class="code" href="QuEST_8c.html#a6456bc310db1989c5b17febdb23c2c93">initStateFromSingleFile</a>(<a class="code" href="structQureg.html">Qureg</a> *qureg, <span class="keywordtype">char</span> filename[200], <a class="code" href="structQuESTEnv.html">QuESTEnv</a> env) {</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordtype">int</span> success = <a class="code" href="QuEST__internal_8h.html#a05756b45f10135bb2eeb07380f806c20">statevec_initStateFromSingleFile</a>(qureg, filename, env);</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <a class="code" href="QuEST__validation_8c.html#a5adacab391af7a5ef05cf4d934a94144">validateFileOpened</a>(success, __func__);</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> }</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  </div>
<div class="line"><a name="l01066"></a><span class="lineno"><a class="line" href="QuEST__debug_8h.html#a7ba64480d4c3f7b1c3ea90cc0245f3e8"> 1066</a></span> <span class="keywordtype">void</span> <a class="code" href="QuEST_8c.html#a7ba64480d4c3f7b1c3ea90cc0245f3e8">initStateOfSingleQubit</a>(<a class="code" href="structQureg.html">Qureg</a> *qureg, <span class="keywordtype">int</span> qubitId, <span class="keywordtype">int</span> outcome) {</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <a class="code" href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a>(*qureg, __func__);</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <a class="code" href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a>(*qureg, qubitId, __func__);</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <a class="code" href="QuEST__validation_8c.html#ad613c75ff252a88e54f911053bd2032c">validateOutcome</a>(outcome, __func__);</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <a class="code" href="QuEST__internal_8h.html#a923906770cac0da9e3459bae58de9e64">statevec_initStateOfSingleQubit</a>(qureg, qubitId, outcome);</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> }</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  </div>
<div class="line"><a name="l01073"></a><span class="lineno"><a class="line" href="group__debug.html#gaa33ed720560d051eb4126b4a534bc4c6"> 1073</a></span> <span class="keywordtype">void</span> <a class="code" href="group__debug.html#gaa33ed720560d051eb4126b4a534bc4c6">reportStateToScreen</a>(<a class="code" href="structQureg.html">Qureg</a> qureg, <a class="code" href="structQuESTEnv.html">QuESTEnv</a> env, <span class="keywordtype">int</span> reportRank) {</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <a class="code" href="QuEST__internal_8h.html#a1e57230c7995447039e62a84c0a36524">statevec_reportStateToScreen</a>(qureg, env, reportRank);</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> }</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  </div>
<div class="line"><a name="l01077"></a><span class="lineno"><a class="line" href="QuEST_8c.html#acd34ae4aa7e7f466316cc104532c85c1"> 1077</a></span> <span class="keywordtype">int</span> <a class="code" href="QuEST_8c.html#acd34ae4aa7e7f466316cc104532c85c1">getQuEST_PREC</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(<a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>)/4;</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> }</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  </div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  </div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> }</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aQuEST__qasm_8c_html_a9d97fdaec443ed238c1e72e387a688e3"><div class="ttname"><a href="QuEST__qasm_8c.html#a9d97fdaec443ed238c1e72e387a688e3">qasm_printRecorded</a></div><div class="ttdeci">void qasm_printRecorded(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00484">QuEST_qasm.c:484</a></div></div>
<div class="ttc" id="aQuEST_8c_html_acb5e66108a5c6cf36642148335c0d9ab"><div class="ttname"><a href="QuEST_8c.html#acb5e66108a5c6cf36642148335c0d9ab">compareStates</a></div><div class="ttdeci">int compareStates(Qureg qureg1, Qureg qureg2, qreal precision)</div><div class="ttdoc">Return whether two given wavefunctions are equivalent within a given precision Global phase included ...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01052">QuEST.c:1052</a></div></div>
<div class="ttc" id="agroup__calc_html_ga4a14d22379d399760b0cfc5c8053589b"><div class="ttname"><a href="group__calc.html#ga4a14d22379d399760b0cfc5c8053589b">getProbAmp</a></div><div class="ttdeci">qreal getProbAmp(Qureg qureg, long long int index)</div><div class="ttdoc">Get the probability of a state-vector at an index in the full state vector.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00690">QuEST.c:690</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_af22919f5190ca1b3b6b52b8f2fb8213b"><div class="ttname"><a href="QuEST__validation_8c.html#af22919f5190ca1b3b6b52b8f2fb8213b">validateDensityMatrQureg</a></div><div class="ttdeci">void validateDensityMatrQureg(Qureg qureg, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00422">QuEST_validation.c:422</a></div></div>
<div class="ttc" id="agroup__init_html_gada7230491a50cd409f8b00f5ee1db953"><div class="ttname"><a href="group__init.html#gada7230491a50cd409f8b00f5ee1db953">initBlankState</a></div><div class="ttdeci">void initBlankState(Qureg qureg)</div><div class="ttdoc">Initialises a qureg to have all-zero-amplitudes.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00117">QuEST.c:117</a></div></div>
<div class="ttc" id="astructVector_html"><div class="ttname"><a href="structVector.html">Vector</a></div><div class="ttdoc">Represents a 3-vector of real numbers.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00148">QuEST.h:148</a></div></div>
<div class="ttc" id="agroup__type_html_ga1c703cf89629e4e9c7023cd402d67028"><div class="ttname"><a href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a></div><div class="ttdeci">pauliOpType</div><div class="ttdoc">Codes for specifying Pauli operators.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00096">QuEST.h:96</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a8accabb8a9d573c2ff80305841c3053d"><div class="ttname"><a href="QuEST__validation_8c.html#a8accabb8a9d573c2ff80305841c3053d">validateMeasurementProb</a></div><div class="ttdeci">void validateMeasurementProb(qreal prob, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00430">QuEST_validation.c:430</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga811e9b47126c83ff859059106f66cf96"><div class="ttname"><a href="group__unitary.html#ga811e9b47126c83ff859059106f66cf96">controlledPauliY</a></div><div class="ttdeci">void controlledPauliY(Qureg qureg, const int controlQubit, const int targetQubit)</div><div class="ttdoc">Apply the controlled pauliY (single control, single target) gate, also known as the c-Y and c-sigma-Y...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00535">QuEST.c:535</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_aee97816cfabeea7874cd837a8d105412"><div class="ttname"><a href="QuEST__internal_8h.html#aee97816cfabeea7874cd837a8d105412">statevec_pauliYConj</a></div><div class="ttdeci">void statevec_pauliYConj(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01117">QuEST_cpu_distributed.c:1117</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_ac31c45c5a31c523be0eb26abba6cf598"><div class="ttname"><a href="QuEST__validation_8c.html#ac31c45c5a31c523be0eb26abba6cf598">validateTarget</a></div><div class="ttdeci">void validateTarget(Qureg qureg, int targetQubit, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00307">QuEST_validation.c:307</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_ad613c75ff252a88e54f911053bd2032c"><div class="ttname"><a href="QuEST__validation_8c.html#ad613c75ff252a88e54f911053bd2032c">validateOutcome</a></div><div class="ttdeci">void validateOutcome(int outcome, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00426">QuEST_validation.c:426</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ab987904f721746d1176aba7ac6b566fa"><div class="ttname"><a href="QuEST__common_8c.html#ab987904f721746d1176aba7ac6b566fa">densmatr_mixKrausMap</a></div><div class="ttdeci">void densmatr_mixKrausMap(Qureg qureg, int target, ComplexMatrix2 *ops, int numOps)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00599">QuEST_common.c:599</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ad92b16763f97e70c052eb87a5d1fd3e9"><div class="ttname"><a href="QuEST__common_8c.html#ad92b16763f97e70c052eb87a5d1fd3e9">statevec_multiQubitUnitary</a></div><div class="ttdeci">void statevec_multiQubitUnitary(Qureg qureg, int *targets, const int numTargets, ComplexMatrixN u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00528">QuEST_common.c:528</a></div></div>
<div class="ttc" id="agroup__init_html_ga9a348df3e1df623c3d4c4f12c3ee3fe8"><div class="ttname"><a href="group__init.html#ga9a348df3e1df623c3d4c4f12c3ee3fe8">initPureState</a></div><div class="ttdeci">void initPureState(Qureg qureg, Qureg pure)</div><div class="ttdoc">Initialise a set of qubits, which can be a state vector or density matrix, to a given pure state.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00143">QuEST.c:143</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga3c500a891a522fd3045c379489f0252a"><div class="ttname"><a href="group__unitary.html#ga3c500a891a522fd3045c379489f0252a">tGate</a></div><div class="ttdeci">void tGate(Qureg qureg, const int targetQubit)</div><div class="ttdoc">Apply the single-qubit T gate.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00475">QuEST.c:475</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a73b56fbac6e464a37805fa9d9657a8f9"><div class="ttname"><a href="QuEST__internal_8h.html#a73b56fbac6e464a37805fa9d9657a8f9">statevec_pauliY</a></div><div class="ttdeci">void statevec_pauliY(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01092">QuEST_cpu_distributed.c:1092</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a9226f386d010aaa85efc0e8889d341d5"><div class="ttname"><a href="QuEST__internal_8h.html#a9226f386d010aaa85efc0e8889d341d5">statevec_hadamard</a></div><div class="ttdeci">void statevec_hadamard(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01208">QuEST_cpu_distributed.c:1208</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_aabeb3e9ec6b2f30938c4cf9592e624fa"><div class="ttname"><a href="QuEST__qasm_8c.html#aabeb3e9ec6b2f30938c4cf9592e624fa">qasm_recordParamGate</a></div><div class="ttdeci">void qasm_recordParamGate(Qureg qureg, TargetGate gate, int targetQubit, qreal param)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00186">QuEST_qasm.c:186</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a57dc69bb7a2217aafca676b0923d5e27"><div class="ttname"><a href="QuEST__validation_8c.html#a57dc69bb7a2217aafca676b0923d5e27">validateStateIndex</a></div><div class="ttdeci">void validateStateIndex(Qureg qureg, long long int stateInd, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00291">QuEST_validation.c:291</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a2418bd9a6b9e6a0acf11faf5982d5d29"><div class="ttname"><a href="QuEST__internal_8h.html#a2418bd9a6b9e6a0acf11faf5982d5d29">densmatr_initPlusState</a></div><div class="ttdeci">void densmatr_initPlusState(Qureg targetQureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01153">QuEST_cpu.c:1153</a></div></div>
<div class="ttc" id="agroup__calc_html_gab082910d33473ec29e1d5852943de468"><div class="ttname"><a href="group__calc.html#gab082910d33473ec29e1d5852943de468">calcTotalProb</a></div><div class="ttdeci">qreal calcTotalProb(Qureg qureg)</div><div class="ttdoc">A debugging function which calculates the probability of the qubits in qureg being in any state,...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00822">QuEST.c:822</a></div></div>
<div class="ttc" id="agroup__type_html_ga9df2f3d86be4a6e9aad481665e5e6753"><div class="ttname"><a href="group__type.html#ga9df2f3d86be4a6e9aad481665e5e6753">destroyComplexMatrixN</a></div><div class="ttdeci">void destroyComplexMatrixN(ComplexMatrixN m)</div><div class="ttdoc">Destroy a ComplexMatrixN instance created with createComplexMatrixN()</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01021">QuEST.c:1021</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga30675e80b054d5adf556ae00f98377d9"><div class="ttname"><a href="group__unitary.html#ga30675e80b054d5adf556ae00f98377d9">rotateZ</a></div><div class="ttdeci">void rotateZ(Qureg qureg, const int targetQubit, qreal angle)</div><div class="ttdoc">Rotate a single qubit by a given angle around the Z-axis of the Bloch-sphere (also known as a phase s...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00208">QuEST.c:208</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_acf1c651a4359a370a2d9b3e1e1ebd430"><div class="ttname"><a href="QuEST__common_8c.html#acf1c651a4359a370a2d9b3e1e1ebd430">shiftIndices</a></div><div class="ttdeci">void shiftIndices(int *indices, int numIndices, int shift)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00149">QuEST_common.c:149</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a6ff3dc624b5fafe8edae4fe327c255a0"><div class="ttname"><a href="QuEST__internal_8h.html#a6ff3dc624b5fafe8edae4fe327c255a0">densmatr_calcInnerProduct</a></div><div class="ttdeci">qreal densmatr_calcInnerProduct(Qureg a, Qureg b)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00441">QuEST_cpu_distributed.c:441</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_aef380928d1b0003411d6159ca6594cd5"><div class="ttname"><a href="QuEST__common_8c.html#aef380928d1b0003411d6159ca6594cd5">statevec_calcExpecPauliProd</a></div><div class="ttdeci">qreal statevec_calcExpecPauliProd(Qureg qureg, int *targetQubits, enum pauliOpType *pauliCodes, int numTargets, Qureg workspace)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00464">QuEST_common.c:464</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_ae5ef90741274785eb1ebbbe828b7df8a"><div class="ttname"><a href="QuEST__qasm_8c.html#ae5ef90741274785eb1ebbbe828b7df8a">qasm_free</a></div><div class="ttdeci">void qasm_free(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00500">QuEST_qasm.c:500</a></div></div>
<div class="ttc" id="agroup__calc_html_gadca286c4ad5cde6124d4e80a7ab95a68"><div class="ttname"><a href="group__calc.html#gadca286c4ad5cde6124d4e80a7ab95a68">getDensityAmp</a></div><div class="ttdeci">Complex getDensityAmp(Qureg qureg, long long int row, long long int col)</div><div class="ttdoc">Get an amplitude from a density matrix at a given row and column.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00707">QuEST.c:707</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fadfa058950331ffdba0bf56cb2272e01f"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fadfa058950331ffdba0bf56cb2272e01f">GATE_T</a></div><div class="ttdeci">@ GATE_T</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00024">QuEST_qasm.h:24</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html"><div class="ttname"><a href="QuEST__internal_8h.html">QuEST_internal.h</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fa4668b36d21aaeba1fb605b73881ca507"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa4668b36d21aaeba1fb605b73881ca507">GATE_PHASE_SHIFT</a></div><div class="ttdeci">@ GATE_PHASE_SHIFT</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00032">QuEST_qasm.h:32</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_ad22260712869e79f07d2f04e2b41a233"><div class="ttname"><a href="QuEST__qasm_8c.html#ad22260712869e79f07d2f04e2b41a233">qasm_recordUnitary</a></div><div class="ttdeci">void qasm_recordUnitary(Qureg qureg, ComplexMatrix2 u, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00207">QuEST_qasm.c:207</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_aeb4ddeb09a3c0fa39ac33984bd5ca0ea"><div class="ttname"><a href="QuEST__common_8c.html#aeb4ddeb09a3c0fa39ac33984bd5ca0ea">statevec_controlledRotateAroundAxisConj</a></div><div class="ttdeci">void statevec_controlledRotateAroundAxisConj(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle, Vector axis)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00333">QuEST_common.c:333</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a72feec2aaa05f98aed7f3c3fee141251"><div class="ttname"><a href="QuEST__validation_8c.html#a72feec2aaa05f98aed7f3c3fee141251">validateStateVecQureg</a></div><div class="ttdeci">void validateStateVecQureg(Qureg qureg, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00418">QuEST_validation.c:418</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a4e21adca1f0ca03303bc2e57aaba4ce2"><div class="ttname"><a href="QuEST__qasm_8c.html#a4e21adca1f0ca03303bc2e57aaba4ce2">qasm_recordInitZero</a></div><div class="ttdeci">void qasm_recordInitZero(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00415">QuEST_qasm.c:415</a></div></div>
<div class="ttc" id="agroup__type_html_ga815103261fb22ea9690e1427571df00e"><div class="ttname"><a href="group__type.html#ga815103261fb22ea9690e1427571df00e">createComplexMatrixN</a></div><div class="ttdeci">ComplexMatrixN createComplexMatrixN(int numQubits)</div><div class="ttdoc">Create (dynamically) a square complex matrix which can be passed to the multi-qubit general unitary f...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01000">QuEST.c:1000</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ae0cfea24091c8336146aa84c2253992e"><div class="ttname"><a href="QuEST__common_8c.html#ae0cfea24091c8336146aa84c2253992e">statevec_calcExpecPauliSum</a></div><div class="ttdeci">qreal statevec_calcExpecPauliSum(Qureg qureg, enum pauliOpType *allCodes, qreal *termCoeffs, int numSumTerms, Qureg workspace)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00479">QuEST_common.c:479</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_aaa550b31c5576f9305f57cfe68b6dfbe"><div class="ttname"><a href="QuEST__common_8c.html#aaa550b31c5576f9305f57cfe68b6dfbe">statevec_controlledTwoQubitUnitary</a></div><div class="ttdeci">void statevec_controlledTwoQubitUnitary(Qureg qureg, const int controlQubit, const int targetQubit1, const int targetQubit2, ComplexMatrix4 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00522">QuEST_common.c:522</a></div></div>
<div class="ttc" id="agroup__calc_html_gad575782de461d9ab0975b38cc7850f1a"><div class="ttname"><a href="group__calc.html#gad575782de461d9ab0975b38cc7850f1a">getImagAmp</a></div><div class="ttdeci">qreal getImagAmp(Qureg qureg, long long int index)</div><div class="ttdoc">Get the imaginary component of the complex probability amplitude at an index in the state vector.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00683">QuEST.c:683</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_aa28b7d9c0c3cf9c4be0e324fb9d6bf76"><div class="ttname"><a href="QuEST__validation_8c.html#aa28b7d9c0c3cf9c4be0e324fb9d6bf76">validateMultiQubitMatrixFitsInNode</a></div><div class="ttdeci">void validateMultiQubitMatrixFitsInNode(Qureg qureg, int numTargets, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00380">QuEST_validation.c:380</a></div></div>
<div class="ttc" id="agroup__decoherence_html_gacb7faa9d8afb0f4270c866424fffbccd"><div class="ttname"><a href="group__decoherence.html#gacb7faa9d8afb0f4270c866424fffbccd">mixKrausMap</a></div><div class="ttdeci">void mixKrausMap(Qureg qureg, int target, ComplexMatrix2 *ops, int numOps)</div><div class="ttdoc">Apply a general single-qubit Kraus map to a density matrix, as specified by at most four Kraus operat...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00966">QuEST.c:966</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ae45eefa65f4ecd37bab84fade7cf7f1f"><div class="ttname"><a href="QuEST__internal_8h.html#ae45eefa65f4ecd37bab84fade7cf7f1f">densmatr_calcPurity</a></div><div class="ttdeci">qreal densmatr_calcPurity(Qureg qureg)</div><div class="ttdoc">Computes the trace of the density matrix squared.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01291">QuEST_cpu_distributed.c:1291</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a6904359f35d0b61b2c8fcecfac836033"><div class="ttname"><a href="QuEST__validation_8c.html#a6904359f35d0b61b2c8fcecfac836033">validateNumAmps</a></div><div class="ttdeci">void validateNumAmps(Qureg qureg, long long int startInd, long long int numAmps, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00301">QuEST_validation.c:301</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_af2cdfa07be122a2c0b0e950ef45450bc"><div class="ttname"><a href="QuEST__qasm_8c.html#af2cdfa07be122a2c0b0e950ef45450bc">qasm_clearRecorded</a></div><div class="ttdeci">void qasm_clearRecorded(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00477">QuEST_qasm.c:477</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a37bcd16fc0bbc8e665585ba9b99f382b"><div class="ttname"><a href="QuEST__common_8c.html#a37bcd16fc0bbc8e665585ba9b99f382b">statevec_phaseShift</a></div><div class="ttdeci">void statevec_phaseShift(Qureg qureg, const int targetQubit, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00250">QuEST_common.c:250</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a627b0be7667c5a61a06b3b038fcc8b1b"><div class="ttname"><a href="QuEST__qasm_8c.html#a627b0be7667c5a61a06b3b038fcc8b1b">qasm_recordInitPlus</a></div><div class="ttdeci">void qasm_recordInitPlus(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00430">QuEST_qasm.c:430</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a515b6a920b1715d4eae25dcf29f39b95"><div class="ttname"><a href="QuEST__internal_8h.html#a515b6a920b1715d4eae25dcf29f39b95">densmatr_mixDephasing</a></div><div class="ttdeci">void densmatr_mixDephasing(Qureg qureg, const int targetQubit, qreal dephase)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00079">QuEST_cpu.c:79</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a20d45e85dd49dd3bf6045990b590b24b"><div class="ttname"><a href="QuEST__common_8c.html#a20d45e85dd49dd3bf6045990b590b24b">getConjugateMatrix4</a></div><div class="ttdeci">ComplexMatrix4 getConjugateMatrix4(ComplexMatrix4 src)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00103">QuEST_common.c:103</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fada07505b73935b2788032efd30a1a361"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fada07505b73935b2788032efd30a1a361">GATE_ROTATE_X</a></div><div class="ttdeci">@ GATE_ROTATE_X</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00027">QuEST_qasm.h:27</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga91edd6320f517810a58afd4b845edf12"><div class="ttname"><a href="group__decoherence.html#ga91edd6320f517810a58afd4b845edf12">mixDephasing</a></div><div class="ttdeci">void mixDephasing(Qureg qureg, const int targetQubit, qreal prob)</div><div class="ttdoc">Mixes a density matrix qureg to induce single-qubit dephasing noise.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00902">QuEST.c:902</a></div></div>
<div class="ttc" id="aQuEST_8h_html"><div class="ttname"><a href="QuEST_8h.html">QuEST.h</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a45428d4a49b8798a8d25a7155f622238"><div class="ttname"><a href="QuEST__validation_8c.html#a45428d4a49b8798a8d25a7155f622238">validateNumQubitsInQureg</a></div><div class="ttdeci">void validateNumQubitsInQureg(int numQubits, int numRanks, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00275">QuEST_validation.c:275</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_ab9947ff071a0c019f715f04b3833dcfd"><div class="ttname"><a href="QuEST__validation_8c.html#ab9947ff071a0c019f715f04b3833dcfd">validateMultiQubitUnitaryMatrix</a></div><div class="ttdeci">void validateMultiQubitUnitaryMatrix(Qureg qureg, ComplexMatrixN u, int numTargs, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00403">QuEST_validation.c:403</a></div></div>
<div class="ttc" id="agroup__calc_html_ga683779343fb2c6055f6b1d01079c2ede"><div class="ttname"><a href="group__calc.html#ga683779343fb2c6055f6b1d01079c2ede">calcPurity</a></div><div class="ttdeci">qreal calcPurity(Qureg qureg)</div><div class="ttdoc">Calculates the purity of a density matrix, by the trace of the density matrix squared.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00855">QuEST.c:855</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a8d88b4ed94ab024e5e7b2f1f4f505b44"><div class="ttname"><a href="QuEST__internal_8h.html#a8d88b4ed94ab024e5e7b2f1f4f505b44">statevec_multiRotateZ</a></div><div class="ttdeci">void statevec_multiRotateZ(Qureg qureg, long long int mask, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03069">QuEST_cpu.c:3069</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a47dcab9a0e6b07ddde264ed924add26c"><div class="ttname"><a href="QuEST__internal_8h.html#a47dcab9a0e6b07ddde264ed924add26c">statevec_multiControlledMultiQubitUnitary</a></div><div class="ttdeci">void statevec_multiControlledMultiQubitUnitary(Qureg qureg, long long int ctrlMask, int *targs, const int numTargs, ComplexMatrixN u)</div><div class="ttdoc">This calls swapQubitAmps only when it would involve a distributed communication; if the qubit chunks ...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01441">QuEST_cpu_distributed.c:1441</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a6bd68fa9c0c1bd9c9f9af714ea0b8b03"><div class="ttname"><a href="QuEST__qasm_8c.html#a6bd68fa9c0c1bd9c9f9af714ea0b8b03">qasm_recordControlledCompactUnitary</a></div><div class="ttdeci">void qasm_recordControlledCompactUnitary(Qureg qureg, Complex alpha, Complex beta, int controlQubit, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00264">QuEST_qasm.c:264</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a2a52ad9f9ad9b2fd6a76f6d433b3b217"><div class="ttname"><a href="QuEST__internal_8h.html#a2a52ad9f9ad9b2fd6a76f6d433b3b217">statevec_destroyQureg</a></div><div class="ttdeci">void statevec_destroyQureg(Qureg qureg, QuESTEnv env)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01316">QuEST_cpu.c:1316</a></div></div>
<div class="ttc" id="agroup__qasm_html_gab3a410abab3e8beb394bd3bbfae8977c"><div class="ttname"><a href="group__qasm.html#gab3a410abab3e8beb394bd3bbfae8977c">clearRecordedQASM</a></div><div class="ttdeci">void clearRecordedQASM(Qureg qureg)</div><div class="ttdoc">Clear all QASM so far recorded.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00093">QuEST.c:93</a></div></div>
<div class="ttc" id="agroup__normgate_html_ga2a3794103125f1e3cfa103f8b1963656"><div class="ttname"><a href="group__normgate.html#ga2a3794103125f1e3cfa103f8b1963656">measure</a></div><div class="ttdeci">int measure(Qureg qureg, int measureQubit)</div><div class="ttdoc">Measures a single qubit, collapsing it randomly to 0 or 1.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00756">QuEST.c:756</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fa0cdc4c588d02a515a68515dd3f24d877"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa0cdc4c588d02a515a68515dd3f24d877">GATE_ROTATE_Z</a></div><div class="ttdeci">@ GATE_ROTATE_Z</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00029">QuEST_qasm.h:29</a></div></div>
<div class="ttc" id="agroup__calc_html_gaa266ed6c8ae5d0d0f49e1ac50819cffc"><div class="ttname"><a href="group__calc.html#gaa266ed6c8ae5d0d0f49e1ac50819cffc">calcFidelity</a></div><div class="ttdeci">qreal calcFidelity(Qureg qureg, Qureg pureState)</div><div class="ttdoc">Calculates the fidelity of qureg (a statevector or density matrix) against a reference pure state (ne...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00861">QuEST.c:861</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ab321af37fe3490253e12b7c70b8d2a98"><div class="ttname"><a href="QuEST__internal_8h.html#ab321af37fe3490253e12b7c70b8d2a98">densmatr_collapseToKnownProbOutcome</a></div><div class="ttdeci">void densmatr_collapseToKnownProbOutcome(Qureg qureg, const int measureQubit, int outcome, qreal outcomeProb)</div><div class="ttdoc">Renorms (/prob) every | * outcome * >< * outcome * | state, setting all others to zero.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00784">QuEST_cpu.c:784</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_ae06b0f6b669c03241d0db3b9dc560da1"><div class="ttname"><a href="QuEST__validation_8c.html#ae06b0f6b669c03241d0db3b9dc560da1">validateProb</a></div><div class="ttdeci">void validateProb(qreal prob, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00450">QuEST_validation.c:450</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fa228cd6a7ad18928b794ee7ad1f1fc85e"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa228cd6a7ad18928b794ee7ad1f1fc85e">GATE_SIGMA_Z</a></div><div class="ttdeci">@ GATE_SIGMA_Z</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00023">QuEST_qasm.h:23</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_abdb6e0ee1e407755e1b944086cedd90e"><div class="ttname"><a href="QuEST__internal_8h.html#abdb6e0ee1e407755e1b944086cedd90e">statevec_pauliX</a></div><div class="ttdeci">void statevec_pauliX(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01036">QuEST_cpu_distributed.c:1036</a></div></div>
<div class="ttc" id="agroup__decoherence_html_gacfc45a8fc86ee18f60866bbd0c874ed0"><div class="ttname"><a href="group__decoherence.html#gacfc45a8fc86ee18f60866bbd0c874ed0">mixTwoQubitDepolarising</a></div><div class="ttdeci">void mixTwoQubitDepolarising(Qureg qureg, int qubit1, int qubit2, qreal prob)</div><div class="ttdoc">Mixes a density matrix qureg to induce two-qubit homogeneous depolarising noise.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00943">QuEST.c:943</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a99702f4667c429969d7e7b4ecd45c2f3"><div class="ttname"><a href="QuEST__common_8c.html#a99702f4667c429969d7e7b4ecd45c2f3">densmatr_mixMultiQubitKrausMap</a></div><div class="ttdeci">void densmatr_mixMultiQubitKrausMap(Qureg qureg, int *targets, int numTargets, ComplexMatrixN *ops, int numOps)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00642">QuEST_common.c:642</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_af92fa737f4491324408b3d15543dced4"><div class="ttname"><a href="QuEST__common_8c.html#af92fa737f4491324408b3d15543dced4">getConjugateScalar</a></div><div class="ttdeci">Complex getConjugateScalar(Complex scalar)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00084">QuEST_common.c:84</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga5fb1514d67ab43917dc64a357e711425"><div class="ttname"><a href="group__unitary.html#ga5fb1514d67ab43917dc64a357e711425">rotateX</a></div><div class="ttdeci">void rotateX(Qureg qureg, const int targetQubit, qreal angle)</div><div class="ttdoc">Rotate a single qubit by a given angle around the X-axis of the Bloch-sphere.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00186">QuEST.c:186</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fa8417e56d80add49216437e0d451e8dd9"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa8417e56d80add49216437e0d451e8dd9">GATE_HADAMARD</a></div><div class="ttdeci">@ GATE_HADAMARD</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00026">QuEST_qasm.h:26</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ad34d98eeaa6a3cb45e92c696cfd2d1c8"><div class="ttname"><a href="QuEST__common_8c.html#ad34d98eeaa6a3cb45e92c696cfd2d1c8">getConjugateMatrix2</a></div><div class="ttdeci">ComplexMatrix2 getConjugateMatrix2(ComplexMatrix2 src)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00098">QuEST_common.c:98</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a923906770cac0da9e3459bae58de9e64"><div class="ttname"><a href="QuEST__internal_8h.html#a923906770cac0da9e3459bae58de9e64">statevec_initStateOfSingleQubit</a></div><div class="ttdeci">void statevec_initStateOfSingleQubit(Qureg *qureg, int qubitId, int outcome)</div><div class="ttdoc">Initialise the state vector of probability amplitudes such that one qubit is set to 'outcome' and all...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01513">QuEST_cpu.c:1513</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ab96ee09e32e297629a481c3ba6d7eaf7"><div class="ttname"><a href="QuEST__common_8c.html#ab96ee09e32e297629a481c3ba6d7eaf7">statevec_rotateZ</a></div><div class="ttdeci">void statevec_rotateZ(Qureg qureg, const int rotQubit, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00304">QuEST_common.c:304</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a84b0328814c0b17e127396cb36065108"><div class="ttname"><a href="QuEST__qasm_8c.html#a84b0328814c0b17e127396cb36065108">qasm_startRecording</a></div><div class="ttdeci">void qasm_startRecording(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00084">QuEST_qasm.c:84</a></div></div>
<div class="ttc" id="agroup__init_html_ga4534403b721977b669bff7bf4e37f0fb"><div class="ttname"><a href="group__init.html#ga4534403b721977b669bff7bf4e37f0fb">cloneQureg</a></div><div class="ttdeci">void cloneQureg(Qureg targetQureg, Qureg copyQureg)</div><div class="ttdoc">Set targetQureg to be a clone of copyQureg.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00163">QuEST.c:163</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga4183dc6cb8fd996fb790a711bf3e4871"><div class="ttname"><a href="group__unitary.html#ga4183dc6cb8fd996fb790a711bf3e4871">multiControlledTwoQubitUnitary</a></div><div class="ttdeci">void multiControlledTwoQubitUnitary(Qureg qureg, int *controlQubits, const int numControlQubits, const int targetQubit1, const int targetQubit2, ComplexMatrix4 u)</div><div class="ttdoc">Apply a general multi-controlled two-qubit unitary (including a global phase factor).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00281">QuEST.c:281</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a114038296eb404b9b8a66aaad7b48800"><div class="ttname"><a href="QuEST__internal_8h.html#a114038296eb404b9b8a66aaad7b48800">statevec_controlledNot</a></div><div class="ttdeci">void statevec_controlledNot(Qureg qureg, const int controlQubit, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01063">QuEST_cpu_distributed.c:1063</a></div></div>
<div class="ttc" id="astructComplexMatrix4_html"><div class="ttname"><a href="structComplexMatrix4.html">ComplexMatrix4</a></div><div class="ttdoc">Represents a 4x4 matrix of complex numbers.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00125">QuEST.h:125</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a17409defd561446f561279caa9c443f4"><div class="ttname"><a href="QuEST__validation_8c.html#a17409defd561446f561279caa9c443f4">validateMultiTargets</a></div><div class="ttdeci">void validateMultiTargets(Qureg qureg, int *targetQubits, const int numTargetQubits, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00335">QuEST_validation.c:335</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a20a155f53efc45c16803d7539c2c199d"><div class="ttname"><a href="QuEST__internal_8h.html#a20a155f53efc45c16803d7539c2c199d">densmatr_initClassicalState</a></div><div class="ttdeci">void densmatr_initClassicalState(Qureg qureg, long long int stateInd)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01114">QuEST_cpu.c:1114</a></div></div>
<div class="ttc" id="astructQuESTEnv_html"><div class="ttname"><a href="structQuESTEnv.html">QuESTEnv</a></div><div class="ttdoc">Information about the environment the program is running in.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00199">QuEST.h:199</a></div></div>
<div class="ttc" id="aQuEST_8c_html_ae85a2c07d2f1ff2265c4bf22e17653eb"><div class="ttname"><a href="QuEST_8c.html#ae85a2c07d2f1ff2265c4bf22e17653eb">setDensityAmps</a></div><div class="ttdeci">void setDensityAmps(Qureg qureg, qreal *reals, qreal *imags)</div><div class="ttdoc">Set elements in the underlying state vector represenation of a density matrix.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00788">QuEST.c:788</a></div></div>
<div class="ttc" id="agroup__unitary_html_gadf988ee16f38ddaf404552c41ea2b745"><div class="ttname"><a href="group__unitary.html#gadf988ee16f38ddaf404552c41ea2b745">pauliZ</a></div><div class="ttdeci">void pauliZ(Qureg qureg, const int targetQubit)</div><div class="ttdoc">Apply the single-qubit Pauli-Z (also known as the Z, sigma-Z or phase-flip) gate.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00453">QuEST.c:453</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga0832e39058d913ad47af44e97a854446"><div class="ttname"><a href="group__unitary.html#ga0832e39058d913ad47af44e97a854446">multiControlledPhaseShift</a></div><div class="ttdeci">void multiControlledPhaseShift(Qureg qureg, int *controlQubits, int numControlQubits, qreal angle)</div><div class="ttdoc">Introduce a phase factor on state of the passed qubits.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00509">QuEST.c:509</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_aa662796ea6e0f471143c53becae8c12c"><div class="ttname"><a href="QuEST__internal_8h.html#aa662796ea6e0f471143c53becae8c12c">statevec_multiControlledPhaseShift</a></div><div class="ttdeci">void statevec_multiControlledPhaseShift(Qureg qureg, int *controlQubits, int numControlQubits, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03019">QuEST_cpu.c:3019</a></div></div>
<div class="ttc" id="astructComplexMatrixN_html"><div class="ttname"><a href="structComplexMatrixN.html">ComplexMatrixN</a></div><div class="ttdoc">Represents a general 2^N by 2^N matrix of complex numbers.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00136">QuEST.h:136</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_abedaf81fa9ed252b2f8fbd1bd73f8f8e"><div class="ttname"><a href="QuEST__validation_8c.html#abedaf81fa9ed252b2f8fbd1bd73f8f8e">validateTwoQubitDepolProb</a></div><div class="ttdeci">void validateTwoQubitDepolProb(qreal prob, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00482">QuEST_validation.c:482</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a1da0adad40d2bb1b30b04eda3598e18d"><div class="ttname"><a href="QuEST__common_8c.html#a1da0adad40d2bb1b30b04eda3598e18d">getControlFlipMask</a></div><div class="ttdeci">long long int getControlFlipMask(int *controlQubits, int *controlState, const int numControlQubits)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00053">QuEST_common.c:53</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga4dcb9c6660d7a5f74c9597bc467d39ef"><div class="ttname"><a href="group__unitary.html#ga4dcb9c6660d7a5f74c9597bc467d39ef">controlledPhaseFlip</a></div><div class="ttdeci">void controlledPhaseFlip(Qureg qureg, const int idQubit1, const int idQubit2)</div><div class="ttdoc">Apply the (two-qubit) controlled phase flip gate, also known as the controlled pauliZ gate.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00547">QuEST.c:547</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a5be128290a7bba9a7f12d32cabe2276b"><div class="ttname"><a href="QuEST__validation_8c.html#a5be128290a7bba9a7f12d32cabe2276b">validateNumPauliSumTerms</a></div><div class="ttdeci">void validateNumPauliSumTerms(int numTerms, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00507">QuEST_validation.c:507</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_aeeec9fe1501e25930adf6c38763a158e"><div class="ttname"><a href="QuEST__common_8c.html#aeeec9fe1501e25930adf6c38763a158e">statevec_calcFidelity</a></div><div class="ttdeci">qreal statevec_calcFidelity(Qureg qureg, Qureg pureState)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00376">QuEST_common.c:376</a></div></div>
<div class="ttc" id="agroup__type_html_ga7740e349b4f8bae6451547680f0ce2d6"><div class="ttname"><a href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a></div><div class="ttdeci">#define qreal</div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a6a3d99bc780707a90120a78a6e203792"><div class="ttname"><a href="QuEST__validation_8c.html#a6a3d99bc780707a90120a78a6e203792">validateMatrixInit</a></div><div class="ttdeci">void validateMatrixInit(ComplexMatrixN matr, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00393">QuEST_validation.c:393</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga34aa4865c92f9aa5d898c91286c9eca5"><div class="ttname"><a href="group__unitary.html#ga34aa4865c92f9aa5d898c91286c9eca5">multiRotatePauli</a></div><div class="ttdeci">void multiRotatePauli(Qureg qureg, int *targetQubits, enum pauliOpType *targetPaulis, int numTargets, qreal angle)</div><div class="ttdoc">Apply a multi-qubit multi-Pauli rotation on a selected number of qubits.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00640">QuEST.c:640</a></div></div>
<div class="ttc" id="agroup__qasm_html_gabdaa339967f0955176a4967f01364182"><div class="ttname"><a href="group__qasm.html#gabdaa339967f0955176a4967f01364182">stopRecordingQASM</a></div><div class="ttdeci">void stopRecordingQASM(Qureg qureg)</div><div class="ttdoc">Disable QASM recording.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00089">QuEST.c:89</a></div></div>
<div class="ttc" id="agroup__init_html_gabc0c64f8adf307d2a44184dc0f8ca66e"><div class="ttname"><a href="group__init.html#gabc0c64f8adf307d2a44184dc0f8ca66e">setAmps</a></div><div class="ttdeci">void setAmps(Qureg qureg, long long int startInd, qreal *reals, qreal *imags, long long int numAmps)</div><div class="ttdoc">Overwrites a subset of the amplitudes in qureg, with those passed in reals and imags.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00779">QuEST.c:779</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga18c44cb3b947147951590dea2f6b25f7"><div class="ttname"><a href="group__unitary.html#ga18c44cb3b947147951590dea2f6b25f7">multiControlledUnitary</a></div><div class="ttdeci">void multiControlledUnitary(Qureg qureg, int *controlQubits, const int numControlQubits, const int targetQubit, ComplexMatrix2 u)</div><div class="ttdoc">Apply a general multiple-control single-target unitary, which can include a global phase factor.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00372">QuEST.c:372</a></div></div>
<div class="ttc" id="agroup__unitary_html_gad76781842af56821ed4e223bd776f057"><div class="ttname"><a href="group__unitary.html#gad76781842af56821ed4e223bd776f057">multiControlledPhaseFlip</a></div><div class="ttdeci">void multiControlledPhaseFlip(Qureg qureg, int *controlQubits, int numControlQubits)</div><div class="ttdoc">Apply the multiple-qubit controlled phase flip gate, also known as the multiple-qubit controlled paul...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00559">QuEST.c:559</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a6550462400942be61b171c8840b36aa1"><div class="ttname"><a href="QuEST__common_8c.html#a6550462400942be61b171c8840b36aa1">statevec_sqrtSwapGate</a></div><div class="ttdeci">void statevec_sqrtSwapGate(Qureg qureg, int qb1, int qb2)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00383">QuEST_common.c:383</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_aeca17d22c413cddbd4f5fd99712a2496"><div class="ttname"><a href="QuEST__qasm_8c.html#aeca17d22c413cddbd4f5fd99712a2496">qasm_recordMultiControlledParamGate</a></div><div class="ttdeci">void qasm_recordMultiControlledParamGate(Qureg qureg, TargetGate gate, int *controlQubits, const int numControlQubits, const int targetQubit, qreal param)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00324">QuEST_qasm.c:324</a></div></div>
<div class="ttc" id="agroup__calc_html_ga30d6f8b7c766c9c9914b2c61a2fc0def"><div class="ttname"><a href="group__calc.html#ga30d6f8b7c766c9c9914b2c61a2fc0def">getAmp</a></div><div class="ttdeci">Complex getAmp(Qureg qureg, long long int index)</div><div class="ttdoc">Get the complex amplitude at a given index in the state vector.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00697">QuEST.c:697</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a3afe58e49dce5536bc4c1b7caddf44a6"><div class="ttname"><a href="QuEST__common_8c.html#a3afe58e49dce5536bc4c1b7caddf44a6">statevec_getProbAmp</a></div><div class="ttdeci">qreal statevec_getProbAmp(Qureg qureg, long long int index)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00244">QuEST_common.c:244</a></div></div>
<div class="ttc" id="agroup__type_html_ga429f1b90b3ef06c786dec8c7f0eda4ce"><div class="ttname"><a href="group__type.html#ga429f1b90b3ef06c786dec8c7f0eda4ce">initComplexMatrixN</a></div><div class="ttdeci">void initComplexMatrixN(ComplexMatrixN m, qreal re[][1<< m.numQubits], qreal im[][1<< m.numQubits])</div><div class="ttdoc">Initialises a ComplexMatrixN instance to have the passed real and imag values.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01037">QuEST.c:1037</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a221776c7112dd6ab8aa13a164abc7e18"><div class="ttname"><a href="QuEST__qasm_8c.html#a221776c7112dd6ab8aa13a164abc7e18">qasm_recordAxisRotation</a></div><div class="ttdeci">void qasm_recordAxisRotation(Qureg qureg, qreal angle, Vector axis, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00223">QuEST_qasm.c:223</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ab7478fcaf6357ab202d72853b672e375"><div class="ttname"><a href="QuEST__internal_8h.html#ab7478fcaf6357ab202d72853b672e375">statevec_swapQubitAmps</a></div><div class="ttdeci">void statevec_swapQubitAmps(Qureg qureg, int qb1, int qb2)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01358">QuEST_cpu_distributed.c:1358</a></div></div>
<div class="ttc" id="agroup__normgate_html_gae192ac0759e46c7b20a7182020155240"><div class="ttname"><a href="group__normgate.html#gae192ac0759e46c7b20a7182020155240">measureWithStats</a></div><div class="ttdeci">int measureWithStats(Qureg qureg, int measureQubit, qreal *outcomeProb)</div><div class="ttdoc">Measures a single qubit, collapsing it randomly to 0 or 1, and additionally gives the probability of ...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00743">QuEST.c:743</a></div></div>
<div class="ttc" id="astructQureg_html_a0a86e8a50ea8c998b4a0a6640c5a1218"><div class="ttname"><a href="structQureg.html#a0a86e8a50ea8c998b4a0a6640c5a1218">Qureg::numQubitsInStateVec</a></div><div class="ttdeci">int numQubitsInStateVec</div><div class="ttdoc">Number of qubits in the state-vector - this is double the number represented for mixed states.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00167">QuEST.h:167</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a0bd738cb7e7cdea8f1ce1e640d427d4c"><div class="ttname"><a href="QuEST__common_8c.html#a0bd738cb7e7cdea8f1ce1e640d427d4c">statevec_tGate</a></div><div class="ttdeci">void statevec_tGate(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00271">QuEST_common.c:271</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a782c6f57939eeb72b7be8e247979f3be"><div class="ttname"><a href="QuEST__validation_8c.html#a782c6f57939eeb72b7be8e247979f3be">validateVector</a></div><div class="ttdeci">void validateVector(Vector vec, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00414">QuEST_validation.c:414</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga6375f658bd7cb24d25e0603b5b947bbd"><div class="ttname"><a href="group__unitary.html#ga6375f658bd7cb24d25e0603b5b947bbd">controlledMultiQubitUnitary</a></div><div class="ttdeci">void controlledMultiQubitUnitary(Qureg qureg, int ctrl, int *targs, const int numTargs, ComplexMatrixN u)</div><div class="ttdoc">Apply a general controlled multi-qubit unitary (including a global phase factor).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00312">QuEST.c:312</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a6153547f245c05874161a105e9a2f02c"><div class="ttname"><a href="QuEST__internal_8h.html#a6153547f245c05874161a105e9a2f02c">densmatr_calcTotalProb</a></div><div class="ttdeci">qreal densmatr_calcTotalProb(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00053">QuEST_cpu_distributed.c:53</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_af9839c40de8df0cecc72a0258a20d979"><div class="ttname"><a href="QuEST__common_8c.html#af9839c40de8df0cecc72a0258a20d979">statevec_rotateAroundAxisConj</a></div><div class="ttdeci">void statevec_rotateAroundAxisConj(Qureg qureg, const int rotQubit, qreal angle, Vector axis)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00317">QuEST_common.c:317</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga09a08f98955e75d942fdc88d4dca3e33"><div class="ttname"><a href="group__unitary.html#ga09a08f98955e75d942fdc88d4dca3e33">multiStateControlledUnitary</a></div><div class="ttdeci">void multiStateControlledUnitary(Qureg qureg, int *controlQubits, int *controlState, const int numControlQubits, const int targetQubit, ComplexMatrix2 u)</div><div class="ttdoc">Apply a general multiple-control, conditioned on a specific bit sequence, single-target unitary,...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00387">QuEST.c:387</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_abd1285091450c7c2806cc26c71eb5df2"><div class="ttname"><a href="QuEST__common_8c.html#abd1285091450c7c2806cc26c71eb5df2">getQubitBitMask</a></div><div class="ttdeci">long long int getQubitBitMask(int *qubits, const int numQubits)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00043">QuEST_common.c:43</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a3765e92c79d4c2a0df6761a0e7da2676"><div class="ttname"><a href="QuEST__internal_8h.html#a3765e92c79d4c2a0df6761a0e7da2676">densmatr_mixDepolarising</a></div><div class="ttdeci">void densmatr_mixDepolarising(Qureg qureg, const int targetQubit, qreal depolLevel)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00700">QuEST_cpu_distributed.c:700</a></div></div>
<div class="ttc" id="agroup__init_html_ga5d0f3f71ea38d3c44597f8c2c2f014d4"><div class="ttname"><a href="group__init.html#ga5d0f3f71ea38d3c44597f8c2c2f014d4">setWeightedQureg</a></div><div class="ttdeci">void setWeightedQureg(Complex fac1, Qureg qureg1, Complex fac2, Qureg qureg2, Complex facOut, Qureg out)</div><div class="ttdoc">Modifies qureg out to the result of (facOut out + fac1 qureg1 + fac2 qureg2), imposing no constraints...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00795">QuEST.c:795</a></div></div>
<div class="ttc" id="agroup__unitary_html_gadad71b27575fd7d9baf110ff780ee0a1"><div class="ttname"><a href="group__unitary.html#gadad71b27575fd7d9baf110ff780ee0a1">multiControlledMultiQubitUnitary</a></div><div class="ttdeci">void multiControlledMultiQubitUnitary(Qureg qureg, int *ctrls, const int numCtrls, int *targs, const int numTargs, ComplexMatrixN u)</div><div class="ttdoc">Apply a general multi-controlled multi-qubit unitary (including a global phase factor).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00329">QuEST.c:329</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_aa4c380db9eda18892d5a86825fa4b165"><div class="ttname"><a href="QuEST__qasm_8c.html#aa4c380db9eda18892d5a86825fa4b165">qasm_recordControlledGate</a></div><div class="ttdeci">void qasm_recordControlledGate(Qureg qureg, TargetGate gate, int controlQubit, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00238">QuEST_qasm.c:238</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga05c7b8c9491410215e277ea83c0dfef8"><div class="ttname"><a href="group__unitary.html#ga05c7b8c9491410215e277ea83c0dfef8">phaseShift</a></div><div class="ttdeci">void phaseShift(Qureg qureg, const int targetQubit, qreal angle)</div><div class="ttdoc">Shift the phase between and of a single qubit by a given angle.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00486">QuEST.c:486</a></div></div>
<div class="ttc" id="agroup__calc_html_ga87ddbe5c8281543541ccd99e0dafd387"><div class="ttname"><a href="group__calc.html#ga87ddbe5c8281543541ccd99e0dafd387">calcHilbertSchmidtDistance</a></div><div class="ttdeci">qreal calcHilbertSchmidtDistance(Qureg a, Qureg b)</div><div class="ttdoc">Computes the Hilbert Schmidt distance between two density matrices a and b, defined as the Frobenius ...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00889">QuEST.c:889</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_abecd726412180d81f76f570dbbdbcddb"><div class="ttname"><a href="QuEST__qasm_8c.html#abecd726412180d81f76f570dbbdbcddb">qasm_recordMultiStateControlledUnitary</a></div><div class="ttdeci">void qasm_recordMultiStateControlledUnitary(Qureg qureg, ComplexMatrix2 u, int *controlQubits, int *controlState, const int numControlQubits, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00362">QuEST_qasm.c:362</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_aefc4a3a9cdb71f6e63bc58ad600e420e"><div class="ttname"><a href="QuEST__validation_8c.html#aefc4a3a9cdb71f6e63bc58ad600e420e">validateControlTarget</a></div><div class="ttdeci">void validateControlTarget(Qureg qureg, int controlQubit, int targetQubit, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00315">QuEST_validation.c:315</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a8adaba9dbdad6f7ab41ae4b8db0abefe"><div class="ttname"><a href="QuEST__internal_8h.html#a8adaba9dbdad6f7ab41ae4b8db0abefe">densmatr_mixDensityMatrix</a></div><div class="ttdeci">void densmatr_mixDensityMatrix(Qureg combineQureg, qreal otherProb, Qureg otherQureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00889">QuEST_cpu.c:889</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_aca123cc22e13a2cb819ef6c2f455b9e4"><div class="ttname"><a href="QuEST__common_8c.html#aca123cc22e13a2cb819ef6c2f455b9e4">statevec_rotateX</a></div><div class="ttdeci">void statevec_rotateX(Qureg qureg, const int rotQubit, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00292">QuEST_common.c:292</a></div></div>
<div class="ttc" id="agroup__unitary_html_gab5828a9f0518951451d9fec9370199ae"><div class="ttname"><a href="group__unitary.html#gab5828a9f0518951451d9fec9370199ae">multiQubitUnitary</a></div><div class="ttdeci">void multiQubitUnitary(Qureg qureg, int *targs, const int numTargs, ComplexMatrixN u)</div><div class="ttdoc">Apply a general multi-qubit unitary (including a global phase factor) with any number of target qubit...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00295">QuEST.c:295</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fab656861dfb036cbcf7009f02a8949253"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fab656861dfb036cbcf7009f02a8949253">GATE_SQRT_SWAP</a></div><div class="ttdeci">@ GATE_SQRT_SWAP</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00034">QuEST_qasm.h:34</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga0cbd92af48fe641522e62eea1a76a7c3"><div class="ttname"><a href="group__unitary.html#ga0cbd92af48fe641522e62eea1a76a7c3">compactUnitary</a></div><div class="ttdeci">void compactUnitary(Qureg qureg, const int targetQubit, Complex alpha, Complex beta)</div><div class="ttdoc">Apply a single-qubit unitary parameterised by two given complex scalars.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00403">QuEST.c:403</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_aa8db9b25aae536cdf8054afb6503b7f4"><div class="ttname"><a href="QuEST__common_8c.html#aa8db9b25aae536cdf8054afb6503b7f4">statevec_twoQubitUnitary</a></div><div class="ttdeci">void statevec_twoQubitUnitary(Qureg qureg, const int targetQubit1, const int targetQubit2, ComplexMatrix4 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00516">QuEST_common.c:516</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fa13c9487aed515148e7594e35eb8dcc55"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa13c9487aed515148e7594e35eb8dcc55">GATE_SIGMA_X</a></div><div class="ttdeci">@ GATE_SIGMA_X</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00021">QuEST_qasm.h:21</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ad711cac41adb0fea1ad4797ce14953e0"><div class="ttname"><a href="QuEST__common_8c.html#ad711cac41adb0fea1ad4797ce14953e0">statevec_pauliZ</a></div><div class="ttdeci">void statevec_pauliZ(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00257">QuEST_common.c:257</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a77ad622c5ba852708a80755ac1792288"><div class="ttname"><a href="QuEST__qasm_8c.html#a77ad622c5ba852708a80755ac1792288">qasm_stopRecording</a></div><div class="ttdeci">void qasm_stopRecording(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00088">QuEST_qasm.c:88</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a2ca0c6ba07ab2b4b437321bf17efc966"><div class="ttname"><a href="QuEST__internal_8h.html#a2ca0c6ba07ab2b4b437321bf17efc966">statevec_initZeroState</a></div><div class="ttdeci">void statevec_initZeroState(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01396">QuEST_cpu.c:1396</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga2f3bec8d06e7bf7314c581a5b837641f"><div class="ttname"><a href="group__unitary.html#ga2f3bec8d06e7bf7314c581a5b837641f">hadamard</a></div><div class="ttdeci">void hadamard(Qureg qureg, const int targetQubit)</div><div class="ttdoc">Apply the single-qubit Hadamard gate.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00175">QuEST.c:175</a></div></div>
<div class="ttc" id="aQuEST_8c_html_a7ba64480d4c3f7b1c3ea90cc0245f3e8"><div class="ttname"><a href="QuEST_8c.html#a7ba64480d4c3f7b1c3ea90cc0245f3e8">initStateOfSingleQubit</a></div><div class="ttdeci">void initStateOfSingleQubit(Qureg *qureg, int qubitId, int outcome)</div><div class="ttdoc">Initialise the state vector of probability amplitudes such that one qubit is set to 'outcome' and all...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01066">QuEST.c:1066</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga680f90d42e56950f40d11d695596a363"><div class="ttname"><a href="group__unitary.html#ga680f90d42e56950f40d11d695596a363">rotateY</a></div><div class="ttdeci">void rotateY(Qureg qureg, const int targetQubit, qreal angle)</div><div class="ttdoc">Rotate a single qubit by a given angle around the Y-axis of the Bloch-sphere.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00197">QuEST.c:197</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a06bffb653fa42a67254d034b6cce6d7d"><div class="ttname"><a href="QuEST__common_8c.html#a06bffb653fa42a67254d034b6cce6d7d">statevec_controlledRotateZ</a></div><div class="ttdeci">void statevec_controlledRotateZ(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00354">QuEST_common.c:354</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_aef4d89ae4b8a8b4f414ebd03ef4c6acf"><div class="ttname"><a href="QuEST__validation_8c.html#aef4d89ae4b8a8b4f414ebd03ef4c6acf">validateOneQubitDephaseProb</a></div><div class="ttdeci">void validateOneQubitDephaseProb(qreal prob, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00462">QuEST_validation.c:462</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga820fd139c035136819e371308c206e36"><div class="ttname"><a href="group__unitary.html#ga820fd139c035136819e371308c206e36">swapGate</a></div><div class="ttdeci">void swapGate(Qureg qureg, int qb1, int qb2)</div><div class="ttdoc">Performs a SWAP gate between qubit1 and qubit2.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00599">QuEST.c:599</a></div></div>
<div class="ttc" id="agroup__unitary_html_gaf2ad34c9659292d32c6c725e4bd668cf"><div class="ttname"><a href="group__unitary.html#gaf2ad34c9659292d32c6c725e4bd668cf">controlledUnitary</a></div><div class="ttdeci">void controlledUnitary(Qureg qureg, const int controlQubit, const int targetQubit, ComplexMatrix2 u)</div><div class="ttdoc">Apply a general controlled unitary (single control, single target), which can include a global phase ...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00359">QuEST.c:359</a></div></div>
<div class="ttc" id="agroup__unitary_html_gaf99ba5356a6c20d3d047b36874fc0a50"><div class="ttname"><a href="group__unitary.html#gaf99ba5356a6c20d3d047b36874fc0a50">controlledRotateY</a></div><div class="ttdeci">void controlledRotateY(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle)</div><div class="ttdoc">Applies a controlled rotation by a given angle around the Y-axis of the Bloch-sphere.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00231">QuEST.c:231</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a758bad4237ff0bf3b4ff5be626a982ae"><div class="ttname"><a href="QuEST__internal_8h.html#a758bad4237ff0bf3b4ff5be626a982ae">statevec_initBlankState</a></div><div class="ttdeci">void statevec_initBlankState(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01366">QuEST_cpu.c:1366</a></div></div>
<div class="ttc" id="agroup__init_html_ga4589960486ec43dcd63bd985f1c4f398"><div class="ttname"><a href="group__init.html#ga4589960486ec43dcd63bd985f1c4f398">initStateFromAmps</a></div><div class="ttdeci">void initStateFromAmps(Qureg qureg, qreal *reals, qreal *imags)</div><div class="ttdoc">Initialise qureg by specifying the complete statevector.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00155">QuEST.c:155</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a1e57230c7995447039e62a84c0a36524"><div class="ttname"><a href="QuEST__internal_8h.html#a1e57230c7995447039e62a84c0a36524">statevec_reportStateToScreen</a></div><div class="ttdeci">void statevec_reportStateToScreen(Qureg qureg, QuESTEnv env, int reportRank)</div><div class="ttdoc">Print the current state vector of probability amplitudes for a set of qubits to standard out.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01334">QuEST_cpu.c:1334</a></div></div>
<div class="ttc" id="agroup__unitary_html_gadf4927a3d5dd8cd6d7400f2e810b4f05"><div class="ttname"><a href="group__unitary.html#gadf4927a3d5dd8cd6d7400f2e810b4f05">controlledNot</a></div><div class="ttdeci">void controlledNot(Qureg qureg, const int controlQubit, const int targetQubit)</div><div class="ttdoc">Apply the controlled not (single control, single target) gate, also known as the c-X,...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00523">QuEST.c:523</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a55d0f243437a0bb3b7609a1090323aa3"><div class="ttname"><a href="QuEST__qasm_8c.html#a55d0f243437a0bb3b7609a1090323aa3">qasm_recordInitClassical</a></div><div class="ttdeci">void qasm_recordInitClassical(Qureg qureg, long long int stateInd)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00458">QuEST_qasm.c:458</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_aa121d55f2ca09c06a96ddcd433c60b0f"><div class="ttname"><a href="QuEST__internal_8h.html#aa121d55f2ca09c06a96ddcd433c60b0f">statevec_setAmps</a></div><div class="ttdeci">void statevec_setAmps(Qureg qureg, long long int startInd, qreal *reals, qreal *imags, long long int numAmps)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01236">QuEST_cpu.c:1236</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a39aeacb22460bd1430129795761ade28"><div class="ttname"><a href="QuEST__qasm_8c.html#a39aeacb22460bd1430129795761ade28">qasm_writeRecordedToFile</a></div><div class="ttdeci">int qasm_writeRecordedToFile(Qureg qureg, char *filename)</div><div class="ttdoc">returns success of file write</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00489">QuEST_qasm.c:489</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_ae776148507b8f769cd00d1603212a028"><div class="ttname"><a href="QuEST__qasm_8c.html#ae776148507b8f769cd00d1603212a028">qasm_recordControlledParamGate</a></div><div class="ttdeci">void qasm_recordControlledParamGate(Qureg qureg, TargetGate gate, int controlQubit, int targetQubit, qreal param)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00247">QuEST_qasm.c:247</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_aa4b77089145184d990848cd66993aa8b"><div class="ttname"><a href="QuEST__internal_8h.html#aa4b77089145184d990848cd66993aa8b">statevec_cloneQureg</a></div><div class="ttdeci">void statevec_cloneQureg(Qureg targetQureg, Qureg copyQureg)</div><div class="ttdoc">works for both statevectors and density matrices</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01474">QuEST_cpu.c:1474</a></div></div>
<div class="ttc" id="agroup__qasm_html_ga0054955857ce83b88e127d731796c23d"><div class="ttname"><a href="group__qasm.html#ga0054955857ce83b88e127d731796c23d">writeRecordedQASMToFile</a></div><div class="ttdeci">void writeRecordedQASMToFile(Qureg qureg, char *filename)</div><div class="ttdoc">Writes recorded QASM to a file, throwing an error if inaccessible.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00101">QuEST.c:101</a></div></div>
<div class="ttc" id="astructQuESTEnv_html_af22aacd7c9905accae28484785c193b4"><div class="ttname"><a href="structQuESTEnv.html#af22aacd7c9905accae28484785c193b4">QuESTEnv::numRanks</a></div><div class="ttdeci">int numRanks</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00202">QuEST.h:202</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a9fd917537204e074119d4f283dea78e3"><div class="ttname"><a href="QuEST__common_8c.html#a9fd917537204e074119d4f283dea78e3">setConjugateMatrixN</a></div><div class="ttdeci">void setConjugateMatrixN(ComplexMatrixN m)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00108">QuEST_common.c:108</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a87d22240ccfd81827a2a34b8d569d347"><div class="ttname"><a href="QuEST__validation_8c.html#a87d22240ccfd81827a2a34b8d569d347">validateMatchingQuregDims</a></div><div class="ttdeci">void validateMatchingQuregDims(Qureg qureg1, Qureg qureg2, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00434">QuEST_validation.c:434</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga82bf9aaf01430d3ecfde52b7731421d7"><div class="ttname"><a href="group__unitary.html#ga82bf9aaf01430d3ecfde52b7731421d7">controlledRotateAroundAxis</a></div><div class="ttdeci">void controlledRotateAroundAxis(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle, Vector axis)</div><div class="ttdoc">Applies a controlled rotation by a given angle around a given vector on the Bloch-sphere.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00586">QuEST.c:586</a></div></div>
<div class="ttc" id="agroup__calc_html_ga1416145280c62c5dd5ec9bed89b4cd05"><div class="ttname"><a href="group__calc.html#ga1416145280c62c5dd5ec9bed89b4cd05">getRealAmp</a></div><div class="ttdeci">qreal getRealAmp(Qureg qureg, long long int index)</div><div class="ttdoc">Get the real component of the complex probability amplitude at an index in the state vector.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00676">QuEST.c:676</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ab004038b5f906ea897621c88bf213129"><div class="ttname"><a href="QuEST__common_8c.html#ab004038b5f906ea897621c88bf213129">densmatr_mixTwoQubitKrausMap</a></div><div class="ttdeci">void densmatr_mixTwoQubitKrausMap(Qureg qureg, int target1, int target2, ComplexMatrix4 *ops, int numOps)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00634">QuEST_common.c:634</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a482fc361fd5f08075404c72e536316a0"><div class="ttname"><a href="QuEST__internal_8h.html#a482fc361fd5f08075404c72e536316a0">statevec_initPlusState</a></div><div class="ttdeci">void statevec_initPlusState(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01406">QuEST_cpu.c:1406</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a33be8162c9633bb8015f06b38cf70735"><div class="ttname"><a href="QuEST__qasm_8c.html#a33be8162c9633bb8015f06b38cf70735">qasm_recordControlledAxisRotation</a></div><div class="ttdeci">void qasm_recordControlledAxisRotation(Qureg qureg, qreal angle, Vector axis, int controlQubit, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00300">QuEST_qasm.c:300</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80"><div class="ttname"><a href="group__unitary.html#ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80">controlledTwoQubitUnitary</a></div><div class="ttdeci">void controlledTwoQubitUnitary(Qureg qureg, const int controlQubit, const int targetQubit1, const int targetQubit2, ComplexMatrix4 u)</div><div class="ttdoc">Apply a general controlled two-qubit unitary (including a global phase factor).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00268">QuEST.c:268</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_abc29cef03e4a93d5f0a67b1e8b72f66e"><div class="ttname"><a href="QuEST__qasm_8c.html#abc29cef03e4a93d5f0a67b1e8b72f66e">qasm_recordMultiControlledUnitary</a></div><div class="ttdeci">void qasm_recordMultiControlledUnitary(Qureg qureg, ComplexMatrix2 u, int *controlQubits, const int numControlQubits, const int targetQubit)</div><div class="ttdoc">additionally performs Rz on target to restore the global phase lost from u in QASM U(a,...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00341">QuEST_qasm.c:341</a></div></div>
<div class="ttc" id="agroup__calc_html_ga73036c778d800703585ab3d8796a915f"><div class="ttname"><a href="group__calc.html#ga73036c778d800703585ab3d8796a915f">getNumQubits</a></div><div class="ttdeci">int getNumQubits(Qureg qureg)</div><div class="ttdoc">Get the number of qubits in a qureg object.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00666">QuEST.c:666</a></div></div>
<div class="ttc" id="agroup__calc_html_ga374ad70804998394ae41ebfe106258a6"><div class="ttname"><a href="group__calc.html#ga374ad70804998394ae41ebfe106258a6">calcInnerProduct</a></div><div class="ttdeci">Complex calcInnerProduct(Qureg bra, Qureg ket)</div><div class="ttdoc">Computes the inner product of two equal-size state vectors, given by.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00829">QuEST.c:829</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a2153d8611247dd3a2ef483355265cc99"><div class="ttname"><a href="QuEST__common_8c.html#a2153d8611247dd3a2ef483355265cc99">statevec_multiRotatePauli</a></div><div class="ttdeci">void statevec_multiRotatePauli(Qureg qureg, int *targetQubits, enum pauliOpType *targetPaulis, int numTargets, qreal angle, int applyConj)</div><div class="ttdoc">applyConj=1 will apply conjugate operation, else applyConj=0</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00410">QuEST_common.c:410</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ac4ee5979d475e8c729294b8ef7e0270d"><div class="ttname"><a href="QuEST__internal_8h.html#ac4ee5979d475e8c729294b8ef7e0270d">statevec_multiControlledPhaseFlip</a></div><div class="ttdeci">void statevec_multiControlledPhaseFlip(Qureg qureg, int *controlQubits, int numControlQubits)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03291">QuEST_cpu.c:3291</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga69e074c8174e198ca014d9905b98b43d"><div class="ttname"><a href="group__unitary.html#ga69e074c8174e198ca014d9905b98b43d">controlledPhaseShift</a></div><div class="ttdeci">void controlledPhaseShift(Qureg qureg, const int idQubit1, const int idQubit2, qreal angle)</div><div class="ttdoc">Introduce a phase factor on state of qubits idQubit1 and idQubit2.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00497">QuEST.c:497</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 object representing a set of qubits.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00075">QuEST.c:75</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a5090b080392ab9be8fcf538161d4e5c1"><div class="ttname"><a href="QuEST__internal_8h.html#a5090b080392ab9be8fcf538161d4e5c1">densmatr_mixTwoQubitDephasing</a></div><div class="ttdeci">void densmatr_mixTwoQubitDephasing(Qureg qureg, const int qubit1, const int qubit2, qreal dephase)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00084">QuEST_cpu.c:84</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a2d43dbc8bf59a58b0ba9da31a8b7db8b"><div class="ttname"><a href="QuEST__validation_8c.html#a2d43dbc8bf59a58b0ba9da31a8b7db8b">validateOneQubitKrausMap</a></div><div class="ttdeci">void validateOneQubitKrausMap(Qureg qureg, ComplexMatrix2 *ops, int numOps, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00511">QuEST_validation.c:511</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a9a385fde708958617bbeb599064b8dcb"><div class="ttname"><a href="QuEST__qasm_8c.html#a9a385fde708958617bbeb599064b8dcb">qasm_recordComment</a></div><div class="ttdeci">void qasm_recordComment(Qureg qureg, char *comment,...)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00120">QuEST_qasm.c:120</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a43afa97e300b87bce7f3eb1213eb05f6"><div class="ttname"><a href="QuEST__internal_8h.html#a43afa97e300b87bce7f3eb1213eb05f6">densmatr_mixTwoQubitDepolarising</a></div><div class="ttdeci">void densmatr_mixTwoQubitDepolarising(Qureg qureg, int qubit1, int qubit2, qreal depolLevel)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00754">QuEST_cpu_distributed.c:754</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a78bfeb90f0c1812e726ec3092056bb52"><div class="ttname"><a href="QuEST__common_8c.html#a78bfeb90f0c1812e726ec3092056bb52">statevec_sGateConj</a></div><div class="ttdeci">void statevec_sGateConj(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00278">QuEST_common.c:278</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga2cf7dece0efea4207349f872cdcb7e81"><div class="ttname"><a href="group__decoherence.html#ga2cf7dece0efea4207349f872cdcb7e81">mixTwoQubitKrausMap</a></div><div class="ttdeci">void mixTwoQubitKrausMap(Qureg qureg, int target1, int target2, ComplexMatrix4 *ops, int numOps)</div><div class="ttdoc">Apply a general two-qubit Kraus map to a density matrix, as specified by at most sixteen Kraus operat...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00976">QuEST.c:976</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a7ec46b4b96cda399095a2488ceff69b6"><div class="ttname"><a href="QuEST__internal_8h.html#a7ec46b4b96cda399095a2488ceff69b6">statevec_multiControlledUnitary</a></div><div class="ttdeci">void statevec_multiControlledUnitary(Qureg qureg, long long int ctrlQubitsMask, long long int ctrlFlipMask, const int targetQubit, ComplexMatrix2 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00999">QuEST_cpu_distributed.c:999</a></div></div>
<div class="ttc" id="astructComplexMatrixN_html_a446e8a077597e4f76049d547df0c9738"><div class="ttname"><a href="structComplexMatrixN.html#a446e8a077597e4f76049d547df0c9738">ComplexMatrixN::real</a></div><div class="ttdeci">qreal ** real</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00139">QuEST.h:139</a></div></div>
<div class="ttc" id="agroup__debug_html_gaa696c94112e5fbbc996af10dfc4e2c1c"><div class="ttname"><a href="group__debug.html#gaa696c94112e5fbbc996af10dfc4e2c1c">initDebugState</a></div><div class="ttdeci">void initDebugState(Qureg qureg)</div><div class="ttdoc">Initialises qureg to be in the un-normalised, non-physical state with with n-th complex amplitude (2n...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01057">QuEST.c:1057</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a4a62c8c00dc4adf74b982ad8a9049170"><div class="ttname"><a href="QuEST__common_8c.html#a4a62c8c00dc4adf74b982ad8a9049170">statevec_rotateY</a></div><div class="ttdeci">void statevec_rotateY(Qureg qureg, const int rotQubit, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00298">QuEST_common.c:298</a></div></div>
<div class="ttc" id="aQuEST_8c_html_a6456bc310db1989c5b17febdb23c2c93"><div class="ttname"><a href="QuEST_8c.html#a6456bc310db1989c5b17febdb23c2c93">initStateFromSingleFile</a></div><div class="ttdeci">void initStateFromSingleFile(Qureg *qureg, char filename[200], QuESTEnv env)</div><div class="ttdoc">Initialises the wavefunction amplitudes according to those specified in a file.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01061">QuEST.c:1061</a></div></div>
<div class="ttc" id="agroup__qasm_html_ga65bf1906298ca6355e2942f4923d77b6"><div class="ttname"><a href="group__qasm.html#ga65bf1906298ca6355e2942f4923d77b6">startRecordingQASM</a></div><div class="ttdeci">void startRecordingQASM(Qureg qureg)</div><div class="ttdoc">Enable QASM recording.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00085">QuEST.c:85</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_af71c2470694795a8d639be8ff9c34ed5"><div class="ttname"><a href="QuEST__common_8c.html#af71c2470694795a8d639be8ff9c34ed5">statevec_applyPauliSum</a></div><div class="ttdeci">void statevec_applyPauliSum(Qureg inQureg, enum pauliOpType *allCodes, qreal *termCoeffs, int numSumTerms, Qureg outQureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00493">QuEST_common.c:493</a></div></div>
<div class="ttc" id="agroup__operator_html_ga6fc26cf857db070e12959e59ecfed8a6"><div class="ttname"><a href="group__operator.html#ga6fc26cf857db070e12959e59ecfed8a6">applyPauliSum</a></div><div class="ttdeci">void applyPauliSum(Qureg inQureg, enum pauliOpType *allPauliCodes, qreal *termCoeffs, int numSumTerms, Qureg outQureg)</div><div class="ttdoc">Modifies outQureg to be the result of applying the weighted sum of Pauli products (a Hermitian but no...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00806">QuEST.c:806</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga3e39405eb2ce05ce4bb88c0f00dace45"><div class="ttname"><a href="group__decoherence.html#ga3e39405eb2ce05ce4bb88c0f00dace45">mixDamping</a></div><div class="ttdeci">void mixDamping(Qureg qureg, const int targetQubit, qreal prob)</div><div class="ttdoc">Mixes a density matrix qureg to induce single-qubit amplitude damping (decay to 0 state).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00935">QuEST.c:935</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a7ebd3198a198f4cd20840f64fd8b84d0"><div class="ttname"><a href="QuEST__internal_8h.html#a7ebd3198a198f4cd20840f64fd8b84d0">statevec_calcInnerProduct</a></div><div class="ttdeci">Complex statevec_calcInnerProduct(Qureg bra, Qureg ket)</div><div class="ttdoc">Terrible code which unnecessarily individually computes and sums the real and imaginary components of...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00035">QuEST_cpu_distributed.c:35</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a2600999a19c817bfcf7ca14779e33b9a"><div class="ttname"><a href="QuEST__internal_8h.html#a2600999a19c817bfcf7ca14779e33b9a">statevec_controlledUnitary</a></div><div class="ttdeci">void statevec_controlledUnitary(Qureg qureg, const int controlQubit, const int targetQubit, ComplexMatrix2 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00960">QuEST_cpu_distributed.c:960</a></div></div>
<div class="ttc" id="agroup__init_html_ga0379e21efca0767a22607fc0e26a5a22"><div class="ttname"><a href="group__init.html#ga0379e21efca0767a22607fc0e26a5a22">initClassicalState</a></div><div class="ttdeci">void initClassicalState(Qureg qureg, long long int stateInd)</div><div class="ttdoc">Initialise a set of qubits to the classical state (also known as a "computational basis state") with...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00132">QuEST.c:132</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a269b2f7ee5c4376ae633cd2b77a7be38"><div class="ttname"><a href="QuEST__validation_8c.html#a269b2f7ee5c4376ae633cd2b77a7be38">validateOneQubitDepolProb</a></div><div class="ttdeci">void validateOneQubitDepolProb(qreal prob, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00472">QuEST_validation.c:472</a></div></div>
<div class="ttc" id="aQuEST_8c_html_acd34ae4aa7e7f466316cc104532c85c1"><div class="ttname"><a href="QuEST_8c.html#acd34ae4aa7e7f466316cc104532c85c1">getQuEST_PREC</a></div><div class="ttdeci">int getQuEST_PREC(void)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01077">QuEST.c:1077</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ad64a23933361fafc1b6b1787759c2663"><div class="ttname"><a href="QuEST__internal_8h.html#ad64a23933361fafc1b6b1787759c2663">statevec_setWeightedQureg</a></div><div class="ttdeci">void statevec_setWeightedQureg(Complex fac1, Qureg qureg1, Complex fac2, Qureg qureg2, Complex facOut, Qureg out)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03579">QuEST_cpu.c:3579</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a706acae568cbb0854b4729ed9e2f7e6d"><div class="ttname"><a href="QuEST__validation_8c.html#a706acae568cbb0854b4729ed9e2f7e6d">validateMultiQubits</a></div><div class="ttdeci">void validateMultiQubits(Qureg qureg, int *qubits, const int numQubits, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00351">QuEST_validation.c:351</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_adeb715f3f2c167f9bfbe92b75f5988ce"><div class="ttname"><a href="QuEST__internal_8h.html#adeb715f3f2c167f9bfbe92b75f5988ce">statevec_controlledPhaseShift</a></div><div class="ttdeci">void statevec_controlledPhaseShift(Qureg qureg, const int idQubit1, const int idQubit2, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02980">QuEST_cpu.c:2980</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_ad0f5b8fe9cf31ef3a565e722966a5511"><div class="ttname"><a href="QuEST__validation_8c.html#ad0f5b8fe9cf31ef3a565e722966a5511">validateTwoQubitKrausMap</a></div><div class="ttdeci">void validateTwoQubitKrausMap(Qureg qureg, ComplexMatrix4 *ops, int numOps, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00523">QuEST_validation.c:523</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a72b26b971531dbdc64de20501f368545"><div class="ttname"><a href="QuEST__internal_8h.html#a72b26b971531dbdc64de20501f368545">densmatr_mixDamping</a></div><div class="ttdeci">void densmatr_mixDamping(Qureg qureg, const int targetQubit, qreal damping)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00727">QuEST_cpu_distributed.c:727</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ab33cdf01831c4545e51299178acf7f27"><div class="ttname"><a href="QuEST__internal_8h.html#ab33cdf01831c4545e51299178acf7f27">statevec_calcProbOfOutcome</a></div><div class="ttdeci">qreal statevec_calcProbOfOutcome(Qureg qureg, const int measureQubit, int outcome)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01263">QuEST_cpu_distributed.c:1263</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ae7f25bb40734e18a992403b17355893b"><div class="ttname"><a href="QuEST__internal_8h.html#ae7f25bb40734e18a992403b17355893b">statevec_collapseToKnownProbOutcome</a></div><div class="ttdeci">void statevec_collapseToKnownProbOutcome(Qureg qureg, const int measureQubit, int outcome, qreal outcomeProb)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01301">QuEST_cpu_distributed.c:1301</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_abd509244d57657e148e4084c5ab5d28f"><div class="ttname"><a href="QuEST__internal_8h.html#abd509244d57657e148e4084c5ab5d28f">statevec_getImagAmp</a></div><div class="ttdeci">qreal statevec_getImagAmp(Qureg qureg, long long int index)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00208">QuEST_cpu_distributed.c:208</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga5a117f81298e8ed894d964198e737757"><div class="ttname"><a href="group__unitary.html#ga5a117f81298e8ed894d964198e737757">unitary</a></div><div class="ttdeci">void unitary(Qureg qureg, const int targetQubit, ComplexMatrix2 u)</div><div class="ttdoc">Apply a general single-qubit unitary (including a global phase factor).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00347">QuEST.c:347</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#l00160">QuEST.h:160</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga9afcf34f7c6ae127452b503c074a9b7b"><div class="ttname"><a href="group__unitary.html#ga9afcf34f7c6ae127452b503c074a9b7b">controlledRotateZ</a></div><div class="ttdeci">void controlledRotateZ(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle)</div><div class="ttdoc">Applies a controlled rotation by a given angle around the Z-axis of the Bloch-sphere.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00243">QuEST.c:243</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga14282bdb1dc65760ca9ecbe6305eb770"><div class="ttname"><a href="group__decoherence.html#ga14282bdb1dc65760ca9ecbe6305eb770">mixTwoQubitDephasing</a></div><div class="ttdeci">void mixTwoQubitDephasing(Qureg qureg, int qubit1, int qubit2, qreal prob)</div><div class="ttdoc">Mixes a density matrix qureg to induce two-qubit dephasing noise.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00912">QuEST.c:912</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ac2eb81c71d0e0fbec7be5b45b1db1448"><div class="ttname"><a href="QuEST__common_8c.html#ac2eb81c71d0e0fbec7be5b45b1db1448">statevec_measureWithStats</a></div><div class="ttdeci">int statevec_measureWithStats(Qureg qureg, int measureQubit, qreal *outcomeProb)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00360">QuEST_common.c:360</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a7c8491926b4c7b4bf8e8123f4464a08e"><div class="ttname"><a href="QuEST__validation_8c.html#a7c8491926b4c7b4bf8e8123f4464a08e">validateNumQubitsInMatrix</a></div><div class="ttdeci">void validateNumQubitsInMatrix(int numQubits, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00287">QuEST_validation.c:287</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ad9fd3017ea40cf63fd04b39e03494972"><div class="ttname"><a href="QuEST__internal_8h.html#ad9fd3017ea40cf63fd04b39e03494972">statevec_initDebugState</a></div><div class="ttdeci">void statevec_initDebugState(Qureg qureg)</div><div class="ttdoc">Initialise the state vector of probability amplitudes to an (unphysical) state with each component of...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01559">QuEST_cpu.c:1559</a></div></div>
<div class="ttc" id="astructComplexMatrixN_html_afde13e469a3b4f179f45e53d1ec0a7cf"><div class="ttname"><a href="structComplexMatrixN.html#afde13e469a3b4f179f45e53d1ec0a7cf">ComplexMatrixN::imag</a></div><div class="ttdeci">qreal ** imag</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00140">QuEST.h:140</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a7c0067cb9f243ead20de7392aea328bc"><div class="ttname"><a href="QuEST__internal_8h.html#a7c0067cb9f243ead20de7392aea328bc">statevec_controlledPhaseFlip</a></div><div class="ttdeci">void statevec_controlledPhaseFlip(Qureg qureg, const int idQubit1, const int idQubit2)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03260">QuEST_cpu.c:3260</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ad405e3fac20997043e0236b751e44270"><div class="ttname"><a href="QuEST__internal_8h.html#ad405e3fac20997043e0236b751e44270">densmatr_calcProbOfOutcome</a></div><div class="ttdeci">qreal densmatr_calcProbOfOutcome(Qureg qureg, const int measureQubit, int outcome)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01279">QuEST_cpu_distributed.c:1279</a></div></div>
<div class="ttc" id="aQuEST__precision_8h_html"><div class="ttname"><a href="QuEST__precision_8h.html">QuEST_precision.h</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a654db9d60abdcae26427e7d3b3d9c432"><div class="ttname"><a href="QuEST__validation_8c.html#a654db9d60abdcae26427e7d3b3d9c432">validateTwoQubitUnitaryMatrix</a></div><div class="ttdeci">void validateTwoQubitUnitaryMatrix(Qureg qureg, ComplexMatrix4 u, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00388">QuEST_validation.c:388</a></div></div>
<div class="ttc" id="agroup__calc_html_ga8cbe422d4981bf06847d229a4c6aa3df"><div class="ttname"><a href="group__calc.html#ga8cbe422d4981bf06847d229a4c6aa3df">getNumAmps</a></div><div class="ttdeci">long long int getNumAmps(Qureg qureg)</div><div class="ttdoc">Get the number of probability amplitudes in a qureg object, given by 2^numQubits.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00670">QuEST.c:670</a></div></div>
<div class="ttc" id="agroup__unitary_html_gaa854e4b76cfd4000a32c06c990960bd9"><div class="ttname"><a href="group__unitary.html#gaa854e4b76cfd4000a32c06c990960bd9">controlledCompactUnitary</a></div><div class="ttdeci">void controlledCompactUnitary(Qureg qureg, const int controlQubit, const int targetQubit, Complex alpha, Complex beta)</div><div class="ttdoc">Apply a controlled unitary (single control, single target) parameterised by two given complex scalars...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00416">QuEST.c:416</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_aa6c3f86010ad398f42b0577ea3bb5bcf"><div class="ttname"><a href="QuEST__internal_8h.html#aa6c3f86010ad398f42b0577ea3bb5bcf">densmatr_calcFidelity</a></div><div class="ttdeci">qreal densmatr_calcFidelity(Qureg qureg, Qureg pureState)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00415">QuEST_cpu_distributed.c:415</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ad2dc0754043172e0449c78569d27fd4a"><div class="ttname"><a href="QuEST__common_8c.html#ad2dc0754043172e0449c78569d27fd4a">statevec_controlledRotateY</a></div><div class="ttdeci">void statevec_controlledRotateY(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00348">QuEST_common.c:348</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a288dc4b46bdacd69cbf4a6fd070d26a7"><div class="ttname"><a href="QuEST__internal_8h.html#a288dc4b46bdacd69cbf4a6fd070d26a7">statevec_initClassicalState</a></div><div class="ttdeci">void statevec_initClassicalState(Qureg qureg, long long int stateInd)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01438">QuEST_cpu.c:1438</a></div></div>
<div class="ttc" id="astructQureg_html_acf78445e9435d09f44f0cc832c6aee79"><div class="ttname"><a href="structQureg.html#acf78445e9435d09f44f0cc832c6aee79">Qureg::isDensityMatrix</a></div><div class="ttdeci">int isDensityMatrix</div><div class="ttdoc">Whether this instance is a density-state representation.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00163">QuEST.h:163</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a47b467a5445c7f15d1a8b0b2ec0ef2de"><div class="ttname"><a href="QuEST__internal_8h.html#a47b467a5445c7f15d1a8b0b2ec0ef2de">statevec_controlledCompactUnitary</a></div><div class="ttdeci">void statevec_controlledCompactUnitary(Qureg qureg, const int controlQubit, const int targetQubit, Complex alpha, Complex beta)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00922">QuEST_cpu_distributed.c:922</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_aea5b9ea10791217a793a8040c36e4efc"><div class="ttname"><a href="QuEST__common_8c.html#aea5b9ea10791217a793a8040c36e4efc">statevec_sGate</a></div><div class="ttdeci">void statevec_sGate(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00264">QuEST_common.c:264</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a031812e1cf2c98d72d795cea7bbe73a5"><div class="ttname"><a href="QuEST__validation_8c.html#a031812e1cf2c98d72d795cea7bbe73a5">validateMatchingQuregTypes</a></div><div class="ttdeci">void validateMatchingQuregTypes(Qureg qureg1, Qureg qureg2, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00438">QuEST_validation.c:438</a></div></div>
<div class="ttc" id="astructComplexMatrixN_html_a606f7afbc3f65a596bdca21cb43be6a8"><div class="ttname"><a href="structComplexMatrixN.html#a606f7afbc3f65a596bdca21cb43be6a8">ComplexMatrixN::numQubits</a></div><div class="ttdeci">int numQubits</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00138">QuEST.h:138</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a5f87419b253a97f6caadb72b507b9853"><div class="ttname"><a href="QuEST__validation_8c.html#a5f87419b253a97f6caadb72b507b9853">validateAmpIndex</a></div><div class="ttdeci">void validateAmpIndex(Qureg qureg, long long int ampInd, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00296">QuEST_validation.c:296</a></div></div>
<div class="ttc" id="agroup__type_html_gabd07eee133dcd4e6ae7c2d2ce4c42978"><div class="ttname"><a href="group__type.html#gabd07eee133dcd4e6ae7c2d2ce4c42978">createCloneQureg</a></div><div class="ttdeci">Qureg createCloneQureg(Qureg qureg, QuESTEnv env)</div><div class="ttdoc">Create a new Qureg which is an exact clone of the passed qureg, which can be either a statevector or ...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00062">QuEST.c:62</a></div></div>
<div class="ttc" id="agroup__normgate_html_gab164930b260718d85ed3f55f50c76a59"><div class="ttname"><a href="group__normgate.html#gab164930b260718d85ed3f55f50c76a59">collapseToOutcome</a></div><div class="ttdeci">qreal collapseToOutcome(Qureg qureg, const int measureQubit, int outcome)</div><div class="ttdoc">Updates qureg to be consistent with measuring measureQubit in the given outcome (0 or 1),...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00724">QuEST.c:724</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga7dc4ed5d9fd2872a04fea6ef13b65c3d"><div class="ttname"><a href="group__unitary.html#ga7dc4ed5d9fd2872a04fea6ef13b65c3d">controlledRotateX</a></div><div class="ttdeci">void controlledRotateX(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle)</div><div class="ttdoc">Applies a controlled rotation by a given angle around the X-axis of the Bloch-sphere.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00219">QuEST.c:219</a></div></div>
<div class="ttc" id="agroup__calc_html_ga50ee589fd5ceab52fdd70d0082352b41"><div class="ttname"><a href="group__calc.html#ga50ee589fd5ceab52fdd70d0082352b41">calcExpecPauliSum</a></div><div class="ttdeci">qreal calcExpecPauliSum(Qureg qureg, enum pauliOpType *allPauliCodes, qreal *termCoeffs, int numSumTerms, Qureg workspace)</div><div class="ttdoc">Computes the expected value of a sum of products of Pauli operators.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00880">QuEST.c:880</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a3ce1b05fee70d930791513fec378d229"><div class="ttname"><a href="QuEST__common_8c.html#a3ce1b05fee70d930791513fec378d229">statevec_tGateConj</a></div><div class="ttdeci">void statevec_tGateConj(Qureg qureg, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00285">QuEST_common.c:285</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a05756b45f10135bb2eeb07380f806c20"><div class="ttname"><a href="QuEST__internal_8h.html#a05756b45f10135bb2eeb07380f806c20">statevec_initStateFromSingleFile</a></div><div class="ttdeci">int statevec_initStateFromSingleFile(Qureg *qureg, char filename[200], QuESTEnv env)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01593">QuEST_cpu.c:1593</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a0344fbbb2bb505f7db14b420153f1eb5"><div class="ttname"><a href="QuEST__validation_8c.html#a0344fbbb2bb505f7db14b420153f1eb5">validateOneQubitUnitaryMatrix</a></div><div class="ttdeci">void validateOneQubitUnitaryMatrix(ComplexMatrix2 u, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00384">QuEST_validation.c:384</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a7adc86571f1154558676d95daf0cbd1f"><div class="ttname"><a href="QuEST__validation_8c.html#a7adc86571f1154558676d95daf0cbd1f">validateSecondQuregStateVec</a></div><div class="ttdeci">void validateSecondQuregStateVec(Qureg qureg2, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00442">QuEST_validation.c:442</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a76841e952d8c587c0c5ba947d86b061c"><div class="ttname"><a href="QuEST__qasm_8c.html#a76841e952d8c587c0c5ba947d86b061c">qasm_recordMeasurement</a></div><div class="ttdeci">void qasm_recordMeasurement(Qureg qureg, const int measureQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00398">QuEST_qasm.c:398</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a33cde9b6518d55a544eff20301a5d844"><div class="ttname"><a href="QuEST__common_8c.html#a33cde9b6518d55a544eff20301a5d844">statevec_sqrtSwapGateConj</a></div><div class="ttdeci">void statevec_sqrtSwapGateConj(Qureg qureg, int qb1, int qb2)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00396">QuEST_common.c:396</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_af81e1960029f6f213bc2edacaf0dcb44"><div class="ttname"><a href="QuEST__common_8c.html#af81e1960029f6f213bc2edacaf0dcb44">statevec_controlledMultiQubitUnitary</a></div><div class="ttdeci">void statevec_controlledMultiQubitUnitary(Qureg qureg, int ctrl, int *targets, const int numTargets, ComplexMatrixN u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00534">QuEST_common.c:534</a></div></div>
<div class="ttc" id="astructQureg_html_ad08dff5316b8937f4b2a1417591543dc"><div class="ttname"><a href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">Qureg::numQubitsRepresented</a></div><div class="ttdeci">int numQubitsRepresented</div><div class="ttdoc">The number of qubits represented in either the state-vector or density matrix.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00165">QuEST.h:165</a></div></div>
<div class="ttc" id="aQuEST__validation_8h_html"><div class="ttname"><a href="QuEST__validation_8h.html">QuEST_validation.h</a></div></div>
<div class="ttc" id="astructQureg_html_adef4935cac95763c29164cf99b144ed4"><div class="ttname"><a href="structQureg.html#adef4935cac95763c29164cf99b144ed4">Qureg::numAmpsTotal</a></div><div class="ttdeci">long long int numAmpsTotal</div><div class="ttdoc">Total number of amplitudes, which are possibly distributed among machines.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00172">QuEST.h:172</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fa5053f3d968443bc04e8b1d09f18bab9a"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fa5053f3d968443bc04e8b1d09f18bab9a">GATE_S</a></div><div class="ttdeci">@ GATE_S</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00025">QuEST_qasm.h:25</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fab12d052de2b7c59c6ab87710fd7d3c78"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fab12d052de2b7c59c6ab87710fd7d3c78">GATE_SWAP</a></div><div class="ttdeci">@ GATE_SWAP</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00033">QuEST_qasm.h:33</a></div></div>
<div class="ttc" id="astructComplex_html_ab5b2e2eca02131fc74b289a83636cbe3"><div class="ttname"><a href="structComplex.html#ab5b2e2eca02131fc74b289a83636cbe3">Complex::real</a></div><div class="ttdeci">qreal real</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00105">QuEST.h:105</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_ada38f885e0a4f704fb82c18a297ee1ae"><div class="ttname"><a href="QuEST__validation_8c.html#ada38f885e0a4f704fb82c18a297ee1ae">validateControlState</a></div><div class="ttdeci">void validateControlState(int *controlState, const int numControlQubits, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00375">QuEST_validation.c:375</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga97d563fa8f4bc51f720bbb653f5480b3"><div class="ttname"><a href="group__decoherence.html#ga97d563fa8f4bc51f720bbb653f5480b3">mixDensityMatrix</a></div><div class="ttdeci">void mixDensityMatrix(Qureg combineQureg, qreal otherProb, Qureg otherQureg)</div><div class="ttdoc">Modifies combineQureg to become (1-prob)combineProb + prob otherQureg.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00770">QuEST.c:770</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">Create a 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#l00034">QuEST.c:34</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_af59bc61f97d42cdceaf7fc0257a387d6"><div class="ttname"><a href="QuEST__common_8c.html#af59bc61f97d42cdceaf7fc0257a387d6">statevec_controlledRotateX</a></div><div class="ttdeci">void statevec_controlledRotateX(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00342">QuEST_common.c:342</a></div></div>
<div class="ttc" id="agroup__calc_html_ga2a0fbd65f42d35dcd5ae966c48826920"><div class="ttname"><a href="group__calc.html#ga2a0fbd65f42d35dcd5ae966c48826920">calcProbOfOutcome</a></div><div class="ttdeci">qreal calcProbOfOutcome(Qureg qureg, const int measureQubit, int outcome)</div><div class="ttdoc">Gives the probability of a specified qubit being measured in the given outcome (0 or 1).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00845">QuEST.c:845</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a63bf6575f12d7113fb854a2b6cc1a756"><div class="ttname"><a href="QuEST__common_8c.html#a63bf6575f12d7113fb854a2b6cc1a756">densmatr_mixPauli</a></div><div class="ttdeci">void densmatr_mixPauli(Qureg qureg, int qubit, qreal probX, qreal probY, qreal probZ)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00675">QuEST_common.c:675</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga3250d0d95b5d755cad542a6a2372b894"><div class="ttname"><a href="group__unitary.html#ga3250d0d95b5d755cad542a6a2372b894">multiRotateZ</a></div><div class="ttdeci">void multiRotateZ(Qureg qureg, int *qubits, int numQubits, qreal angle)</div><div class="ttdoc">Apply a multi-qubit Z rotation on a selected number of qubits.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00624">QuEST.c:624</a></div></div>
<div class="ttc" id="astructComplex_html_a84f5439aad0ef495efdd3b4c1c02d27e"><div class="ttname"><a href="structComplex.html#a84f5439aad0ef495efdd3b4c1c02d27e">Complex::imag</a></div><div class="ttdeci">qreal imag</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00106">QuEST.h:106</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a9e647339720bf82b30c6331fad544ec5"><div class="ttname"><a href="QuEST__internal_8h.html#a9e647339720bf82b30c6331fad544ec5">statevec_controlledPauliYConj</a></div><div class="ttdeci">void statevec_controlledPauliYConj(Qureg qureg, const int controlQubit, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01175">QuEST_cpu_distributed.c:1175</a></div></div>
<div class="ttc" id="agroup__unitary_html_gaa064fcf40fd02b21f98a9a83dc6cea13"><div class="ttname"><a href="group__unitary.html#gaa064fcf40fd02b21f98a9a83dc6cea13">pauliY</a></div><div class="ttdeci">void pauliY(Qureg qureg, const int targetQubit)</div><div class="ttdoc">Apply the single-qubit Pauli-Y (also known as the Y or sigma-Y) gate.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00442">QuEST.c:442</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a5adacab391af7a5ef05cf4d934a94144"><div class="ttname"><a href="QuEST__validation_8c.html#a5adacab391af7a5ef05cf4d934a94144">validateFileOpened</a></div><div class="ttdeci">void validateFileOpened(int found, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00446">QuEST_validation.c:446</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a38738db33da795b9d52bace2d9fbe7ee"><div class="ttname"><a href="QuEST__validation_8c.html#a38738db33da795b9d52bace2d9fbe7ee">validateMultiQubitKrausMap</a></div><div class="ttdeci">void validateMultiQubitKrausMap(Qureg qureg, int numTargs, ComplexMatrixN *ops, int numOps, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00535">QuEST_validation.c:535</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725faa29b98cbb581abf5ec338a1763de7a1b"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725faa29b98cbb581abf5ec338a1763de7a1b">GATE_SIGMA_Y</a></div><div class="ttdeci">@ GATE_SIGMA_Y</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00022">QuEST_qasm.h:22</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a4bea7ed7967083cbabd8a8e5acdd48c0"><div class="ttname"><a href="QuEST__internal_8h.html#a4bea7ed7967083cbabd8a8e5acdd48c0">statevec_unitary</a></div><div class="ttdeci">void statevec_unitary(Qureg qureg, const int targetQubit, ComplexMatrix2 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00883">QuEST_cpu_distributed.c:883</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a518c4351d574aea8477019dbce02f09c"><div class="ttname"><a href="QuEST__qasm_8c.html#a518c4351d574aea8477019dbce02f09c">qasm_recordCompactUnitary</a></div><div class="ttdeci">void qasm_recordCompactUnitary(Qureg qureg, Complex alpha, Complex beta, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00195">QuEST_qasm.c:195</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a2c489375aad6fb71203553c60bff043b"><div class="ttname"><a href="QuEST__common_8c.html#a2c489375aad6fb71203553c60bff043b">statevec_controlledRotateAroundAxis</a></div><div class="ttdeci">void statevec_controlledRotateAroundAxis(Qureg qureg, const int controlQubit, const int targetQubit, qreal angle, Vector axis)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00326">QuEST_common.c:326</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga9a77f84e1aa7d25d036b14d7d0cd8b61"><div class="ttname"><a href="group__decoherence.html#ga9a77f84e1aa7d25d036b14d7d0cd8b61">mixPauli</a></div><div class="ttdeci">void mixPauli(Qureg qureg, int qubit, qreal probX, qreal probY, qreal probZ)</div><div class="ttdoc">Mixes a density matrix qureg to induce general single-qubit Pauli noise.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00955">QuEST.c:955</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ac8ea84dd85eca525daeeb30b3c96b673"><div class="ttname"><a href="QuEST__common_8c.html#ac8ea84dd85eca525daeeb30b3c96b673">ensureIndsIncrease</a></div><div class="ttdeci">void ensureIndsIncrease(int *ind1, int *ind2)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00063">QuEST_common.c:63</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a8c9da88f734b0862f4cce7d819e6d3b5"><div class="ttname"><a href="QuEST__internal_8h.html#a8c9da88f734b0862f4cce7d819e6d3b5">densmatr_calcHilbertSchmidtDistance</a></div><div class="ttdeci">qreal densmatr_calcHilbertSchmidtDistance(Qureg a, Qureg b)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00430">QuEST_cpu_distributed.c:430</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ae6cecbad32a03416138b321cdc1a2c33"><div class="ttname"><a href="QuEST__internal_8h.html#ae6cecbad32a03416138b321cdc1a2c33">statevec_compareStates</a></div><div class="ttdeci">int statevec_compareStates(Qureg mq1, Qureg mq2, qreal precision)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01643">QuEST_cpu.c:1643</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a5e99d405002cdf6ddd40922911d058a4"><div class="ttname"><a href="QuEST__qasm_8c.html#a5e99d405002cdf6ddd40922911d058a4">qasm_recordControlledUnitary</a></div><div class="ttdeci">void qasm_recordControlledUnitary(Qureg qureg, ComplexMatrix2 u, int controlQubit, int targetQubit)</div><div class="ttdoc">additionally performs Rz on target to restore the global phase lost from u in QASM U(a,...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00278">QuEST_qasm.c:278</a></div></div>
<div class="ttc" id="astructComplex_html"><div class="ttname"><a href="structComplex.html">Complex</a></div><div class="ttdoc">Represents one complex number.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00103">QuEST.h:103</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_a65b9087ca37c096caa5c6e8586b67946"><div class="ttname"><a href="QuEST__common_8c.html#a65b9087ca37c096caa5c6e8586b67946">statevec_rotateAroundAxis</a></div><div class="ttdeci">void statevec_rotateAroundAxis(Qureg qureg, const int rotQubit, qreal angle, Vector axis)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00310">QuEST_common.c:310</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga81cf22c68db66bf9b4593a5d1b3f528c"><div class="ttname"><a href="group__unitary.html#ga81cf22c68db66bf9b4593a5d1b3f528c">twoQubitUnitary</a></div><div class="ttdeci">void twoQubitUnitary(Qureg qureg, const int targetQubit1, const int targetQubit2, ComplexMatrix4 u)</div><div class="ttdoc">Apply a general two-qubit unitary (including a global phase factor).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00255">QuEST.c:255</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga67a83cdbd8d6ae77f91aa011cf09907a"><div class="ttname"><a href="group__unitary.html#ga67a83cdbd8d6ae77f91aa011cf09907a">sGate</a></div><div class="ttdeci">void sGate(Qureg qureg, const int targetQubit)</div><div class="ttdoc">Apply the single-qubit S gate.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00464">QuEST.c:464</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a877d988a763a52989484afc0f8d6ddf0"><div class="ttname"><a href="QuEST__internal_8h.html#a877d988a763a52989484afc0f8d6ddf0">statevec_multiControlledTwoQubitUnitary</a></div><div class="ttdeci">void statevec_multiControlledTwoQubitUnitary(Qureg qureg, long long int ctrlMask, const int targetQubit1, const int targetQubit2, ComplexMatrix4 u)</div><div class="ttdoc">This calls swapQubitAmps only when it would involve a distributed communication; if the qubit chunks ...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01385">QuEST_cpu_distributed.c:1385</a></div></div>
<div class="ttc" id="agroup__unitary_html_gac5c485fe330636966effc0642ba2bd99"><div class="ttname"><a href="group__unitary.html#gac5c485fe330636966effc0642ba2bd99">rotateAroundAxis</a></div><div class="ttdeci">void rotateAroundAxis(Qureg qureg, const int rotQubit, qreal angle, Vector axis)</div><div class="ttdoc">Rotate a single qubit by a given angle around a given Vector on the Bloch-sphere.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00573">QuEST.c:573</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a494d9fecfb2adeab56543110f16de74e"><div class="ttname"><a href="QuEST__qasm_8c.html#a494d9fecfb2adeab56543110f16de74e">qasm_recordMultiControlledGate</a></div><div class="ttdeci">void qasm_recordMultiControlledGate(Qureg qureg, TargetGate gate, int *controlQubits, const int numControlQubits, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00316">QuEST_qasm.c:316</a></div></div>
<div class="ttc" id="agroup__init_html_ga2f049055d4a51d0ea4d1a43b5234dedb"><div class="ttname"><a href="group__init.html#ga2f049055d4a51d0ea4d1a43b5234dedb">initZeroState</a></div><div class="ttdeci">void initZeroState(Qureg qureg)</div><div class="ttdoc">Initialise a set of qubits to the classical zero state .</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00111">QuEST.c:111</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_aa5f05644a6cea13e00f828658bcf7a68"><div class="ttname"><a href="QuEST__qasm_8c.html#aa5f05644a6cea13e00f828658bcf7a68">qasm_setup</a></div><div class="ttdeci">void qasm_setup(Qureg *qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00060">QuEST_qasm.c:60</a></div></div>
<div class="ttc" id="aQuEST__qasm_8c_html_a81749d23b8c3c1acf87c9db675872c24"><div class="ttname"><a href="QuEST__qasm_8c.html#a81749d23b8c3c1acf87c9db675872c24">qasm_recordGate</a></div><div class="ttdeci">void qasm_recordGate(Qureg qureg, TargetGate gate, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8c_source.html#l00178">QuEST_qasm.c:178</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_aa194ba5f5c6e19c6caa4c715b3dbefcc"><div class="ttname"><a href="QuEST__validation_8c.html#aa194ba5f5c6e19c6caa4c715b3dbefcc">validatePauliCodes</a></div><div class="ttdeci">void validatePauliCodes(enum pauliOpType *pauliCodes, int numPauliCodes, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00498">QuEST_validation.c:498</a></div></div>
<div class="ttc" id="agroup__calc_html_ga658b3a5cab5e73a17a7fd76a83583a22"><div class="ttname"><a href="group__calc.html#ga658b3a5cab5e73a17a7fd76a83583a22">calcDensityInnerProduct</a></div><div class="ttdeci">qreal calcDensityInnerProduct(Qureg rho1, Qureg rho2)</div><div class="ttdoc">Computes the Hilbert-Schmidt scalar product (which is equivalent to the Frobenius inner product of ma...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00837">QuEST.c:837</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a365bbb1b80cb00405c8bf1a4fa1ea8e5"><div class="ttname"><a href="QuEST__internal_8h.html#a365bbb1b80cb00405c8bf1a4fa1ea8e5">statevec_createQureg</a></div><div class="ttdeci">void statevec_createQureg(Qureg *qureg, int numQubits, QuESTEnv env)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01278">QuEST_cpu.c:1278</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">Create a Qureg for qubits which are represented by a density matrix, and can be in mixed states.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00048">QuEST.c:48</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a5d49d4aadea858794b139c6a195ffd8b"><div class="ttname"><a href="QuEST__validation_8c.html#a5d49d4aadea858794b139c6a195ffd8b">validateUnitaryComplexPair</a></div><div class="ttdeci">void validateUnitaryComplexPair(Complex alpha, Complex beta, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00410">QuEST_validation.c:410</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html_a32bbd0276b80668812ac248cd81c725fae1267d5de573dc2901aa8e724ac1d689"><div class="ttname"><a href="QuEST__qasm_8h.html#a32bbd0276b80668812ac248cd81c725fae1267d5de573dc2901aa8e724ac1d689">GATE_ROTATE_Y</a></div><div class="ttdeci">@ GATE_ROTATE_Y</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__qasm_8h_source.html#l00028">QuEST_qasm.h:28</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_afd4946df21588eb7109ca9b289bcba5f"><div class="ttname"><a href="QuEST__validation_8c.html#afd4946df21588eb7109ca9b289bcba5f">validateMultiControlsMultiTargets</a></div><div class="ttdeci">void validateMultiControlsMultiTargets(Qureg qureg, int *controlQubits, const int numControlQubits, int *targetQubits, const int numTargetQubits, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00366">QuEST_validation.c:366</a></div></div>
<div class="ttc" id="agroup__init_html_ga234bd34016f08288532791903b9884b5"><div class="ttname"><a href="group__init.html#ga234bd34016f08288532791903b9884b5">initPlusState</a></div><div class="ttdeci">void initPlusState(Qureg qureg)</div><div class="ttdoc">Initialise a set of qubits to the plus state (and similarly for density matrices).</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00123">QuEST.c:123</a></div></div>
<div class="ttc" id="agroup__calc_html_ga15cfad3f3d26339128e3be32ae7deacd"><div class="ttname"><a href="group__calc.html#ga15cfad3f3d26339128e3be32ae7deacd">calcExpecPauliProd</a></div><div class="ttdeci">qreal calcExpecPauliProd(Qureg qureg, int *targetQubits, enum pauliOpType *pauliCodes, int numTargets, Qureg workspace)</div><div class="ttdoc">Computes the expected value of a product of Pauli operators.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00871">QuEST.c:871</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a260639d187d09cbeef3ff36f0d4d1f0e"><div class="ttname"><a href="QuEST__validation_8c.html#a260639d187d09cbeef3ff36f0d4d1f0e">validateOneQubitDampingProb</a></div><div class="ttdeci">void validateOneQubitDampingProb(qreal prob, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00477">QuEST_validation.c:477</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a708246b16236c492094c2633da0c08ff"><div class="ttname"><a href="QuEST__internal_8h.html#a708246b16236c492094c2633da0c08ff">statevec_controlledPauliY</a></div><div class="ttdeci">void statevec_controlledPauliY(Qureg qureg, const int controlQubit, const int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l01142">QuEST_cpu_distributed.c:1142</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga84cd118c44b9d3866f56b865dbb9bd7d"><div class="ttname"><a href="group__unitary.html#ga84cd118c44b9d3866f56b865dbb9bd7d">pauliX</a></div><div class="ttdeci">void pauliX(Qureg qureg, const int targetQubit)</div><div class="ttdoc">Apply the single-qubit Pauli-X (also known as the X, sigma-X, NOT or bit-flip) gate.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00431">QuEST.c:431</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_abc9a9ef4344c7faaaf28ac25c76649b9"><div class="ttname"><a href="QuEST__internal_8h.html#abc9a9ef4344c7faaaf28ac25c76649b9">statevec_getRealAmp</a></div><div class="ttdeci">qreal statevec_getRealAmp(Qureg qureg, long long int index)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00198">QuEST_cpu_distributed.c:198</a></div></div>
<div class="ttc" id="agroup__unitary_html_ga75d5e65f87c68403602a669b9c6d52b0"><div class="ttname"><a href="group__unitary.html#ga75d5e65f87c68403602a669b9c6d52b0">sqrtSwapGate</a></div><div class="ttdeci">void sqrtSwapGate(Qureg qureg, int qb1, int qb2)</div><div class="ttdoc">Performs a sqrt SWAP gate between qubit1 and qubit2.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00611">QuEST.c:611</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_aed5f85789dc4fa43b64e99e6b538035c"><div class="ttname"><a href="QuEST__validation_8c.html#aed5f85789dc4fa43b64e99e6b538035c">validateUniqueTargets</a></div><div class="ttdeci">void validateUniqueTargets(Qureg qureg, int qubit1, int qubit2, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00321">QuEST_validation.c:321</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga65b4c0944090fae78a37ba3b94811ace"><div class="ttname"><a href="group__decoherence.html#ga65b4c0944090fae78a37ba3b94811ace">mixMultiQubitKrausMap</a></div><div class="ttdeci">void mixMultiQubitKrausMap(Qureg qureg, int *targets, int numTargets, ComplexMatrixN *ops, int numOps)</div><div class="ttdoc">Apply a general N-qubit Kraus map to a density matrix, as specified by at most (2N)^2 Kraus operators...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00986">QuEST.c:986</a></div></div>
<div class="ttc" id="aQuEST__qasm_8h_html"><div class="ttname"><a href="QuEST__qasm_8h.html">QuEST_qasm.h</a></div></div>
<div class="ttc" id="agroup__qasm_html_gacf139d0a54b1f9e5c2f2feff742b8c76"><div class="ttname"><a href="group__qasm.html#gacf139d0a54b1f9e5c2f2feff742b8c76">printRecordedQASM</a></div><div class="ttdeci">void printRecordedQASM(Qureg qureg)</div><div class="ttdoc">Print recorded QASM to stdout.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00097">QuEST.c:97</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a2f58e35b04edfbc053e0c9ae19f1be97"><div class="ttname"><a href="QuEST__validation_8c.html#a2f58e35b04edfbc053e0c9ae19f1be97">validateTwoQubitDephaseProb</a></div><div class="ttdeci">void validateTwoQubitDephaseProb(qreal prob, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00467">QuEST_validation.c:467</a></div></div>
<div class="ttc" id="agroup__debug_html_gaa33ed720560d051eb4126b4a534bc4c6"><div class="ttname"><a href="group__debug.html#gaa33ed720560d051eb4126b4a534bc4c6">reportStateToScreen</a></div><div class="ttdeci">void reportStateToScreen(Qureg qureg, QuESTEnv env, int reportRank)</div><div class="ttdoc">Print the current state vector of probability amplitudes for a set of qubits to standard out.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l01073">QuEST.c:1073</a></div></div>
<div class="ttc" id="aQuEST__common_8c_html_ae4ebc1f4dd48922bfb30ad1692310269"><div class="ttname"><a href="QuEST__common_8c.html#ae4ebc1f4dd48922bfb30ad1692310269">densmatr_measureWithStats</a></div><div class="ttdeci">int densmatr_measureWithStats(Qureg qureg, int measureQubit, qreal *outcomeProb)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__common_8c_source.html#l00368">QuEST_common.c:368</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ad65ad1b5ea6f30b0c6b4ffda96e1a8e6"><div class="ttname"><a href="QuEST__internal_8h.html#ad65ad1b5ea6f30b0c6b4ffda96e1a8e6">statevec_calcTotalProb</a></div><div class="ttdeci">qreal statevec_calcTotalProb(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00088">QuEST_cpu_distributed.c:88</a></div></div>
<div class="ttc" id="astructComplexMatrix2_html"><div class="ttname"><a href="structComplexMatrix2.html">ComplexMatrix2</a></div><div class="ttdoc">Represents a 2x2 matrix of complex numbers.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00114">QuEST.h:114</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_ae5ad68d054875913d0f7ec654840a9ec"><div class="ttname"><a href="QuEST__internal_8h.html#ae5ad68d054875913d0f7ec654840a9ec">densmatr_initPureState</a></div><div class="ttdeci">void densmatr_initPureState(Qureg targetQureg, Qureg copyQureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00452">QuEST_cpu_distributed.c:452</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a94ee4df9faba286ad7a5bc829ef5174d"><div class="ttname"><a href="QuEST__internal_8h.html#a94ee4df9faba286ad7a5bc829ef5174d">statevec_compactUnitary</a></div><div class="ttdeci">void statevec_compactUnitary(Qureg qureg, const int targetQubit, Complex alpha, Complex beta)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu__distributed_8c_source.html#l00846">QuEST_cpu_distributed.c:846</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a1b018a5766c1b26c731e8dcaa76abb19"><div class="ttname"><a href="QuEST__validation_8c.html#a1b018a5766c1b26c731e8dcaa76abb19">validateOneQubitPauliProbs</a></div><div class="ttdeci">void validateOneQubitPauliProbs(qreal probX, qreal probY, qreal probZ, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00487">QuEST_validation.c:487</a></div></div>
<div class="ttc" id="aQuEST__validation_8c_html_a455024b2f504b0e9646f239d67386d36"><div class="ttname"><a href="QuEST__validation_8c.html#a455024b2f504b0e9646f239d67386d36">validateMultiControlsTarget</a></div><div class="ttdeci">void validateMultiControlsTarget(Qureg qureg, int *controlQubits, const int numControlQubits, const int targetQubit, const char *caller)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__validation_8c_source.html#l00359">QuEST_validation.c:359</a></div></div>
<div class="ttc" id="agroup__decoherence_html_ga556fe013915bca4626367d98db948f5e"><div class="ttname"><a href="group__decoherence.html#ga556fe013915bca4626367d98db948f5e">mixDepolarising</a></div><div class="ttdeci">void mixDepolarising(Qureg qureg, const int targetQubit, qreal prob)</div><div class="ttdoc">Mixes a density matrix qureg to induce single-qubit homogeneous depolarising noise.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8c_source.html#l00924">QuEST.c:924</a></div></div>
<!-- HTML footer for doxygen 1.8.8-->
<!-- start footer part -->
</div>
</div>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="boot.js"></script>
</html>