<!-- 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 File Reference</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="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">QuEST.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include "<a class="el" href="QuEST_8h_source.html">QuEST.h</a>"</code><br />
<code>#include "<a class="el" href="QuEST__precision_8h_source.html">QuEST_precision.h</a>"</code><br />
<code>#include "<a class="el" href="QuEST__internal_8h_source.html">QuEST_internal.h</a>"</code><br />
<code>#include "<a class="el" href="QuEST__validation_8h_source.html">QuEST_validation.h</a>"</code><br />
<code>#include "<a class="el" href="QuEST__qasm_8h_source.html">QuEST_qasm.h</a>"</code><br />
<code>#include <stdlib.h></code><br />
</div>
<p><a href="QuEST_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga6fc26cf857db070e12959e59ecfed8a6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__operator.html#ga6fc26cf857db070e12959e59ecfed8a6">applyPauliSum</a> (<a class="el" href="structQureg.html">Qureg</a> inQureg, enum <a class="el" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a> *allPauliCodes, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *termCoeffs, int numSumTerms, <a class="el" href="structQureg.html">Qureg</a> outQureg)</td></tr>
<tr class="memdesc:ga6fc26cf857db070e12959e59ecfed8a6"><td class="mdescLeft"> </td><td class="mdescRight">Modifies <code>outQureg</code> to be the result of applying the weighted sum of Pauli products (a Hermitian but not necessarily unitary operator) to <code>inQureg</code>. <a href="group__operator.html#ga6fc26cf857db070e12959e59ecfed8a6">More...</a><br /></td></tr>
<tr class="separator:ga6fc26cf857db070e12959e59ecfed8a6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga658b3a5cab5e73a17a7fd76a83583a22"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga658b3a5cab5e73a17a7fd76a83583a22">calcDensityInnerProduct</a> (<a class="el" href="structQureg.html">Qureg</a> rho1, <a class="el" href="structQureg.html">Qureg</a> rho2)</td></tr>
<tr class="memdesc:ga658b3a5cab5e73a17a7fd76a83583a22"><td class="mdescLeft"> </td><td class="mdescRight">Computes the Hilbert-Schmidt scalar product (which is equivalent to the Frobenius inner product of matrices) of two density matrices <code>rho1</code> and <code>rho2</code> of equivalent size. <a href="group__calc.html#ga658b3a5cab5e73a17a7fd76a83583a22">More...</a><br /></td></tr>
<tr class="separator:ga658b3a5cab5e73a17a7fd76a83583a22"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga15cfad3f3d26339128e3be32ae7deacd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga15cfad3f3d26339128e3be32ae7deacd">calcExpecPauliProd</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *targetQubits, enum <a class="el" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a> *pauliCodes, int numTargets, <a class="el" href="structQureg.html">Qureg</a> workspace)</td></tr>
<tr class="memdesc:ga15cfad3f3d26339128e3be32ae7deacd"><td class="mdescLeft"> </td><td class="mdescRight">Computes the expected value of a product of Pauli operators. <a href="group__calc.html#ga15cfad3f3d26339128e3be32ae7deacd">More...</a><br /></td></tr>
<tr class="separator:ga15cfad3f3d26339128e3be32ae7deacd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga50ee589fd5ceab52fdd70d0082352b41"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga50ee589fd5ceab52fdd70d0082352b41">calcExpecPauliSum</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, enum <a class="el" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a> *allPauliCodes, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *termCoeffs, int numSumTerms, <a class="el" href="structQureg.html">Qureg</a> workspace)</td></tr>
<tr class="memdesc:ga50ee589fd5ceab52fdd70d0082352b41"><td class="mdescLeft"> </td><td class="mdescRight">Computes the expected value of a sum of products of Pauli operators. <a href="group__calc.html#ga50ee589fd5ceab52fdd70d0082352b41">More...</a><br /></td></tr>
<tr class="separator:ga50ee589fd5ceab52fdd70d0082352b41"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa266ed6c8ae5d0d0f49e1ac50819cffc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#gaa266ed6c8ae5d0d0f49e1ac50819cffc">calcFidelity</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structQureg.html">Qureg</a> pureState)</td></tr>
<tr class="memdesc:gaa266ed6c8ae5d0d0f49e1ac50819cffc"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the fidelity of <code>qureg</code> (a statevector or density matrix) against a reference pure state (necessarily a statevector). <a href="group__calc.html#gaa266ed6c8ae5d0d0f49e1ac50819cffc">More...</a><br /></td></tr>
<tr class="separator:gaa266ed6c8ae5d0d0f49e1ac50819cffc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga87ddbe5c8281543541ccd99e0dafd387"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga87ddbe5c8281543541ccd99e0dafd387">calcHilbertSchmidtDistance</a> (<a class="el" href="structQureg.html">Qureg</a> a, <a class="el" href="structQureg.html">Qureg</a> b)</td></tr>
<tr class="memdesc:ga87ddbe5c8281543541ccd99e0dafd387"><td class="mdescLeft"> </td><td class="mdescRight">Computes the Hilbert Schmidt distance between two density matrices <code>a</code> and <code>b</code>, defined as the Frobenius norm of the difference between them. <a href="group__calc.html#ga87ddbe5c8281543541ccd99e0dafd387">More...</a><br /></td></tr>
<tr class="separator:ga87ddbe5c8281543541ccd99e0dafd387"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga374ad70804998394ae41ebfe106258a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structComplex.html">Complex</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga374ad70804998394ae41ebfe106258a6">calcInnerProduct</a> (<a class="el" href="structQureg.html">Qureg</a> bra, <a class="el" href="structQureg.html">Qureg</a> ket)</td></tr>
<tr class="memdesc:ga374ad70804998394ae41ebfe106258a6"><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product <img class="formulaInl" alt="$ \langle \text{bra} | \text{ket} \rangle $" src="form_82.png"/> of two equal-size state vectors, given by. <a href="group__calc.html#ga374ad70804998394ae41ebfe106258a6">More...</a><br /></td></tr>
<tr class="separator:ga374ad70804998394ae41ebfe106258a6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2a0fbd65f42d35dcd5ae966c48826920"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga2a0fbd65f42d35dcd5ae966c48826920">calcProbOfOutcome</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int measureQubit, int outcome)</td></tr>
<tr class="memdesc:ga2a0fbd65f42d35dcd5ae966c48826920"><td class="mdescLeft"> </td><td class="mdescRight">Gives the probability of a specified qubit being measured in the given outcome (0 or 1). <a href="group__calc.html#ga2a0fbd65f42d35dcd5ae966c48826920">More...</a><br /></td></tr>
<tr class="separator:ga2a0fbd65f42d35dcd5ae966c48826920"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga683779343fb2c6055f6b1d01079c2ede"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga683779343fb2c6055f6b1d01079c2ede">calcPurity</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:ga683779343fb2c6055f6b1d01079c2ede"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the purity of a density matrix, by the trace of the density matrix squared. <a href="group__calc.html#ga683779343fb2c6055f6b1d01079c2ede">More...</a><br /></td></tr>
<tr class="separator:ga683779343fb2c6055f6b1d01079c2ede"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab082910d33473ec29e1d5852943de468"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#gab082910d33473ec29e1d5852943de468">calcTotalProb</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:gab082910d33473ec29e1d5852943de468"><td class="mdescLeft"> </td><td class="mdescRight">A debugging function which calculates the probability of the qubits in <code>qureg</code> being in any state, which should always be 1 for correctly normalised states (hence returning a real number). <a href="group__calc.html#gab082910d33473ec29e1d5852943de468">More...</a><br /></td></tr>
<tr class="separator:gab082910d33473ec29e1d5852943de468"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab3a410abab3e8beb394bd3bbfae8977c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__qasm.html#gab3a410abab3e8beb394bd3bbfae8977c">clearRecordedQASM</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:gab3a410abab3e8beb394bd3bbfae8977c"><td class="mdescLeft"> </td><td class="mdescRight">Clear all QASM so far recorded. <a href="group__qasm.html#gab3a410abab3e8beb394bd3bbfae8977c">More...</a><br /></td></tr>
<tr class="separator:gab3a410abab3e8beb394bd3bbfae8977c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4534403b721977b669bff7bf4e37f0fb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga4534403b721977b669bff7bf4e37f0fb">cloneQureg</a> (<a class="el" href="structQureg.html">Qureg</a> targetQureg, <a class="el" href="structQureg.html">Qureg</a> copyQureg)</td></tr>
<tr class="memdesc:ga4534403b721977b669bff7bf4e37f0fb"><td class="mdescLeft"> </td><td class="mdescRight">Set targetQureg to be a clone of copyQureg. <a href="group__init.html#ga4534403b721977b669bff7bf4e37f0fb">More...</a><br /></td></tr>
<tr class="separator:ga4534403b721977b669bff7bf4e37f0fb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab164930b260718d85ed3f55f50c76a59"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__normgate.html#gab164930b260718d85ed3f55f50c76a59">collapseToOutcome</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int measureQubit, int outcome)</td></tr>
<tr class="memdesc:gab164930b260718d85ed3f55f50c76a59"><td class="mdescLeft"> </td><td class="mdescRight">Updates <code>qureg</code> to be consistent with measuring <code>measureQubit</code> in the given <code>outcome</code> (0 or 1), and returns the probability of such a measurement outcome. <a href="group__normgate.html#gab164930b260718d85ed3f55f50c76a59">More...</a><br /></td></tr>
<tr class="separator:gab164930b260718d85ed3f55f50c76a59"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0cbd92af48fe641522e62eea1a76a7c3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga0cbd92af48fe641522e62eea1a76a7c3">compactUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="structComplex.html">Complex</a> alpha, <a class="el" href="structComplex.html">Complex</a> beta)</td></tr>
<tr class="memdesc:ga0cbd92af48fe641522e62eea1a76a7c3"><td class="mdescLeft"> </td><td class="mdescRight">Apply a single-qubit unitary parameterised by two given complex scalars. <a href="group__unitary.html#ga0cbd92af48fe641522e62eea1a76a7c3">More...</a><br /></td></tr>
<tr class="separator:ga0cbd92af48fe641522e62eea1a76a7c3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:acb5e66108a5c6cf36642148335c0d9ab"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST_8c.html#acb5e66108a5c6cf36642148335c0d9ab">compareStates</a> (<a class="el" href="structQureg.html">Qureg</a> qureg1, <a class="el" href="structQureg.html">Qureg</a> qureg2, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> precision)</td></tr>
<tr class="memdesc:acb5e66108a5c6cf36642148335c0d9ab"><td class="mdescLeft"> </td><td class="mdescRight">Return whether two given wavefunctions are equivalent within a given precision Global phase included in equivalence check. <a href="QuEST_8c.html#acb5e66108a5c6cf36642148335c0d9ab">More...</a><br /></td></tr>
<tr class="separator:acb5e66108a5c6cf36642148335c0d9ab"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa854e4b76cfd4000a32c06c990960bd9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gaa854e4b76cfd4000a32c06c990960bd9">controlledCompactUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit, <a class="el" href="structComplex.html">Complex</a> alpha, <a class="el" href="structComplex.html">Complex</a> beta)</td></tr>
<tr class="memdesc:gaa854e4b76cfd4000a32c06c990960bd9"><td class="mdescLeft"> </td><td class="mdescRight">Apply a controlled unitary (single control, single target) parameterised by two given complex scalars. <a href="group__unitary.html#gaa854e4b76cfd4000a32c06c990960bd9">More...</a><br /></td></tr>
<tr class="separator:gaa854e4b76cfd4000a32c06c990960bd9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6375f658bd7cb24d25e0603b5b947bbd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga6375f658bd7cb24d25e0603b5b947bbd">controlledMultiQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int ctrl, int *targs, const int numTargs, <a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> u)</td></tr>
<tr class="memdesc:ga6375f658bd7cb24d25e0603b5b947bbd"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general controlled multi-qubit unitary (including a global phase factor). <a href="group__unitary.html#ga6375f658bd7cb24d25e0603b5b947bbd">More...</a><br /></td></tr>
<tr class="separator:ga6375f658bd7cb24d25e0603b5b947bbd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadf4927a3d5dd8cd6d7400f2e810b4f05"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gadf4927a3d5dd8cd6d7400f2e810b4f05">controlledNot</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit)</td></tr>
<tr class="memdesc:gadf4927a3d5dd8cd6d7400f2e810b4f05"><td class="mdescLeft"> </td><td class="mdescRight">Apply the controlled not (single control, single target) gate, also known as the c-X, c-sigma-X, c-Pauli-X and c-bit-flip gate. <a href="group__unitary.html#gadf4927a3d5dd8cd6d7400f2e810b4f05">More...</a><br /></td></tr>
<tr class="separator:gadf4927a3d5dd8cd6d7400f2e810b4f05"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga811e9b47126c83ff859059106f66cf96"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga811e9b47126c83ff859059106f66cf96">controlledPauliY</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit)</td></tr>
<tr class="memdesc:ga811e9b47126c83ff859059106f66cf96"><td class="mdescLeft"> </td><td class="mdescRight">Apply the controlled pauliY (single control, single target) gate, also known as the c-Y and c-sigma-Y gate. <a href="group__unitary.html#ga811e9b47126c83ff859059106f66cf96">More...</a><br /></td></tr>
<tr class="separator:ga811e9b47126c83ff859059106f66cf96"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4dcb9c6660d7a5f74c9597bc467d39ef"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga4dcb9c6660d7a5f74c9597bc467d39ef">controlledPhaseFlip</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int idQubit1, const int idQubit2)</td></tr>
<tr class="memdesc:ga4dcb9c6660d7a5f74c9597bc467d39ef"><td class="mdescLeft"> </td><td class="mdescRight">Apply the (two-qubit) controlled phase flip gate, also known as the controlled pauliZ gate. <a href="group__unitary.html#ga4dcb9c6660d7a5f74c9597bc467d39ef">More...</a><br /></td></tr>
<tr class="separator:ga4dcb9c6660d7a5f74c9597bc467d39ef"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga69e074c8174e198ca014d9905b98b43d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga69e074c8174e198ca014d9905b98b43d">controlledPhaseShift</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int idQubit1, const int idQubit2, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga69e074c8174e198ca014d9905b98b43d"><td class="mdescLeft"> </td><td class="mdescRight">Introduce a phase factor <img class="formulaInl" alt="$ \exp(i \theta) $" src="form_19.png"/> on state <img class="formulaInl" alt="$ |11\rangle $" src="form_20.png"/> of qubits <code>idQubit1</code> and <code>idQubit2</code>. <a href="group__unitary.html#ga69e074c8174e198ca014d9905b98b43d">More...</a><br /></td></tr>
<tr class="separator:ga69e074c8174e198ca014d9905b98b43d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga82bf9aaf01430d3ecfde52b7731421d7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga82bf9aaf01430d3ecfde52b7731421d7">controlledRotateAroundAxis</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle, <a class="el" href="structVector.html">Vector</a> axis)</td></tr>
<tr class="memdesc:ga82bf9aaf01430d3ecfde52b7731421d7"><td class="mdescLeft"> </td><td class="mdescRight">Applies a controlled rotation by a given angle around a given vector on the Bloch-sphere. <a href="group__unitary.html#ga82bf9aaf01430d3ecfde52b7731421d7">More...</a><br /></td></tr>
<tr class="separator:ga82bf9aaf01430d3ecfde52b7731421d7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7dc4ed5d9fd2872a04fea6ef13b65c3d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga7dc4ed5d9fd2872a04fea6ef13b65c3d">controlledRotateX</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga7dc4ed5d9fd2872a04fea6ef13b65c3d"><td class="mdescLeft"> </td><td class="mdescRight">Applies a controlled rotation by a given angle around the X-axis of the Bloch-sphere. <a href="group__unitary.html#ga7dc4ed5d9fd2872a04fea6ef13b65c3d">More...</a><br /></td></tr>
<tr class="separator:ga7dc4ed5d9fd2872a04fea6ef13b65c3d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf99ba5356a6c20d3d047b36874fc0a50"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gaf99ba5356a6c20d3d047b36874fc0a50">controlledRotateY</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:gaf99ba5356a6c20d3d047b36874fc0a50"><td class="mdescLeft"> </td><td class="mdescRight">Applies a controlled rotation by a given angle around the Y-axis of the Bloch-sphere. <a href="group__unitary.html#gaf99ba5356a6c20d3d047b36874fc0a50">More...</a><br /></td></tr>
<tr class="separator:gaf99ba5356a6c20d3d047b36874fc0a50"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9afcf34f7c6ae127452b503c074a9b7b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga9afcf34f7c6ae127452b503c074a9b7b">controlledRotateZ</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga9afcf34f7c6ae127452b503c074a9b7b"><td class="mdescLeft"> </td><td class="mdescRight">Applies a controlled rotation by a given angle around the Z-axis of the Bloch-sphere. <a href="group__unitary.html#ga9afcf34f7c6ae127452b503c074a9b7b">More...</a><br /></td></tr>
<tr class="separator:ga9afcf34f7c6ae127452b503c074a9b7b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80">controlledTwoQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit1, const int targetQubit2, <a class="el" href="structComplexMatrix4.html">ComplexMatrix4</a> u)</td></tr>
<tr class="memdesc:ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general controlled two-qubit unitary (including a global phase factor). <a href="group__unitary.html#ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80">More...</a><br /></td></tr>
<tr class="separator:ga8a718f1a8cc3a0ea3f5bbdb2c5a99d80"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf2ad34c9659292d32c6c725e4bd668cf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gaf2ad34c9659292d32c6c725e4bd668cf">controlledUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int controlQubit, const int targetQubit, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> u)</td></tr>
<tr class="memdesc:gaf2ad34c9659292d32c6c725e4bd668cf"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general controlled unitary (single control, single target), which can include a global phase factor. <a href="group__unitary.html#gaf2ad34c9659292d32c6c725e4bd668cf">More...</a><br /></td></tr>
<tr class="separator:gaf2ad34c9659292d32c6c725e4bd668cf"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabd07eee133dcd4e6ae7c2d2ce4c42978"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structQureg.html">Qureg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#gabd07eee133dcd4e6ae7c2d2ce4c42978">createCloneQureg</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:gabd07eee133dcd4e6ae7c2d2ce4c42978"><td class="mdescLeft"> </td><td class="mdescRight">Create a new <a class="el" href="structQureg.html" title="Represents a system of qubits.">Qureg</a> which is an exact clone of the passed qureg, which can be either a statevector or a density matrix. <a href="group__type.html#gabd07eee133dcd4e6ae7c2d2ce4c42978">More...</a><br /></td></tr>
<tr class="separator:gabd07eee133dcd4e6ae7c2d2ce4c42978"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga815103261fb22ea9690e1427571df00e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#ga815103261fb22ea9690e1427571df00e">createComplexMatrixN</a> (int numQubits)</td></tr>
<tr class="memdesc:ga815103261fb22ea9690e1427571df00e"><td class="mdescLeft"> </td><td class="mdescRight">Create (dynamically) a square complex matrix which can be passed to the multi-qubit general unitary functions. <a href="group__type.html#ga815103261fb22ea9690e1427571df00e">More...</a><br /></td></tr>
<tr class="separator:ga815103261fb22ea9690e1427571df00e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga93e55b6650b408abb30a1d4a8bce757c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structQureg.html">Qureg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#ga93e55b6650b408abb30a1d4a8bce757c">createDensityQureg</a> (int numQubits, <a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:ga93e55b6650b408abb30a1d4a8bce757c"><td class="mdescLeft"> </td><td class="mdescRight">Create a <a class="el" href="structQureg.html" title="Represents a system of qubits.">Qureg</a> for qubits which are represented by a density matrix, and can be in mixed states. <a href="group__type.html#ga93e55b6650b408abb30a1d4a8bce757c">More...</a><br /></td></tr>
<tr class="separator:ga93e55b6650b408abb30a1d4a8bce757c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3392816c0643414165c2f5caeec17df0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structQureg.html">Qureg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#ga3392816c0643414165c2f5caeec17df0">createQureg</a> (int numQubits, <a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:ga3392816c0643414165c2f5caeec17df0"><td class="mdescLeft"> </td><td class="mdescRight">Create a <a class="el" href="structQureg.html" title="Represents a system of qubits.">Qureg</a> object representing a set of qubits which will remain in a pure state. <a href="group__type.html#ga3392816c0643414165c2f5caeec17df0">More...</a><br /></td></tr>
<tr class="separator:ga3392816c0643414165c2f5caeec17df0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9df2f3d86be4a6e9aad481665e5e6753"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#ga9df2f3d86be4a6e9aad481665e5e6753">destroyComplexMatrixN</a> (<a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> m)</td></tr>
<tr class="memdesc:ga9df2f3d86be4a6e9aad481665e5e6753"><td class="mdescLeft"> </td><td class="mdescRight">Destroy a <a class="el" href="structComplexMatrixN.html" title="Represents a general 2^N by 2^N matrix of complex numbers.">ComplexMatrixN</a> instance created with <a class="el" href="group__type.html#ga815103261fb22ea9690e1427571df00e" title="Create (dynamically) a square complex matrix which can be passed to the multi-qubit general unitary f...">createComplexMatrixN()</a> <a href="group__type.html#ga9df2f3d86be4a6e9aad481665e5e6753">More...</a><br /></td></tr>
<tr class="separator:ga9df2f3d86be4a6e9aad481665e5e6753"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8e1e6ad3254892edc2ee08712ea9d692"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#ga8e1e6ad3254892edc2ee08712ea9d692">destroyQureg</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:ga8e1e6ad3254892edc2ee08712ea9d692"><td class="mdescLeft"> </td><td class="mdescRight">Deallocate a <a class="el" href="structQureg.html" title="Represents a system of qubits.">Qureg</a> object representing a set of qubits. <a href="group__type.html#ga8e1e6ad3254892edc2ee08712ea9d692">More...</a><br /></td></tr>
<tr class="separator:ga8e1e6ad3254892edc2ee08712ea9d692"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga30d6f8b7c766c9c9914b2c61a2fc0def"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structComplex.html">Complex</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga30d6f8b7c766c9c9914b2c61a2fc0def">getAmp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int index)</td></tr>
<tr class="memdesc:ga30d6f8b7c766c9c9914b2c61a2fc0def"><td class="mdescLeft"> </td><td class="mdescRight">Get the complex amplitude at a given index in the state vector. <a href="group__calc.html#ga30d6f8b7c766c9c9914b2c61a2fc0def">More...</a><br /></td></tr>
<tr class="separator:ga30d6f8b7c766c9c9914b2c61a2fc0def"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadca286c4ad5cde6124d4e80a7ab95a68"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structComplex.html">Complex</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#gadca286c4ad5cde6124d4e80a7ab95a68">getDensityAmp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int row, long long int col)</td></tr>
<tr class="memdesc:gadca286c4ad5cde6124d4e80a7ab95a68"><td class="mdescLeft"> </td><td class="mdescRight">Get an amplitude from a density matrix at a given row and column. <a href="group__calc.html#gadca286c4ad5cde6124d4e80a7ab95a68">More...</a><br /></td></tr>
<tr class="separator:gadca286c4ad5cde6124d4e80a7ab95a68"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad575782de461d9ab0975b38cc7850f1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#gad575782de461d9ab0975b38cc7850f1a">getImagAmp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int index)</td></tr>
<tr class="memdesc:gad575782de461d9ab0975b38cc7850f1a"><td class="mdescLeft"> </td><td class="mdescRight">Get the imaginary component of the complex probability amplitude at an index in the state vector. <a href="group__calc.html#gad575782de461d9ab0975b38cc7850f1a">More...</a><br /></td></tr>
<tr class="separator:gad575782de461d9ab0975b38cc7850f1a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8cbe422d4981bf06847d229a4c6aa3df"><td class="memItemLeft" align="right" valign="top">long long int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga8cbe422d4981bf06847d229a4c6aa3df">getNumAmps</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:ga8cbe422d4981bf06847d229a4c6aa3df"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of probability amplitudes in a qureg object, given by 2^numQubits. <a href="group__calc.html#ga8cbe422d4981bf06847d229a4c6aa3df">More...</a><br /></td></tr>
<tr class="separator:ga8cbe422d4981bf06847d229a4c6aa3df"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga73036c778d800703585ab3d8796a915f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga73036c778d800703585ab3d8796a915f">getNumQubits</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:ga73036c778d800703585ab3d8796a915f"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of qubits in a qureg object. <a href="group__calc.html#ga73036c778d800703585ab3d8796a915f">More...</a><br /></td></tr>
<tr class="separator:ga73036c778d800703585ab3d8796a915f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4a14d22379d399760b0cfc5c8053589b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga4a14d22379d399760b0cfc5c8053589b">getProbAmp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int index)</td></tr>
<tr class="memdesc:ga4a14d22379d399760b0cfc5c8053589b"><td class="mdescLeft"> </td><td class="mdescRight">Get the probability of a state-vector at an index in the full state vector. <a href="group__calc.html#ga4a14d22379d399760b0cfc5c8053589b">More...</a><br /></td></tr>
<tr class="separator:ga4a14d22379d399760b0cfc5c8053589b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:acd34ae4aa7e7f466316cc104532c85c1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST_8c.html#acd34ae4aa7e7f466316cc104532c85c1">getQuEST_PREC</a> (void)</td></tr>
<tr class="separator:acd34ae4aa7e7f466316cc104532c85c1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1416145280c62c5dd5ec9bed89b4cd05"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__calc.html#ga1416145280c62c5dd5ec9bed89b4cd05">getRealAmp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int index)</td></tr>
<tr class="memdesc:ga1416145280c62c5dd5ec9bed89b4cd05"><td class="mdescLeft"> </td><td class="mdescRight">Get the real component of the complex probability amplitude at an index in the state vector. <a href="group__calc.html#ga1416145280c62c5dd5ec9bed89b4cd05">More...</a><br /></td></tr>
<tr class="separator:ga1416145280c62c5dd5ec9bed89b4cd05"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2f3bec8d06e7bf7314c581a5b837641f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga2f3bec8d06e7bf7314c581a5b837641f">hadamard</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit)</td></tr>
<tr class="memdesc:ga2f3bec8d06e7bf7314c581a5b837641f"><td class="mdescLeft"> </td><td class="mdescRight">Apply the single-qubit Hadamard gate. <a href="group__unitary.html#ga2f3bec8d06e7bf7314c581a5b837641f">More...</a><br /></td></tr>
<tr class="separator:ga2f3bec8d06e7bf7314c581a5b837641f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gada7230491a50cd409f8b00f5ee1db953"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gada7230491a50cd409f8b00f5ee1db953">initBlankState</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:gada7230491a50cd409f8b00f5ee1db953"><td class="mdescLeft"> </td><td class="mdescRight">Initialises a qureg to have all-zero-amplitudes. <a href="group__init.html#gada7230491a50cd409f8b00f5ee1db953">More...</a><br /></td></tr>
<tr class="separator:gada7230491a50cd409f8b00f5ee1db953"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0379e21efca0767a22607fc0e26a5a22"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga0379e21efca0767a22607fc0e26a5a22">initClassicalState</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int stateInd)</td></tr>
<tr class="memdesc:ga0379e21efca0767a22607fc0e26a5a22"><td class="mdescLeft"> </td><td class="mdescRight">Initialise a set of <img class="formulaInl" alt="$ N $" src="form_0.png"/> qubits to the classical state (also known as a "computational basis state") with index <code>stateInd</code>. <a href="group__init.html#ga0379e21efca0767a22607fc0e26a5a22">More...</a><br /></td></tr>
<tr class="separator:ga0379e21efca0767a22607fc0e26a5a22"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga429f1b90b3ef06c786dec8c7f0eda4ce"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#ga429f1b90b3ef06c786dec8c7f0eda4ce">initComplexMatrixN</a> (<a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> m, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> re[][1<< m.numQubits], <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> im[][1<< m.numQubits])</td></tr>
<tr class="memdesc:ga429f1b90b3ef06c786dec8c7f0eda4ce"><td class="mdescLeft"> </td><td class="mdescRight">Initialises a <a class="el" href="structComplexMatrixN.html" title="Represents a general 2^N by 2^N matrix of complex numbers.">ComplexMatrixN</a> instance to have the passed <code>real</code> and <code>imag</code> values. <a href="group__type.html#ga429f1b90b3ef06c786dec8c7f0eda4ce">More...</a><br /></td></tr>
<tr class="separator:ga429f1b90b3ef06c786dec8c7f0eda4ce"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa696c94112e5fbbc996af10dfc4e2c1c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#gaa696c94112e5fbbc996af10dfc4e2c1c">initDebugState</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:gaa696c94112e5fbbc996af10dfc4e2c1c"><td class="mdescLeft"> </td><td class="mdescRight">Initialises <code>qureg</code> to be in the un-normalised, non-physical state with with n-th complex amplitude (2n/10 + i(2n+1)/10). <a href="group__debug.html#gaa696c94112e5fbbc996af10dfc4e2c1c">More...</a><br /></td></tr>
<tr class="separator:gaa696c94112e5fbbc996af10dfc4e2c1c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga234bd34016f08288532791903b9884b5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga234bd34016f08288532791903b9884b5">initPlusState</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:ga234bd34016f08288532791903b9884b5"><td class="mdescLeft"> </td><td class="mdescRight">Initialise a set of <img class="formulaInl" alt="$ N $" src="form_0.png"/> qubits to the plus state <img class="formulaInl" alt="$ {| + \rangle}^{\otimes N} = \frac{1}{\sqrt{2^N}} (| 0 \rangle + | 1 \rangle)^{\otimes N} $" src="form_2.png"/> (and similarly <img class="formulaInl" alt="$ |+\rangle \langle+| $" src="form_3.png"/> for density matrices). <a href="group__init.html#ga234bd34016f08288532791903b9884b5">More...</a><br /></td></tr>
<tr class="separator:ga234bd34016f08288532791903b9884b5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9a348df3e1df623c3d4c4f12c3ee3fe8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga9a348df3e1df623c3d4c4f12c3ee3fe8">initPureState</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structQureg.html">Qureg</a> pure)</td></tr>
<tr class="memdesc:ga9a348df3e1df623c3d4c4f12c3ee3fe8"><td class="mdescLeft"> </td><td class="mdescRight">Initialise a set of <img class="formulaInl" alt="$ N $" src="form_0.png"/> qubits, which can be a state vector or density matrix, to a given pure state. <a href="group__init.html#ga9a348df3e1df623c3d4c4f12c3ee3fe8">More...</a><br /></td></tr>
<tr class="separator:ga9a348df3e1df623c3d4c4f12c3ee3fe8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4589960486ec43dcd63bd985f1c4f398"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga4589960486ec43dcd63bd985f1c4f398">initStateFromAmps</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *reals, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *imags)</td></tr>
<tr class="memdesc:ga4589960486ec43dcd63bd985f1c4f398"><td class="mdescLeft"> </td><td class="mdescRight">Initialise qureg by specifying the complete statevector. <a href="group__init.html#ga4589960486ec43dcd63bd985f1c4f398">More...</a><br /></td></tr>
<tr class="separator:ga4589960486ec43dcd63bd985f1c4f398"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6456bc310db1989c5b17febdb23c2c93"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST_8c.html#a6456bc310db1989c5b17febdb23c2c93">initStateFromSingleFile</a> (<a class="el" href="structQureg.html">Qureg</a> *qureg, char filename[200], <a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:a6456bc310db1989c5b17febdb23c2c93"><td class="mdescLeft"> </td><td class="mdescRight">Initialises the wavefunction amplitudes according to those specified in a file. <a href="QuEST_8c.html#a6456bc310db1989c5b17febdb23c2c93">More...</a><br /></td></tr>
<tr class="separator:a6456bc310db1989c5b17febdb23c2c93"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7ba64480d4c3f7b1c3ea90cc0245f3e8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST_8c.html#a7ba64480d4c3f7b1c3ea90cc0245f3e8">initStateOfSingleQubit</a> (<a class="el" href="structQureg.html">Qureg</a> *qureg, int qubitId, int outcome)</td></tr>
<tr class="memdesc:a7ba64480d4c3f7b1c3ea90cc0245f3e8"><td class="mdescLeft"> </td><td class="mdescRight">Initialise the state vector of probability amplitudes such that one qubit is set to 'outcome' and all other qubits are in an equal superposition of zero and one. <a href="QuEST_8c.html#a7ba64480d4c3f7b1c3ea90cc0245f3e8">More...</a><br /></td></tr>
<tr class="separator:a7ba64480d4c3f7b1c3ea90cc0245f3e8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2f049055d4a51d0ea4d1a43b5234dedb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga2f049055d4a51d0ea4d1a43b5234dedb">initZeroState</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:ga2f049055d4a51d0ea4d1a43b5234dedb"><td class="mdescLeft"> </td><td class="mdescRight">Initialise a set of <img class="formulaInl" alt="$ N $" src="form_0.png"/> qubits to the classical zero state <img class="formulaInl" alt="$ {| 0 \rangle}^{\otimes N} $" src="form_1.png"/>. <a href="group__init.html#ga2f049055d4a51d0ea4d1a43b5234dedb">More...</a><br /></td></tr>
<tr class="separator:ga2f049055d4a51d0ea4d1a43b5234dedb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2a3794103125f1e3cfa103f8b1963656"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__normgate.html#ga2a3794103125f1e3cfa103f8b1963656">measure</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int measureQubit)</td></tr>
<tr class="memdesc:ga2a3794103125f1e3cfa103f8b1963656"><td class="mdescLeft"> </td><td class="mdescRight">Measures a single qubit, collapsing it randomly to 0 or 1. <a href="group__normgate.html#ga2a3794103125f1e3cfa103f8b1963656">More...</a><br /></td></tr>
<tr class="separator:ga2a3794103125f1e3cfa103f8b1963656"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae192ac0759e46c7b20a7182020155240"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__normgate.html#gae192ac0759e46c7b20a7182020155240">measureWithStats</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int measureQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *outcomeProb)</td></tr>
<tr class="memdesc:gae192ac0759e46c7b20a7182020155240"><td class="mdescLeft"> </td><td class="mdescRight">Measures a single qubit, collapsing it randomly to 0 or 1, and additionally gives the probability of that outcome. <a href="group__normgate.html#gae192ac0759e46c7b20a7182020155240">More...</a><br /></td></tr>
<tr class="separator:gae192ac0759e46c7b20a7182020155240"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3e39405eb2ce05ce4bb88c0f00dace45"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga3e39405eb2ce05ce4bb88c0f00dace45">mixDamping</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob)</td></tr>
<tr class="memdesc:ga3e39405eb2ce05ce4bb88c0f00dace45"><td class="mdescLeft"> </td><td class="mdescRight">Mixes a density matrix <code>qureg</code> to induce single-qubit amplitude damping (decay to 0 state). <a href="group__decoherence.html#ga3e39405eb2ce05ce4bb88c0f00dace45">More...</a><br /></td></tr>
<tr class="separator:ga3e39405eb2ce05ce4bb88c0f00dace45"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga97d563fa8f4bc51f720bbb653f5480b3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga97d563fa8f4bc51f720bbb653f5480b3">mixDensityMatrix</a> (<a class="el" href="structQureg.html">Qureg</a> combineQureg, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> otherProb, <a class="el" href="structQureg.html">Qureg</a> otherQureg)</td></tr>
<tr class="memdesc:ga97d563fa8f4bc51f720bbb653f5480b3"><td class="mdescLeft"> </td><td class="mdescRight">Modifies combineQureg to become (1-prob)combineProb + prob otherQureg. <a href="group__decoherence.html#ga97d563fa8f4bc51f720bbb653f5480b3">More...</a><br /></td></tr>
<tr class="separator:ga97d563fa8f4bc51f720bbb653f5480b3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga91edd6320f517810a58afd4b845edf12"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga91edd6320f517810a58afd4b845edf12">mixDephasing</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob)</td></tr>
<tr class="memdesc:ga91edd6320f517810a58afd4b845edf12"><td class="mdescLeft"> </td><td class="mdescRight">Mixes a density matrix <code>qureg</code> to induce single-qubit dephasing noise. <a href="group__decoherence.html#ga91edd6320f517810a58afd4b845edf12">More...</a><br /></td></tr>
<tr class="separator:ga91edd6320f517810a58afd4b845edf12"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga556fe013915bca4626367d98db948f5e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga556fe013915bca4626367d98db948f5e">mixDepolarising</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob)</td></tr>
<tr class="memdesc:ga556fe013915bca4626367d98db948f5e"><td class="mdescLeft"> </td><td class="mdescRight">Mixes a density matrix <code>qureg</code> to induce single-qubit homogeneous depolarising noise. <a href="group__decoherence.html#ga556fe013915bca4626367d98db948f5e">More...</a><br /></td></tr>
<tr class="separator:ga556fe013915bca4626367d98db948f5e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacb7faa9d8afb0f4270c866424fffbccd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#gacb7faa9d8afb0f4270c866424fffbccd">mixKrausMap</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int target, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> *ops, int numOps)</td></tr>
<tr class="memdesc:gacb7faa9d8afb0f4270c866424fffbccd"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general single-qubit Kraus map to a density matrix, as specified by at most four Kraus operators, <img class="formulaInl" alt="$K_i$" src="form_154.png"/> (<code>ops</code>). <a href="group__decoherence.html#gacb7faa9d8afb0f4270c866424fffbccd">More...</a><br /></td></tr>
<tr class="separator:gacb7faa9d8afb0f4270c866424fffbccd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga65b4c0944090fae78a37ba3b94811ace"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga65b4c0944090fae78a37ba3b94811ace">mixMultiQubitKrausMap</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *targets, int numTargets, <a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> *ops, int numOps)</td></tr>
<tr class="memdesc:ga65b4c0944090fae78a37ba3b94811ace"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general N-qubit Kraus map to a density matrix, as specified by at most (2N)^2 Kraus operators. <a href="group__decoherence.html#ga65b4c0944090fae78a37ba3b94811ace">More...</a><br /></td></tr>
<tr class="separator:ga65b4c0944090fae78a37ba3b94811ace"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9a77f84e1aa7d25d036b14d7d0cd8b61"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga9a77f84e1aa7d25d036b14d7d0cd8b61">mixPauli</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int qubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> probX, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> probY, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> probZ)</td></tr>
<tr class="memdesc:ga9a77f84e1aa7d25d036b14d7d0cd8b61"><td class="mdescLeft"> </td><td class="mdescRight">Mixes a density matrix <code>qureg</code> to induce general single-qubit Pauli noise. <a href="group__decoherence.html#ga9a77f84e1aa7d25d036b14d7d0cd8b61">More...</a><br /></td></tr>
<tr class="separator:ga9a77f84e1aa7d25d036b14d7d0cd8b61"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga14282bdb1dc65760ca9ecbe6305eb770"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga14282bdb1dc65760ca9ecbe6305eb770">mixTwoQubitDephasing</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int qubit1, int qubit2, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob)</td></tr>
<tr class="memdesc:ga14282bdb1dc65760ca9ecbe6305eb770"><td class="mdescLeft"> </td><td class="mdescRight">Mixes a density matrix <code>qureg</code> to induce two-qubit dephasing noise. <a href="group__decoherence.html#ga14282bdb1dc65760ca9ecbe6305eb770">More...</a><br /></td></tr>
<tr class="separator:ga14282bdb1dc65760ca9ecbe6305eb770"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacfc45a8fc86ee18f60866bbd0c874ed0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#gacfc45a8fc86ee18f60866bbd0c874ed0">mixTwoQubitDepolarising</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int qubit1, int qubit2, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> prob)</td></tr>
<tr class="memdesc:gacfc45a8fc86ee18f60866bbd0c874ed0"><td class="mdescLeft"> </td><td class="mdescRight">Mixes a density matrix <code>qureg</code> to induce two-qubit homogeneous depolarising noise. <a href="group__decoherence.html#gacfc45a8fc86ee18f60866bbd0c874ed0">More...</a><br /></td></tr>
<tr class="separator:gacfc45a8fc86ee18f60866bbd0c874ed0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2cf7dece0efea4207349f872cdcb7e81"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoherence.html#ga2cf7dece0efea4207349f872cdcb7e81">mixTwoQubitKrausMap</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int target1, int target2, <a class="el" href="structComplexMatrix4.html">ComplexMatrix4</a> *ops, int numOps)</td></tr>
<tr class="memdesc:ga2cf7dece0efea4207349f872cdcb7e81"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general two-qubit Kraus map to a density matrix, as specified by at most sixteen Kraus operators. <a href="group__decoherence.html#ga2cf7dece0efea4207349f872cdcb7e81">More...</a><br /></td></tr>
<tr class="separator:ga2cf7dece0efea4207349f872cdcb7e81"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadad71b27575fd7d9baf110ff780ee0a1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gadad71b27575fd7d9baf110ff780ee0a1">multiControlledMultiQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *ctrls, const int numCtrls, int *targs, const int numTargs, <a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> u)</td></tr>
<tr class="memdesc:gadad71b27575fd7d9baf110ff780ee0a1"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general multi-controlled multi-qubit unitary (including a global phase factor). <a href="group__unitary.html#gadad71b27575fd7d9baf110ff780ee0a1">More...</a><br /></td></tr>
<tr class="separator:gadad71b27575fd7d9baf110ff780ee0a1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad76781842af56821ed4e223bd776f057"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gad76781842af56821ed4e223bd776f057">multiControlledPhaseFlip</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *controlQubits, int numControlQubits)</td></tr>
<tr class="memdesc:gad76781842af56821ed4e223bd776f057"><td class="mdescLeft"> </td><td class="mdescRight">Apply the multiple-qubit controlled phase flip gate, also known as the multiple-qubit controlled pauliZ gate. <a href="group__unitary.html#gad76781842af56821ed4e223bd776f057">More...</a><br /></td></tr>
<tr class="separator:gad76781842af56821ed4e223bd776f057"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0832e39058d913ad47af44e97a854446"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga0832e39058d913ad47af44e97a854446">multiControlledPhaseShift</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *controlQubits, int numControlQubits, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga0832e39058d913ad47af44e97a854446"><td class="mdescLeft"> </td><td class="mdescRight">Introduce a phase factor <img class="formulaInl" alt="$ \exp(i \theta) $" src="form_19.png"/> on state <img class="formulaInl" alt="$ |1 \dots 1 \rangle $" src="form_23.png"/> of the passed qubits. <a href="group__unitary.html#ga0832e39058d913ad47af44e97a854446">More...</a><br /></td></tr>
<tr class="separator:ga0832e39058d913ad47af44e97a854446"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4183dc6cb8fd996fb790a711bf3e4871"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga4183dc6cb8fd996fb790a711bf3e4871">multiControlledTwoQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *controlQubits, const int numControlQubits, const int targetQubit1, const int targetQubit2, <a class="el" href="structComplexMatrix4.html">ComplexMatrix4</a> u)</td></tr>
<tr class="memdesc:ga4183dc6cb8fd996fb790a711bf3e4871"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general multi-controlled two-qubit unitary (including a global phase factor). <a href="group__unitary.html#ga4183dc6cb8fd996fb790a711bf3e4871">More...</a><br /></td></tr>
<tr class="separator:ga4183dc6cb8fd996fb790a711bf3e4871"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga18c44cb3b947147951590dea2f6b25f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga18c44cb3b947147951590dea2f6b25f7">multiControlledUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *controlQubits, const int numControlQubits, const int targetQubit, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> u)</td></tr>
<tr class="memdesc:ga18c44cb3b947147951590dea2f6b25f7"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general multiple-control single-target unitary, which can include a global phase factor. <a href="group__unitary.html#ga18c44cb3b947147951590dea2f6b25f7">More...</a><br /></td></tr>
<tr class="separator:ga18c44cb3b947147951590dea2f6b25f7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab5828a9f0518951451d9fec9370199ae"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gab5828a9f0518951451d9fec9370199ae">multiQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *targs, const int numTargs, <a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> u)</td></tr>
<tr class="memdesc:gab5828a9f0518951451d9fec9370199ae"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general multi-qubit unitary (including a global phase factor) with any number of target qubits. <a href="group__unitary.html#gab5828a9f0518951451d9fec9370199ae">More...</a><br /></td></tr>
<tr class="separator:gab5828a9f0518951451d9fec9370199ae"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga34aa4865c92f9aa5d898c91286c9eca5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga34aa4865c92f9aa5d898c91286c9eca5">multiRotatePauli</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *targetQubits, enum <a class="el" href="group__type.html#ga1c703cf89629e4e9c7023cd402d67028">pauliOpType</a> *targetPaulis, int numTargets, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga34aa4865c92f9aa5d898c91286c9eca5"><td class="mdescLeft"> </td><td class="mdescRight">Apply a multi-qubit multi-Pauli rotation on a selected number of qubits. <a href="group__unitary.html#ga34aa4865c92f9aa5d898c91286c9eca5">More...</a><br /></td></tr>
<tr class="separator:ga34aa4865c92f9aa5d898c91286c9eca5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3250d0d95b5d755cad542a6a2372b894"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga3250d0d95b5d755cad542a6a2372b894">multiRotateZ</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *qubits, int numQubits, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga3250d0d95b5d755cad542a6a2372b894"><td class="mdescLeft"> </td><td class="mdescRight">Apply a multi-qubit Z rotation on a selected number of qubits. <a href="group__unitary.html#ga3250d0d95b5d755cad542a6a2372b894">More...</a><br /></td></tr>
<tr class="separator:ga3250d0d95b5d755cad542a6a2372b894"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga09a08f98955e75d942fdc88d4dca3e33"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga09a08f98955e75d942fdc88d4dca3e33">multiStateControlledUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int *controlQubits, int *controlState, const int numControlQubits, const int targetQubit, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> u)</td></tr>
<tr class="memdesc:ga09a08f98955e75d942fdc88d4dca3e33"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general multiple-control, conditioned on a specific bit sequence, single-target unitary, which can include a global phase factor. <a href="group__unitary.html#ga09a08f98955e75d942fdc88d4dca3e33">More...</a><br /></td></tr>
<tr class="separator:ga09a08f98955e75d942fdc88d4dca3e33"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga84cd118c44b9d3866f56b865dbb9bd7d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga84cd118c44b9d3866f56b865dbb9bd7d">pauliX</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit)</td></tr>
<tr class="memdesc:ga84cd118c44b9d3866f56b865dbb9bd7d"><td class="mdescLeft"> </td><td class="mdescRight">Apply the single-qubit Pauli-X (also known as the X, sigma-X, NOT or bit-flip) gate. <a href="group__unitary.html#ga84cd118c44b9d3866f56b865dbb9bd7d">More...</a><br /></td></tr>
<tr class="separator:ga84cd118c44b9d3866f56b865dbb9bd7d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa064fcf40fd02b21f98a9a83dc6cea13"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gaa064fcf40fd02b21f98a9a83dc6cea13">pauliY</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit)</td></tr>
<tr class="memdesc:gaa064fcf40fd02b21f98a9a83dc6cea13"><td class="mdescLeft"> </td><td class="mdescRight">Apply the single-qubit Pauli-Y (also known as the Y or sigma-Y) gate. <a href="group__unitary.html#gaa064fcf40fd02b21f98a9a83dc6cea13">More...</a><br /></td></tr>
<tr class="separator:gaa064fcf40fd02b21f98a9a83dc6cea13"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadf988ee16f38ddaf404552c41ea2b745"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gadf988ee16f38ddaf404552c41ea2b745">pauliZ</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit)</td></tr>
<tr class="memdesc:gadf988ee16f38ddaf404552c41ea2b745"><td class="mdescLeft"> </td><td class="mdescRight">Apply the single-qubit Pauli-Z (also known as the Z, sigma-Z or phase-flip) gate. <a href="group__unitary.html#gadf988ee16f38ddaf404552c41ea2b745">More...</a><br /></td></tr>
<tr class="separator:gadf988ee16f38ddaf404552c41ea2b745"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga05c7b8c9491410215e277ea83c0dfef8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga05c7b8c9491410215e277ea83c0dfef8">phaseShift</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga05c7b8c9491410215e277ea83c0dfef8"><td class="mdescLeft"> </td><td class="mdescRight">Shift the phase between <img class="formulaInl" alt="$ |0\rangle $" src="form_14.png"/> and <img class="formulaInl" alt="$ |1\rangle $" src="form_15.png"/> of a single qubit by a given angle. <a href="group__unitary.html#ga05c7b8c9491410215e277ea83c0dfef8">More...</a><br /></td></tr>
<tr class="separator:ga05c7b8c9491410215e277ea83c0dfef8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacf139d0a54b1f9e5c2f2feff742b8c76"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__qasm.html#gacf139d0a54b1f9e5c2f2feff742b8c76">printRecordedQASM</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:gacf139d0a54b1f9e5c2f2feff742b8c76"><td class="mdescLeft"> </td><td class="mdescRight">Print recorded QASM to stdout. <a href="group__qasm.html#gacf139d0a54b1f9e5c2f2feff742b8c76">More...</a><br /></td></tr>
<tr class="separator:gacf139d0a54b1f9e5c2f2feff742b8c76"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa33ed720560d051eb4126b4a534bc4c6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#gaa33ed720560d051eb4126b4a534bc4c6">reportStateToScreen</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structQuESTEnv.html">QuESTEnv</a> env, int reportRank)</td></tr>
<tr class="memdesc:gaa33ed720560d051eb4126b4a534bc4c6"><td class="mdescLeft"> </td><td class="mdescRight">Print the current state vector of probability amplitudes for a set of qubits to standard out. <a href="group__debug.html#gaa33ed720560d051eb4126b4a534bc4c6">More...</a><br /></td></tr>
<tr class="separator:gaa33ed720560d051eb4126b4a534bc4c6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac5c485fe330636966effc0642ba2bd99"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#gac5c485fe330636966effc0642ba2bd99">rotateAroundAxis</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int rotQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle, <a class="el" href="structVector.html">Vector</a> axis)</td></tr>
<tr class="memdesc:gac5c485fe330636966effc0642ba2bd99"><td class="mdescLeft"> </td><td class="mdescRight">Rotate a single qubit by a given angle around a given <a class="el" href="structVector.html">Vector</a> on the Bloch-sphere. <a href="group__unitary.html#gac5c485fe330636966effc0642ba2bd99">More...</a><br /></td></tr>
<tr class="separator:gac5c485fe330636966effc0642ba2bd99"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5fb1514d67ab43917dc64a357e711425"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga5fb1514d67ab43917dc64a357e711425">rotateX</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga5fb1514d67ab43917dc64a357e711425"><td class="mdescLeft"> </td><td class="mdescRight">Rotate a single qubit by a given angle around the X-axis of the Bloch-sphere. <a href="group__unitary.html#ga5fb1514d67ab43917dc64a357e711425">More...</a><br /></td></tr>
<tr class="separator:ga5fb1514d67ab43917dc64a357e711425"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga680f90d42e56950f40d11d695596a363"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga680f90d42e56950f40d11d695596a363">rotateY</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga680f90d42e56950f40d11d695596a363"><td class="mdescLeft"> </td><td class="mdescRight">Rotate a single qubit by a given angle around the Y-axis of the Bloch-sphere. <a href="group__unitary.html#ga680f90d42e56950f40d11d695596a363">More...</a><br /></td></tr>
<tr class="separator:ga680f90d42e56950f40d11d695596a363"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga30675e80b054d5adf556ae00f98377d9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga30675e80b054d5adf556ae00f98377d9">rotateZ</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> angle)</td></tr>
<tr class="memdesc:ga30675e80b054d5adf556ae00f98377d9"><td class="mdescLeft"> </td><td class="mdescRight">Rotate a single qubit by a given angle around the Z-axis of the Bloch-sphere (also known as a phase shift gate). <a href="group__unitary.html#ga30675e80b054d5adf556ae00f98377d9">More...</a><br /></td></tr>
<tr class="separator:ga30675e80b054d5adf556ae00f98377d9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabc0c64f8adf307d2a44184dc0f8ca66e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gabc0c64f8adf307d2a44184dc0f8ca66e">setAmps</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int startInd, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *reals, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *imags, long long int numAmps)</td></tr>
<tr class="memdesc:gabc0c64f8adf307d2a44184dc0f8ca66e"><td class="mdescLeft"> </td><td class="mdescRight">Overwrites a subset of the amplitudes in <code>qureg</code>, with those passed in <code>reals</code> and <code>imags</code>. <a href="group__init.html#gabc0c64f8adf307d2a44184dc0f8ca66e">More...</a><br /></td></tr>
<tr class="separator:gabc0c64f8adf307d2a44184dc0f8ca66e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae85a2c07d2f1ff2265c4bf22e17653eb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST_8c.html#ae85a2c07d2f1ff2265c4bf22e17653eb">setDensityAmps</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *reals, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *imags)</td></tr>
<tr class="memdesc:ae85a2c07d2f1ff2265c4bf22e17653eb"><td class="mdescLeft"> </td><td class="mdescRight">Set elements in the underlying state vector represenation of a density matrix. <a href="QuEST_8c.html#ae85a2c07d2f1ff2265c4bf22e17653eb">More...</a><br /></td></tr>
<tr class="separator:ae85a2c07d2f1ff2265c4bf22e17653eb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5d0f3f71ea38d3c44597f8c2c2f014d4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga5d0f3f71ea38d3c44597f8c2c2f014d4">setWeightedQureg</a> (<a class="el" href="structComplex.html">Complex</a> fac1, <a class="el" href="structQureg.html">Qureg</a> qureg1, <a class="el" href="structComplex.html">Complex</a> fac2, <a class="el" href="structQureg.html">Qureg</a> qureg2, <a class="el" href="structComplex.html">Complex</a> facOut, <a class="el" href="structQureg.html">Qureg</a> out)</td></tr>
<tr class="memdesc:ga5d0f3f71ea38d3c44597f8c2c2f014d4"><td class="mdescLeft"> </td><td class="mdescRight">Modifies qureg <code>out</code> to the result of (<code>facOut</code> <code>out</code> + <code>fac1</code> <code>qureg1</code> + <code>fac2</code> <code>qureg2</code>), imposing no constraints on normalisation. <a href="group__init.html#ga5d0f3f71ea38d3c44597f8c2c2f014d4">More...</a><br /></td></tr>
<tr class="separator:ga5d0f3f71ea38d3c44597f8c2c2f014d4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga67a83cdbd8d6ae77f91aa011cf09907a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga67a83cdbd8d6ae77f91aa011cf09907a">sGate</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit)</td></tr>
<tr class="memdesc:ga67a83cdbd8d6ae77f91aa011cf09907a"><td class="mdescLeft"> </td><td class="mdescRight">Apply the single-qubit S gate. <a href="group__unitary.html#ga67a83cdbd8d6ae77f91aa011cf09907a">More...</a><br /></td></tr>
<tr class="separator:ga67a83cdbd8d6ae77f91aa011cf09907a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga75d5e65f87c68403602a669b9c6d52b0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga75d5e65f87c68403602a669b9c6d52b0">sqrtSwapGate</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int qb1, int qb2)</td></tr>
<tr class="memdesc:ga75d5e65f87c68403602a669b9c6d52b0"><td class="mdescLeft"> </td><td class="mdescRight">Performs a sqrt SWAP gate between <code>qubit1</code> and <code>qubit2</code>. <a href="group__unitary.html#ga75d5e65f87c68403602a669b9c6d52b0">More...</a><br /></td></tr>
<tr class="separator:ga75d5e65f87c68403602a669b9c6d52b0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga65bf1906298ca6355e2942f4923d77b6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__qasm.html#ga65bf1906298ca6355e2942f4923d77b6">startRecordingQASM</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:ga65bf1906298ca6355e2942f4923d77b6"><td class="mdescLeft"> </td><td class="mdescRight">Enable QASM recording. <a href="group__qasm.html#ga65bf1906298ca6355e2942f4923d77b6">More...</a><br /></td></tr>
<tr class="separator:ga65bf1906298ca6355e2942f4923d77b6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabdaa339967f0955176a4967f01364182"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__qasm.html#gabdaa339967f0955176a4967f01364182">stopRecordingQASM</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="memdesc:gabdaa339967f0955176a4967f01364182"><td class="mdescLeft"> </td><td class="mdescRight">Disable QASM recording. <a href="group__qasm.html#gabdaa339967f0955176a4967f01364182">More...</a><br /></td></tr>
<tr class="separator:gabdaa339967f0955176a4967f01364182"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga820fd139c035136819e371308c206e36"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga820fd139c035136819e371308c206e36">swapGate</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int qb1, int qb2)</td></tr>
<tr class="memdesc:ga820fd139c035136819e371308c206e36"><td class="mdescLeft"> </td><td class="mdescRight">Performs a SWAP gate between <code>qubit1</code> and <code>qubit2</code>. <a href="group__unitary.html#ga820fd139c035136819e371308c206e36">More...</a><br /></td></tr>
<tr class="separator:ga820fd139c035136819e371308c206e36"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3c500a891a522fd3045c379489f0252a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga3c500a891a522fd3045c379489f0252a">tGate</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit)</td></tr>
<tr class="memdesc:ga3c500a891a522fd3045c379489f0252a"><td class="mdescLeft"> </td><td class="mdescRight">Apply the single-qubit T gate. <a href="group__unitary.html#ga3c500a891a522fd3045c379489f0252a">More...</a><br /></td></tr>
<tr class="separator:ga3c500a891a522fd3045c379489f0252a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga81cf22c68db66bf9b4593a5d1b3f528c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga81cf22c68db66bf9b4593a5d1b3f528c">twoQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit1, const int targetQubit2, <a class="el" href="structComplexMatrix4.html">ComplexMatrix4</a> u)</td></tr>
<tr class="memdesc:ga81cf22c68db66bf9b4593a5d1b3f528c"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general two-qubit unitary (including a global phase factor). <a href="group__unitary.html#ga81cf22c68db66bf9b4593a5d1b3f528c">More...</a><br /></td></tr>
<tr class="separator:ga81cf22c68db66bf9b4593a5d1b3f528c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5a117f81298e8ed894d964198e737757"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__unitary.html#ga5a117f81298e8ed894d964198e737757">unitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, const int targetQubit, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> u)</td></tr>
<tr class="memdesc:ga5a117f81298e8ed894d964198e737757"><td class="mdescLeft"> </td><td class="mdescRight">Apply a general single-qubit unitary (including a global phase factor). <a href="group__unitary.html#ga5a117f81298e8ed894d964198e737757">More...</a><br /></td></tr>
<tr class="separator:ga5a117f81298e8ed894d964198e737757"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0054955857ce83b88e127d731796c23d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__qasm.html#ga0054955857ce83b88e127d731796c23d">writeRecordedQASMToFile</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, char *filename)</td></tr>
<tr class="memdesc:ga0054955857ce83b88e127d731796c23d"><td class="mdescLeft"> </td><td class="mdescRight">Writes recorded QASM to a file, throwing an error if inaccessible. <a href="group__qasm.html#ga0054955857ce83b88e127d731796c23d">More...</a><br /></td></tr>
<tr class="separator:ga0054955857ce83b88e127d731796c23d"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implements the <a class="el" href="QuEST_8h.html">QuEST.h</a> API (and some debugging functions) in a hardware-agnostic way, for both pure and mixed states. These functions mostly wrap hardware-specific functions, and should never call eachother.</p>
<p>Density matrices rho of N qubits are flattened to appear as state-vectors |s> of 2N qubits. Operations U rho U^dag are implemented as U^* U |s> and make use of the pure state backend, and often don't need to explicitly compute U^*.</p>
<dl class="section author"><dt>Author</dt><dd>Tyson Jones (architecture, validation, qasm, density matrices) </dd>
<dd>
Ania Brown (<a class="el" href="QuEST_8c.html#ae85a2c07d2f1ff2265c4bf22e17653eb" title="Set elements in the underlying state vector represenation of a density matrix.">setDensityAmps()</a>) </dd>
<dd>
Balint Koczor (Kraus maps, <a class="el" href="group__calc.html#ga658b3a5cab5e73a17a7fd76a83583a22" title="Computes the Hilbert-Schmidt scalar product (which is equivalent to the Frobenius inner product of ma...">calcDensityInnerProduct()</a>) </dd>
<dd>
Nicolas Vogt of HQS (one-qubit damping) </dd></dl>
<p class="definition">Definition in file <a class="el" href="QuEST_8c_source.html">QuEST.c</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="acb5e66108a5c6cf36642148335c0d9ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb5e66108a5c6cf36642148335c0d9ab">◆ </a></span>compareStates()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int compareStates </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>mq1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>mq2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td>
<td class="paramname"><em>precision</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return whether two given wavefunctions are equivalent within a given precision Global phase included in equivalence check. </p>
<p>For debugging purposes. </p>
<p class="definition">Definition at line <a class="el" href="QuEST_8c_source.html#l01052">1052</a> of file <a class="el" href="QuEST_8c_source.html">QuEST.c</a>.</p>
<div class="fragment"><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  {</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><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01643">statevec_compareStates()</a>, and <a class="el" href="QuEST__validation_8c_source.html#l00434">validateMatchingQuregDims()</a>.</p>
</div>
</div>
<a id="acd34ae4aa7e7f466316cc104532c85c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd34ae4aa7e7f466316cc104532c85c1">◆ </a></span>getQuEST_PREC()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int getQuEST_PREC </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST_8c_source.html#l01077">1077</a> of file <a class="el" href="QuEST_8c_source.html">QuEST.c</a>.</p>
<div class="fragment"><div class="line"><a name="l01077"></a><span class="lineno"> 1077</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><!-- fragment -->
<p class="reference">References <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>.</p>
</div>
</div>
<a id="a6456bc310db1989c5b17febdb23c2c93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6456bc310db1989c5b17febdb23c2c93">◆ </a></span>initStateFromSingleFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void initStateFromSingleFile </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> * </td>
<td class="paramname"><em>qureg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char </td>
<td class="paramname"><em>filename</em>[200], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structQuESTEnv.html">QuESTEnv</a> </td>
<td class="paramname"><em>env</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialises the wavefunction amplitudes according to those specified in a file. </p>
<p>For debugging purpsoses </p>
<p class="definition">Definition at line <a class="el" href="QuEST_8c_source.html#l01061">1061</a> of file <a class="el" href="QuEST_8c_source.html">QuEST.c</a>.</p>
<div class="fragment"><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  {</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><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01593">statevec_initStateFromSingleFile()</a>, and <a class="el" href="QuEST__validation_8c_source.html#l00446">validateFileOpened()</a>.</p>
</div>
</div>
<a id="a7ba64480d4c3f7b1c3ea90cc0245f3e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ba64480d4c3f7b1c3ea90cc0245f3e8">◆ </a></span>initStateOfSingleQubit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void initStateOfSingleQubit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> * </td>
<td class="paramname"><em>qureg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>qubitId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>outcome</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialise the state vector of probability amplitudes such that one qubit is set to 'outcome' and all other qubits are in an equal superposition of zero and one. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">qureg</td><td>object representing the set of qubits to be initialised </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">qubitId</td><td>id of qubit to set to state 'outcome' </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">outcome</td><td>value of qubit 'qubitId' to set </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="QuEST_8c_source.html#l01066">1066</a> of file <a class="el" href="QuEST_8c_source.html">QuEST.c</a>.</p>
<div class="fragment"><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  {</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><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01513">statevec_initStateOfSingleQubit()</a>, <a class="el" href="QuEST__validation_8c_source.html#l00426">validateOutcome()</a>, <a class="el" href="QuEST__validation_8c_source.html#l00418">validateStateVecQureg()</a>, and <a class="el" href="QuEST__validation_8c_source.html#l00307">validateTarget()</a>.</p>
</div>
</div>
<a id="ae85a2c07d2f1ff2265c4bf22e17653eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae85a2c07d2f1ff2265c4bf22e17653eb">◆ </a></span>setDensityAmps()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void setDensityAmps </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>qureg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> * </td>
<td class="paramname"><em>reals</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> * </td>
<td class="paramname"><em>imags</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set elements in the underlying state vector represenation of a density matrix. </p>
<p>Not exposed in the public API as this requires an understanding of how the state vector is used to represent a density matrix. Currently can only be used to set all amps. </p>
<p class="definition">Definition at line <a class="el" href="QuEST_8c_source.html#l00788">788</a> of file <a class="el" href="QuEST_8c_source.html">QuEST.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  {</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><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST_8h_source.html#l00172">Qureg::numAmpsTotal</a>, <a class="el" href="QuEST__qasm_8c_source.html#l00120">qasm_recordComment()</a>, and <a class="el" href="QuEST__cpu_8c_source.html#l01236">statevec_setAmps()</a>.</p>
</div>
</div>
</div><!-- contents -->
<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__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__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="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__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__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="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_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="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__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__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>
<!-- 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>