<!-- 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_cpu_local.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.4.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_e145b6391efe0b6e575fd5bb5f76dbf8.html">QuEST</a></li><li class="navelem"><a class="el" href="dir_aaf4e0c86438000dc030ca371e863336.html">QuEST</a></li><li class="navelem"><a class="el" href="dir_288db1ec25fc0ec29a6dc915511dd336.html">src</a></li><li class="navelem"><a class="el" href="dir_9ac8631f294bc067d7e4c007a43fb043.html">CPU</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_cpu_local.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__internal_8h_source.html">QuEST_internal.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="mt19937ar_8h_source.html">mt19937ar.h</a>"</code><br />
<code>#include "<a class="el" href="QuEST__cpu__internal_8h_source.html">QuEST_cpu_internal.h</a>"</code><br />
<code>#include <stdlib.h></code><br />
<code>#include <stdio.h></code><br />
<code>#include <math.h></code><br />
<code>#include <time.h></code><br />
<code>#include <sys/types.h></code><br />
</div>
<p><a href="QuEST__cpu__local_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:ga8ba2c3388dd64d9348c3b091852d36d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structQuESTEnv.html">QuESTEnv</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#ga8ba2c3388dd64d9348c3b091852d36d4">createQuESTEnv</a> (void)</td></tr>
<tr class="memdesc:ga8ba2c3388dd64d9348c3b091852d36d4"><td class="mdescLeft"> </td><td class="mdescRight">Create the QuEST execution environment. <a href="group__type.html#ga8ba2c3388dd64d9348c3b091852d36d4">More...</a><br /></td></tr>
<tr class="separator:ga8ba2c3388dd64d9348c3b091852d36d4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aedd7ecccf2f09dd2f1c5d191950b51e6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#aedd7ecccf2f09dd2f1c5d191950b51e6">densmatr_applyDiagonalOp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structDiagonalOp.html">DiagonalOp</a> op)</td></tr>
<tr class="separator:aedd7ecccf2f09dd2f1c5d191950b51e6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a70e3b0a2297c186d5c779af31459b4ca"><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="QuEST__cpu__local_8c.html#a70e3b0a2297c186d5c779af31459b4ca">densmatr_calcExpecDiagonalOp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structDiagonalOp.html">DiagonalOp</a> op)</td></tr>
<tr class="separator:a70e3b0a2297c186d5c779af31459b4ca"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa6c3f86010ad398f42b0577ea3bb5bcf"><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="QuEST__cpu__local_8c.html#aa6c3f86010ad398f42b0577ea3bb5bcf">densmatr_calcFidelity</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structQureg.html">Qureg</a> pureState)</td></tr>
<tr class="separator:aa6c3f86010ad398f42b0577ea3bb5bcf"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8c9da88f734b0862f4cce7d819e6d3b5"><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="QuEST__cpu__local_8c.html#a8c9da88f734b0862f4cce7d819e6d3b5">densmatr_calcHilbertSchmidtDistance</a> (<a class="el" href="structQureg.html">Qureg</a> a, <a class="el" href="structQureg.html">Qureg</a> b)</td></tr>
<tr class="separator:a8c9da88f734b0862f4cce7d819e6d3b5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6ff3dc624b5fafe8edae4fe327c255a0"><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="QuEST__cpu__local_8c.html#a6ff3dc624b5fafe8edae4fe327c255a0">densmatr_calcInnerProduct</a> (<a class="el" href="structQureg.html">Qureg</a> a, <a class="el" href="structQureg.html">Qureg</a> b)</td></tr>
<tr class="separator:a6ff3dc624b5fafe8edae4fe327c255a0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2c664d8abca0a6f87c2bf4fe75fbff90"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a2c664d8abca0a6f87c2bf4fe75fbff90">densmatr_calcProbOfAllOutcomes</a> (<a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *retProbs, <a class="el" href="structQureg.html">Qureg</a> qureg, int *qubits, int numQubits)</td></tr>
<tr class="separator:a2c664d8abca0a6f87c2bf4fe75fbff90"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae37b3eff5d3affbc1edfe216cabc1c53"><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="QuEST__cpu__local_8c.html#ae37b3eff5d3affbc1edfe216cabc1c53">densmatr_calcProbOfOutcome</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int measureQubit, int outcome)</td></tr>
<tr class="separator:ae37b3eff5d3affbc1edfe216cabc1c53"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae45eefa65f4ecd37bab84fade7cf7f1f"><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="QuEST__cpu__local_8c.html#ae45eefa65f4ecd37bab84fade7cf7f1f">densmatr_calcPurity</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="separator:ae45eefa65f4ecd37bab84fade7cf7f1f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6153547f245c05874161a105e9a2f02c"><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="QuEST__cpu__local_8c.html#a6153547f245c05874161a105e9a2f02c">densmatr_calcTotalProb</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="separator:a6153547f245c05874161a105e9a2f02c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a561b599a69a5dab03e55b7cbe259892d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a561b599a69a5dab03e55b7cbe259892d">densmatr_initPureState</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structQureg.html">Qureg</a> pureState)</td></tr>
<tr class="separator:a561b599a69a5dab03e55b7cbe259892d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac501fe7b9d331be48359ce1546348f97"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#ac501fe7b9d331be48359ce1546348f97">densmatr_mixDamping</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> damping)</td></tr>
<tr class="separator:ac501fe7b9d331be48359ce1546348f97"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a398b60c4cb4fa2cf2ffc126de6c08da0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a398b60c4cb4fa2cf2ffc126de6c08da0">densmatr_mixDepolarising</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> depolLevel)</td></tr>
<tr class="separator:a398b60c4cb4fa2cf2ffc126de6c08da0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a43afa97e300b87bce7f3eb1213eb05f6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a43afa97e300b87bce7f3eb1213eb05f6">densmatr_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> depolLevel)</td></tr>
<tr class="separator:a43afa97e300b87bce7f3eb1213eb05f6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaeff624226629d7063a8a776958a4f991"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__type.html#gaeff624226629d7063a8a776958a4f991">destroyQuESTEnv</a> (<a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:gaeff624226629d7063a8a776958a4f991"><td class="mdescLeft"> </td><td class="mdescRight">Destroy the QuEST environment. <a href="group__type.html#gaeff624226629d7063a8a776958a4f991">More...</a><br /></td></tr>
<tr class="separator:gaeff624226629d7063a8a776958a4f991"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadc5c01d8ea32e28c188db52be26116b6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#gadc5c01d8ea32e28c188db52be26116b6">getEnvironmentString</a> (<a class="el" href="structQuESTEnv.html">QuESTEnv</a> env, char str[200])</td></tr>
<tr class="memdesc:gadc5c01d8ea32e28c188db52be26116b6"><td class="mdescLeft"> </td><td class="mdescRight">Sets <code>str</code> to a string containing information about the runtime environment, including whether simulation is using CUDA (for GPU), OpenMP (for multithreading) and/or MPI (for distribution). <a href="group__debug.html#gadc5c01d8ea32e28c188db52be26116b6">More...</a><br /></td></tr>
<tr class="separator:gadc5c01d8ea32e28c188db52be26116b6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf8a14ae79c3fb2c0b5f6255cc37bebf9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#gaf8a14ae79c3fb2c0b5f6255cc37bebf9">reportQuESTEnv</a> (<a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:gaf8a14ae79c3fb2c0b5f6255cc37bebf9"><td class="mdescLeft"> </td><td class="mdescRight">Report information about the QuEST environment. <a href="group__debug.html#gaf8a14ae79c3fb2c0b5f6255cc37bebf9">More...</a><br /></td></tr>
<tr class="separator:gaf8a14ae79c3fb2c0b5f6255cc37bebf9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga555451c697ea4a9d27389155f68fdabc"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#ga555451c697ea4a9d27389155f68fdabc">seedQuEST</a> (<a class="el" href="structQuESTEnv.html">QuESTEnv</a> *env, unsigned long int *seedArray, int numSeeds)</td></tr>
<tr class="memdesc:ga555451c697ea4a9d27389155f68fdabc"><td class="mdescLeft"> </td><td class="mdescRight">Seeds the random number generator with a custom array of key(s), overriding the default keys. <a href="group__debug.html#ga555451c697ea4a9d27389155f68fdabc">More...</a><br /></td></tr>
<tr class="separator:ga555451c697ea4a9d27389155f68fdabc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0fb948ddab4ca210e523aa3c52639df4"><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="QuEST__cpu__local_8c.html#a0fb948ddab4ca210e523aa3c52639df4">statevec_calcExpecDiagonalOp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, <a class="el" href="structDiagonalOp.html">DiagonalOp</a> op)</td></tr>
<tr class="separator:a0fb948ddab4ca210e523aa3c52639df4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7ebd3198a198f4cd20840f64fd8b84d0"><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="QuEST__cpu__local_8c.html#a7ebd3198a198f4cd20840f64fd8b84d0">statevec_calcInnerProduct</a> (<a class="el" href="structQureg.html">Qureg</a> bra, <a class="el" href="structQureg.html">Qureg</a> ket)</td></tr>
<tr class="separator:a7ebd3198a198f4cd20840f64fd8b84d0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a78cf98ea535790bc46069b60bae342c7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a78cf98ea535790bc46069b60bae342c7">statevec_calcProbOfAllOutcomes</a> (<a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> *retProbs, <a class="el" href="structQureg.html">Qureg</a> qureg, int *qubits, int numQubits)</td></tr>
<tr class="separator:a78cf98ea535790bc46069b60bae342c7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a63cb88a5f4eb12fef087435b8db3f8eb"><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="QuEST__cpu__local_8c.html#a63cb88a5f4eb12fef087435b8db3f8eb">statevec_calcProbOfOutcome</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int measureQubit, int outcome)</td></tr>
<tr class="separator:a63cb88a5f4eb12fef087435b8db3f8eb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad65ad1b5ea6f30b0c6b4ffda96e1a8e6"><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="QuEST__cpu__local_8c.html#ad65ad1b5ea6f30b0c6b4ffda96e1a8e6">statevec_calcTotalProb</a> (<a class="el" href="structQureg.html">Qureg</a> qureg)</td></tr>
<tr class="separator:ad65ad1b5ea6f30b0c6b4ffda96e1a8e6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8c13e3ef40a58a27a4c04ad69bde14bc"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a8c13e3ef40a58a27a4c04ad69bde14bc">statevec_collapseToKnownProbOutcome</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int measureQubit, int outcome, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> stateProb)</td></tr>
<tr class="separator:a8c13e3ef40a58a27a4c04ad69bde14bc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aec63559e8b9ab0e17efe18d64d2ceca6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#aec63559e8b9ab0e17efe18d64d2ceca6">statevec_compactUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit, <a class="el" href="structComplex.html">Complex</a> alpha, <a class="el" href="structComplex.html">Complex</a> beta)</td></tr>
<tr class="separator:aec63559e8b9ab0e17efe18d64d2ceca6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1275d604674224d87a173fb5bac78835"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a1275d604674224d87a173fb5bac78835">statevec_controlledCompactUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int controlQubit, int targetQubit, <a class="el" href="structComplex.html">Complex</a> alpha, <a class="el" href="structComplex.html">Complex</a> beta)</td></tr>
<tr class="separator:a1275d604674224d87a173fb5bac78835"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:abb2eab4af99adcc59be24f4c91c6f6ad"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#abb2eab4af99adcc59be24f4c91c6f6ad">statevec_controlledNot</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int controlQubit, int targetQubit)</td></tr>
<tr class="separator:abb2eab4af99adcc59be24f4c91c6f6ad"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a4e19ef93d01d7acea32ca646d623aedd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a4e19ef93d01d7acea32ca646d623aedd">statevec_controlledPauliY</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int controlQubit, int targetQubit)</td></tr>
<tr class="separator:a4e19ef93d01d7acea32ca646d623aedd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a4a2fa262d3f0dba372797b9bd35d9fa5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a4a2fa262d3f0dba372797b9bd35d9fa5">statevec_controlledPauliYConj</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int controlQubit, int targetQubit)</td></tr>
<tr class="separator:a4a2fa262d3f0dba372797b9bd35d9fa5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:add9ca9956cdd81ed5d0b0f66168c04a3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#add9ca9956cdd81ed5d0b0f66168c04a3">statevec_controlledUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int controlQubit, int targetQubit, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> u)</td></tr>
<tr class="separator:add9ca9956cdd81ed5d0b0f66168c04a3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:abd509244d57657e148e4084c5ab5d28f"><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="QuEST__cpu__local_8c.html#abd509244d57657e148e4084c5ab5d28f">statevec_getImagAmp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int index)</td></tr>
<tr class="separator:abd509244d57657e148e4084c5ab5d28f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:abc9a9ef4344c7faaaf28ac25c76649b9"><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="QuEST__cpu__local_8c.html#abc9a9ef4344c7faaaf28ac25c76649b9">statevec_getRealAmp</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int index)</td></tr>
<tr class="separator:abc9a9ef4344c7faaaf28ac25c76649b9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af3fc7bd149c70f083b149050242cd55e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#af3fc7bd149c70f083b149050242cd55e">statevec_hadamard</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit)</td></tr>
<tr class="separator:af3fc7bd149c70f083b149050242cd55e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a13ecc24b355a5213d745651cde56bd71"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a13ecc24b355a5213d745651cde56bd71">statevec_multiControlledMultiQubitNot</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int ctrlMask, int targMask)</td></tr>
<tr class="separator:a13ecc24b355a5213d745651cde56bd71"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a0acfe30083d0bc2a84da196378a36122"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a0acfe30083d0bc2a84da196378a36122">statevec_multiControlledMultiQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int ctrlMask, int *targs, int numTargs, <a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> u)</td></tr>
<tr class="memdesc:a0acfe30083d0bc2a84da196378a36122"><td class="mdescLeft"> </td><td class="mdescRight">This calls swapQubitAmps only when it would involve a distributed communication; if the qubit chunks already fit in the node, it operates the unitary direct. <a href="QuEST__cpu__local_8c.html#a0acfe30083d0bc2a84da196378a36122">More...</a><br /></td></tr>
<tr class="separator:a0acfe30083d0bc2a84da196378a36122"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:affbd18d7c2ed8d5bd5edb67116501145"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#affbd18d7c2ed8d5bd5edb67116501145">statevec_multiControlledTwoQubitUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int ctrlMask, int q1, int q2, <a class="el" href="structComplexMatrix4.html">ComplexMatrix4</a> u)</td></tr>
<tr class="memdesc:affbd18d7c2ed8d5bd5edb67116501145"><td class="mdescLeft"> </td><td class="mdescRight">This calls swapQubitAmps only when it would involve a distributed communication; if the qubit chunks already fit in the node, it operates the unitary direct. <a href="QuEST__cpu__local_8c.html#affbd18d7c2ed8d5bd5edb67116501145">More...</a><br /></td></tr>
<tr class="separator:affbd18d7c2ed8d5bd5edb67116501145"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a600bda10463e2078ce746ec28f2d39c9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a600bda10463e2078ce746ec28f2d39c9">statevec_multiControlledUnitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, long long int ctrlQubitsMask, long long int ctrlFlipMask, int targetQubit, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> u)</td></tr>
<tr class="separator:a600bda10463e2078ce746ec28f2d39c9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1c82b5e914a8a39c5c7b782dbc16fa76"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a1c82b5e914a8a39c5c7b782dbc16fa76">statevec_pauliX</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit)</td></tr>
<tr class="separator:a1c82b5e914a8a39c5c7b782dbc16fa76"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af1cca787f3b0e0c91ffb2495f9ad8d5a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#af1cca787f3b0e0c91ffb2495f9ad8d5a">statevec_pauliY</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit)</td></tr>
<tr class="separator:af1cca787f3b0e0c91ffb2495f9ad8d5a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a81fbd2eccd0d0e5a3cece4df2f96cb92"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#a81fbd2eccd0d0e5a3cece4df2f96cb92">statevec_pauliYConj</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit)</td></tr>
<tr class="separator:a81fbd2eccd0d0e5a3cece4df2f96cb92"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab7478fcaf6357ab202d72853b672e375"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#ab7478fcaf6357ab202d72853b672e375">statevec_swapQubitAmps</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int qb1, int qb2)</td></tr>
<tr class="separator:ab7478fcaf6357ab202d72853b672e375"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac3735bd959600e57b2ee3a105666cddf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="QuEST__cpu__local_8c.html#ac3735bd959600e57b2ee3a105666cddf">statevec_unitary</a> (<a class="el" href="structQureg.html">Qureg</a> qureg, int targetQubit, <a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> u)</td></tr>
<tr class="separator:ac3735bd959600e57b2ee3a105666cddf"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8d31fe2d1ad4d01e2a1f5f6b8bc15b77"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#ga8d31fe2d1ad4d01e2a1f5f6b8bc15b77">syncQuESTEnv</a> (<a class="el" href="structQuESTEnv.html">QuESTEnv</a> env)</td></tr>
<tr class="memdesc:ga8d31fe2d1ad4d01e2a1f5f6b8bc15b77"><td class="mdescLeft"> </td><td class="mdescRight">Guarantees that all code up to the given point has been executed on all nodes (if running in distributed mode) <a href="group__debug.html#ga8d31fe2d1ad4d01e2a1f5f6b8bc15b77">More...</a><br /></td></tr>
<tr class="separator:ga8d31fe2d1ad4d01e2a1f5f6b8bc15b77"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac7e38d768a1bd79019f88cc1e6295092"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__debug.html#gac7e38d768a1bd79019f88cc1e6295092">syncQuESTSuccess</a> (int successCode)</td></tr>
<tr class="memdesc:gac7e38d768a1bd79019f88cc1e6295092"><td class="mdescLeft"> </td><td class="mdescRight">Performs a logical AND on all successCodes held by all processes. <a href="group__debug.html#gac7e38d768a1bd79019f88cc1e6295092">More...</a><br /></td></tr>
<tr class="separator:gac7e38d768a1bd79019f88cc1e6295092"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An implementation of the pure backend in ../QuEST_ops_pure.h for a local (non-MPI, non-GPU) environment. Mostly pure-state wrappers for the local/distributed functions implemented in QuEST_cpu</p>
<dl class="section author"><dt>Author</dt><dd>Ania Brown </dd>
<dd>
Tyson Jones </dd>
<dd>
Balint Koczor </dd></dl>
<p class="definition">Definition in file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="aedd7ecccf2f09dd2f1c5d191950b51e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedd7ecccf2f09dd2f1c5d191950b51e6">◆ </a></span>densmatr_applyDiagonalOp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void densmatr_applyDiagonalOp </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="structDiagonalOp.html">DiagonalOp</a> </td>
<td class="paramname"><em>op</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00358">358</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  </div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// we must preload qureg.pairStateVec with the elements of op.</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="comment">// instead of needless cloning, we'll just temporarily swap the pointers</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* rePtr = qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* imPtr = qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real = op.<a class="code" href="structDiagonalOp.html#a1d66088bed235d524cd452b107694d5c">real</a>;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag = op.<a class="code" href="structDiagonalOp.html#a85c3f52533efe831bbe40b9a48602388">imag</a>;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  </div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="QuEST__cpu_8c.html#afa58cf7cb98a25ab33621120c5c330d0">densmatr_applyDiagonalOpLocal</a>(qureg, op);</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  </div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real = rePtr;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag = imPtr;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l04082">densmatr_applyDiagonalOpLocal()</a>, <a class="el" href="QuEST_8h_source.html#l00310">DiagonalOp::imag</a>, <a class="el" href="QuEST_8h_source.html#l00343">Qureg::pairStateVec</a>, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>, and <a class="el" href="QuEST_8h_source.html#l00308">DiagonalOp::real</a>.</p>
</div>
</div>
<a id="a70e3b0a2297c186d5c779af31459b4ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70e3b0a2297c186d5c779af31459b4ca">◆ </a></span>densmatr_calcExpecDiagonalOp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structComplex.html">Complex</a> densmatr_calcExpecDiagonalOp </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="structDiagonalOp.html">DiagonalOp</a> </td>
<td class="paramname"><em>op</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00378">378</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  </div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__cpu_8c.html#aeb4453a2e609e5359d2995bccf6663ca">densmatr_calcExpecDiagonalOpLocal</a>(qureg, op);</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l04167">densmatr_calcExpecDiagonalOpLocal()</a>.</p>
</div>
</div>
<a id="aa6c3f86010ad398f42b0577ea3bb5bcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6c3f86010ad398f42b0577ea3bb5bcf">◆ </a></span>densmatr_calcFidelity()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> densmatr_calcFidelity </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="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>pureState</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00075">75</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// save pointers to qureg's pair state</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* quregPairRePtr = qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* quregPairImPtr = qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// populate qureg pair state with pure state (by repointing)</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real = pureState.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.real;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag = pureState.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.imag;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// calculate fidelity using pairState</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> fid = <a class="code" href="QuEST__cpu_8c.html#a7772f97cb4d92a9825bf3b7c82c3230c">densmatr_calcFidelityLocal</a>(qureg, pureState);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// restore pointers</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real = quregPairRePtr;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag = quregPairImPtr;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> fid;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01001">densmatr_calcFidelityLocal()</a>, <a class="el" href="QuEST_8h_source.html#l00343">Qureg::pairStateVec</a>, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>, and <a class="el" href="QuEST_8h_source.html#l00341">Qureg::stateVec</a>.</p>
</div>
</div>
<a id="a8c9da88f734b0862f4cce7d819e6d3b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c9da88f734b0862f4cce7d819e6d3b5">◆ </a></span>densmatr_calcHilbertSchmidtDistance()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> densmatr_calcHilbertSchmidtDistance </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>a</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>b</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00062">62</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> distSquared = <a class="code" href="QuEST__cpu_8c.html#a939897137596bb73ad7a028d0beaaa10">densmatr_calcHilbertSchmidtDistanceSquaredLocal</a>(a, b);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> dist = sqrt(distSquared);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> dist;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l00934">densmatr_calcHilbertSchmidtDistanceSquaredLocal()</a>, and <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>.</p>
</div>
</div>
<a id="a6ff3dc624b5fafe8edae4fe327c255a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ff3dc624b5fafe8edae4fe327c255a0">◆ </a></span>densmatr_calcInnerProduct()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> densmatr_calcInnerProduct </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>a</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>b</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00069">69</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> scalar = <a class="code" href="QuEST__cpu_8c.html#a08392b1b27d10e3b8a8648a5afeaa629">densmatr_calcInnerProductLocal</a>(a, b);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> scalar;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l00969">densmatr_calcInnerProductLocal()</a>, and <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>.</p>
</div>
</div>
<a id="a2c664d8abca0a6f87c2bf4fe75fbff90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c664d8abca0a6f87c2bf4fe75fbff90">◆ </a></span>densmatr_calcProbOfAllOutcomes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void densmatr_calcProbOfAllOutcomes </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> * </td>
<td class="paramname"><em>retProbs</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>qureg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>qubits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>numQubits</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00317">317</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  </div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="QuEST__cpu_8c.html#a73a6c5647862b882f4ed7d83ec3c3e1f">densmatr_calcProbOfAllOutcomesLocal</a>(retProbs, qureg, qubits, numQubits);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l03616">densmatr_calcProbOfAllOutcomesLocal()</a>.</p>
</div>
</div>
<a id="ae37b3eff5d3affbc1edfe216cabc1c53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae37b3eff5d3affbc1edfe216cabc1c53">◆ </a></span>densmatr_calcProbOfOutcome()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> densmatr_calcProbOfOutcome </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>measureQubit</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 class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00304">304</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> outcomeProb = <a class="code" href="QuEST__cpu_8c.html#a8bea931504c90d9bd97e74645667804e">densmatr_findProbabilityOfZeroLocal</a>(qureg, measureQubit);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> (outcome == 1)</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  outcomeProb = 1.0 - outcomeProb;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> outcomeProb;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l03402">densmatr_findProbabilityOfZeroLocal()</a>, and <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>.</p>
</div>
</div>
<a id="ae45eefa65f4ecd37bab84fade7cf7f1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae45eefa65f4ecd37bab84fade7cf7f1f">◆ </a></span>densmatr_calcPurity()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> densmatr_calcPurity </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>qureg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00057">57</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__cpu_8c.html#af910c7cf2b85bdc2c399cfe8dbfb8b9c">densmatr_calcPurityLocal</a>(qureg);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l00872">densmatr_calcPurityLocal()</a>.</p>
</div>
</div>
<a id="a6153547f245c05874161a105e9a2f02c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6153547f245c05874161a105e9a2f02c">◆ </a></span>densmatr_calcTotalProb()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> densmatr_calcTotalProb </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>qureg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00118">118</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// computes the trace using Kahan summation</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> pTotal=0;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> y, t, c;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  c = 0;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> numCols = 1LL << qureg.<a class="code" href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">numQubitsRepresented</a>;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> diagIndex;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  </div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> col=0; col< numCols; col++) {</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  diagIndex = col*(numCols + 1);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  y = qureg.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.real[diagIndex] - c;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  t = pTotal + y;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  c = ( t - pTotal ) - y; <span class="comment">// brackets are important</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  pTotal = t;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// does not check imaginary component, by design</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> pTotal;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST_8h_source.html#l00327">Qureg::numQubitsRepresented</a>, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>, and <a class="el" href="QuEST_8h_source.html#l00341">Qureg::stateVec</a>.</p>
</div>
</div>
<a id="a561b599a69a5dab03e55b7cbe259892d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a561b599a69a5dab03e55b7cbe259892d">◆ </a></span>densmatr_initPureState()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void densmatr_initPureState </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="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>pureState</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00095">95</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// save pointers to qureg's pair state</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* quregPairRePtr = qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>* quregPairImPtr = qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// populate qureg pair state with pure state (by repointing)</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real = pureState.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.real;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag = pureState.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.imag;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// populate density matrix via it's pairState</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="QuEST__cpu_8c.html#a1b36518c8fbbc3a5084bb4ad1fb05ea5">densmatr_initPureStateLocal</a>(qureg, pureState);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// restore pointers</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.real = quregPairRePtr;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  qureg.<a class="code" href="structQureg.html#aba97773694870ef35e378c036f486bb7">pairStateVec</a>.imag = quregPairImPtr;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01195">densmatr_initPureStateLocal()</a>, <a class="el" href="QuEST_8h_source.html#l00343">Qureg::pairStateVec</a>, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>, and <a class="el" href="QuEST_8h_source.html#l00341">Qureg::stateVec</a>.</p>
</div>
</div>
<a id="ac501fe7b9d331be48359ce1546348f97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac501fe7b9d331be48359ce1546348f97">◆ </a></span>densmatr_mixDamping()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void densmatr_mixDamping </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>targetQubit</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>damping</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00037">37</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span> (damping == 0)</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="QuEST__cpu_8c.html#ab124a3a9956046bf9c0e1e3ae9171f42">densmatr_mixDampingLocal</a>(qureg, targetQubit, damping);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l00180">densmatr_mixDampingLocal()</a>.</p>
</div>
</div>
<a id="a398b60c4cb4fa2cf2ffc126de6c08da0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a398b60c4cb4fa2cf2ffc126de6c08da0">◆ </a></span>densmatr_mixDepolarising()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void densmatr_mixDepolarising </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>targetQubit</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>depolLevel</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00030">30</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">if</span> (depolLevel == 0)</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="QuEST__cpu_8c.html#ab750fb47da2fca9849c678c869e40e69">densmatr_mixDepolarisingLocal</a>(qureg, targetQubit, depolLevel);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l00131">densmatr_mixDepolarisingLocal()</a>.</p>
</div>
</div>
<a id="a43afa97e300b87bce7f3eb1213eb05f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43afa97e300b87bce7f3eb1213eb05f6">◆ </a></span>densmatr_mixTwoQubitDepolarising()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void densmatr_mixTwoQubitDepolarising </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>qubit1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>qubit2</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>depolLevel</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00044">44</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (depolLevel == 0)</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> eta = 2/depolLevel;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> delta = eta - 1 - sqrt( (eta-1)*(eta-1) - 1 );</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> gamma = 1+delta;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// TODO -- test delta too small</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  gamma = 1/(gamma*gamma*gamma);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="QuEST__internal_8h.html#a623e577b7230f3c8dc202be6185b4289">densmatr_mixTwoQubitDephasing</a>(qureg, qubit1, qubit2, depolLevel);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="QuEST__cpu_8c.html#a3510f01d4d15dcc545564eb84c668cad">densmatr_mixTwoQubitDepolarisingLocal</a>(qureg, qubit1, qubit2, delta, gamma);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l00090">densmatr_mixTwoQubitDephasing()</a>, <a class="el" href="QuEST__cpu_8c_source.html#l00393">densmatr_mixTwoQubitDepolarisingLocal()</a>, and <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>.</p>
</div>
</div>
<a id="a0fb948ddab4ca210e523aa3c52639df4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0fb948ddab4ca210e523aa3c52639df4">◆ </a></span>statevec_calcExpecDiagonalOp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structComplex.html">Complex</a> statevec_calcExpecDiagonalOp </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="structDiagonalOp.html">DiagonalOp</a> </td>
<td class="paramname"><em>op</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00373">373</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  {</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  </div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__cpu_8c.html#a16ccb485bcffb328bbd5b2af6977cead">statevec_calcExpecDiagonalOpLocal</a>(qureg, op);</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l04124">statevec_calcExpecDiagonalOpLocal()</a>.</p>
</div>
</div>
<a id="a7ebd3198a198f4cd20840f64fd8b84d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ebd3198a198f4cd20840f64fd8b84d0">◆ </a></span>statevec_calcInnerProduct()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structComplex.html">Complex</a> statevec_calcInnerProduct </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>bra</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>ket</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00113">113</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <a class="code" href="QuEST__cpu_8c.html#a6fbb3b693f25dde1e9e3dc87dc1984f7">statevec_calcInnerProductLocal</a>(bra, ket);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01082">statevec_calcInnerProductLocal()</a>.</p>
</div>
</div>
<a id="a78cf98ea535790bc46069b60bae342c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78cf98ea535790bc46069b60bae342c7">◆ </a></span>statevec_calcProbOfAllOutcomes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_calcProbOfAllOutcomes </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> * </td>
<td class="paramname"><em>retProbs</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>qureg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>qubits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>numQubits</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00312">312</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  </div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="QuEST__cpu_8c.html#afb1e220c272754d0773aeccdb613b6b3">statevec_calcProbOfAllOutcomesLocal</a>(retProbs, qureg, qubits, numQubits);</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l03549">statevec_calcProbOfAllOutcomesLocal()</a>.</p>
</div>
</div>
<a id="a63cb88a5f4eb12fef087435b8db3f8eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63cb88a5f4eb12fef087435b8db3f8eb">◆ </a></span>statevec_calcProbOfOutcome()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> statevec_calcProbOfOutcome </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>measureQubit</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 class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00296">296</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> {</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> outcomeProb = <a class="code" href="QuEST__cpu_8c.html#a8535bc15c2ff249ddddb3fde6eff1490">statevec_findProbabilityOfZeroLocal</a>(qureg, measureQubit);</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span> (outcome==1)</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  outcomeProb = 1.0 - outcomeProb;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> outcomeProb;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>, and <a class="el" href="QuEST__cpu_8c_source.html#l03457">statevec_findProbabilityOfZeroLocal()</a>.</p>
</div>
</div>
<a id="ad65ad1b5ea6f30b0c6b4ffda96e1a8e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad65ad1b5ea6f30b0c6b4ffda96e1a8e6">◆ </a></span>statevec_calcTotalProb()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> statevec_calcTotalProb </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structQureg.html">Qureg</a> </td>
<td class="paramname"><em>qureg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00141">141</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// implemented using Kahan summation for greater accuracy at a slight floating</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// point operation overhead. For more details see https://en.wikipedia.org/wiki/Kahan_summation_algorithm</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> pTotal=0; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> y, t, c;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> index;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">long</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> numAmpsPerRank = qureg.<a class="code" href="structQureg.html#ab0ea0358482b62f43fdd781469607d97">numAmpsPerChunk</a>;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  c = 0.0;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">for</span> (index=0; index<numAmpsPerRank; index++){ </div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Perform pTotal+=qureg.stateVec.real[index]*qureg.stateVec.real[index]; by Kahan</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  y = qureg.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.real[index]*qureg.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.real[index] - c;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  t = pTotal + y;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Don't change the bracketing on the following line</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  c = ( t - pTotal ) - y;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  pTotal = t;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Perform pTotal+=qureg.stateVec.imag[index]*qureg.stateVec.imag[index]; by Kahan</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  y = qureg.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.imag[index]*qureg.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.imag[index] - c;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  t = pTotal + y;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Don't change the bracketing on the following line</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  c = ( t - pTotal ) - y;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  pTotal = t;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  } </div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> pTotal;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST_8h_source.html#l00332">Qureg::numAmpsPerChunk</a>, <a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a>, and <a class="el" href="QuEST_8h_source.html#l00341">Qureg::stateVec</a>.</p>
</div>
</div>
<a id="a8c13e3ef40a58a27a4c04ad69bde14bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c13e3ef40a58a27a4c04ad69bde14bc">◆ </a></span>statevec_collapseToKnownProbOutcome()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_collapseToKnownProbOutcome </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>measureQubit</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 class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> </td>
<td class="paramname"><em>stateProb</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00322">322</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> {</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="QuEST__cpu_8c.html#ab02bce0ebbb8f624e8ced8b09b99cdef">statevec_collapseToKnownProbOutcomeLocal</a>(qureg, measureQubit, outcome, stateProb);</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l03767">statevec_collapseToKnownProbOutcomeLocal()</a>.</p>
</div>
</div>
<a id="aec63559e8b9ab0e17efe18d64d2ceca6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec63559e8b9ab0e17efe18d64d2ceca6">◆ </a></span>statevec_compactUnitary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_compactUnitary </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>targetQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplex.html">Complex</a> </td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplex.html">Complex</a> </td>
<td class="paramname"><em>beta</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00227">227</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="QuEST__cpu_8c.html#a5ddfdb22e4704b680d67d08d9e80835b">statevec_compactUnitaryLocal</a>(qureg, targetQubit, alpha, beta);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01754">statevec_compactUnitaryLocal()</a>.</p>
</div>
</div>
<a id="a1275d604674224d87a173fb5bac78835"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1275d604674224d87a173fb5bac78835">◆ </a></span>statevec_controlledCompactUnitary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_controlledCompactUnitary </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>controlQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>targetQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplex.html">Complex</a> </td>
<td class="paramname"><em>alpha</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplex.html">Complex</a> </td>
<td class="paramname"><em>beta</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00237">237</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> {</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="QuEST__cpu_8c.html#a215e2d6f88dbecc0b408b3573b5e144f">statevec_controlledCompactUnitaryLocal</a>(qureg, controlQubit, targetQubit, alpha, beta);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02196">statevec_controlledCompactUnitaryLocal()</a>.</p>
</div>
</div>
<a id="abb2eab4af99adcc59be24f4c91c6f6ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb2eab4af99adcc59be24f4c91c6f6ad">◆ </a></span>statevec_controlledNot()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_controlledNot </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>controlQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>targetQubit</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00286">286</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> {</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="QuEST__cpu_8c.html#ace1482ef82b83e7f926634a67b322fc4">statevec_controlledNotLocal</a>(qureg, controlQubit, targetQubit);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02679">statevec_controlledNotLocal()</a>.</p>
</div>
</div>
<a id="a4e19ef93d01d7acea32ca646d623aedd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e19ef93d01d7acea32ca646d623aedd">◆ </a></span>statevec_controlledPauliY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_controlledPauliY </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>controlQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>targetQubit</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00269">269</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> {</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordtype">int</span> conjFac = 1;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="QuEST__cpu_8c.html#a06fb16aa4af7c54d36052a14d3ad58a7">statevec_controlledPauliYLocal</a>(qureg, controlQubit, targetQubit, conjFac);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02982">statevec_controlledPauliYLocal()</a>.</p>
</div>
</div>
<a id="a4a2fa262d3f0dba372797b9bd35d9fa5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a2fa262d3f0dba372797b9bd35d9fa5">◆ </a></span>statevec_controlledPauliYConj()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_controlledPauliYConj </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>controlQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>targetQubit</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00275">275</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> {</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordtype">int</span> conjFac = -1;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="QuEST__cpu_8c.html#a06fb16aa4af7c54d36052a14d3ad58a7">statevec_controlledPauliYLocal</a>(qureg, controlQubit, targetQubit, conjFac);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02982">statevec_controlledPauliYLocal()</a>.</p>
</div>
</div>
<a id="add9ca9956cdd81ed5d0b0f66168c04a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add9ca9956cdd81ed5d0b0f66168c04a3">◆ </a></span>statevec_controlledUnitary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_controlledUnitary </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>controlQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>targetQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> </td>
<td class="paramname"><em>u</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00242">242</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="QuEST__cpu_8c.html#a903beb4f5d8753a964ce2dc5f9096a24">statevec_controlledUnitaryLocal</a>(qureg, controlQubit, targetQubit, u);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02336">statevec_controlledUnitaryLocal()</a>.</p>
</div>
</div>
<a id="abd509244d57657e148e4084c5ab5d28f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd509244d57657e148e4084c5ab5d28f">◆ </a></span>statevec_getImagAmp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> statevec_getImagAmp </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">long long int </td>
<td class="paramname"><em>index</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00223">223</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> qureg.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.imag[index];</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST_8h_source.html#l00341">Qureg::stateVec</a>.</p>
</div>
</div>
<a id="abc9a9ef4344c7faaaf28ac25c76649b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc9a9ef4344c7faaaf28ac25c76649b9">◆ </a></span>statevec_getRealAmp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__type.html#ga7740e349b4f8bae6451547680f0ce2d6">qreal</a> statevec_getRealAmp </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">long long int </td>
<td class="paramname"><em>index</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00219">219</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> qureg.<a class="code" href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">stateVec</a>.real[index];</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST_8h_source.html#l00341">Qureg::stateVec</a>.</p>
</div>
</div>
<a id="af3fc7bd149c70f083b149050242cd55e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3fc7bd149c70f083b149050242cd55e">◆ </a></span>statevec_hadamard()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_hadamard </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>targetQubit</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00281">281</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> {</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="QuEST__cpu_8c.html#a86dbcc3db99294add9964741e19fbdab">statevec_hadamardLocal</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l03078">statevec_hadamardLocal()</a>.</p>
</div>
</div>
<a id="a13ecc24b355a5213d745651cde56bd71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13ecc24b355a5213d745651cde56bd71">◆ </a></span>statevec_multiControlledMultiQubitNot()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_multiControlledMultiQubitNot </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>ctrlMask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>targMask</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00291">291</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  {</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  </div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="QuEST__cpu_8c.html#ac7d30ce54573c75b35386cd0e284adc5">statevec_multiControlledMultiQubitNotLocal</a>(qureg, ctrlMask, targMask);</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02778">statevec_multiControlledMultiQubitNotLocal()</a>.</p>
</div>
</div>
<a id="a0acfe30083d0bc2a84da196378a36122"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0acfe30083d0bc2a84da196378a36122">◆ </a></span>statevec_multiControlledMultiQubitUnitary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_multiControlledMultiQubitUnitary </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">long long int </td>
<td class="paramname"><em>ctrlMask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>targs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>numTargs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplexMatrixN.html">ComplexMatrixN</a> </td>
<td class="paramname"><em>u</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This calls swapQubitAmps only when it would involve a distributed communication; if the qubit chunks already fit in the node, it operates the unitary direct. </p>
<p>It is already gauranteed here that all target qubits can fit on each node (this is validated in the front-end)</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>refactor so that the 'swap back' isn't performed; instead the qubit locations are updated. </dd></dl>
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00348">348</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> {</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="QuEST__cpu_8c.html#a0aedcccfa50c7aaa8b7fc4c14d7cdfb8">statevec_multiControlledMultiQubitUnitaryLocal</a>(qureg, ctrlMask, targs, numTargs, u);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01912">statevec_multiControlledMultiQubitUnitaryLocal()</a>.</p>
</div>
</div>
<a id="affbd18d7c2ed8d5bd5edb67116501145"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affbd18d7c2ed8d5bd5edb67116501145">◆ </a></span>statevec_multiControlledTwoQubitUnitary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_multiControlledTwoQubitUnitary </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">long long int </td>
<td class="paramname"><em>ctrlMask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>q1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>q2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplexMatrix4.html">ComplexMatrix4</a> </td>
<td class="paramname"><em>u</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This calls swapQubitAmps only when it would involve a distributed communication; if the qubit chunks already fit in the node, it operates the unitary direct. </p>
<p>Note the order of q1 and q2 in the call to twoQubitUnitaryLocal is important.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd><p class="startdd">refactor so that the 'swap back' isn't performed; instead the qubit locations are updated. </p>
<p class="enddd">the double swap (q1,q2 to 0,1) may be possible simultaneously by a bespoke swap routine. </p>
</dd></dl>
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00343">343</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> {</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="QuEST__cpu_8c.html#af8236a00389137b5eff986a40577eaf3">statevec_multiControlledTwoQubitUnitaryLocal</a>(qureg, ctrlMask, q1, q2, u);</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l01813">statevec_multiControlledTwoQubitUnitaryLocal()</a>.</p>
</div>
</div>
<a id="a600bda10463e2078ce746ec28f2d39c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a600bda10463e2078ce746ec28f2d39c9">◆ </a></span>statevec_multiControlledUnitary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_multiControlledUnitary </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">long long int </td>
<td class="paramname"><em>ctrlQubitsMask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long long int </td>
<td class="paramname"><em>ctrlFlipMask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>targetQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> </td>
<td class="paramname"><em>u</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00247">247</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="QuEST__cpu_8c.html#ab19f28e68330da68ea3caa2bdef32da9">statevec_multiControlledUnitaryLocal</a>(qureg, targetQubit, ctrlQubitsMask, ctrlFlipMask, u);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02268">statevec_multiControlledUnitaryLocal()</a>.</p>
</div>
</div>
<a id="a1c82b5e914a8a39c5c7b782dbc16fa76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c82b5e914a8a39c5c7b782dbc16fa76">◆ </a></span>statevec_pauliX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_pauliX </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>targetQubit</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00252">252</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> {</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="QuEST__cpu_8c.html#aa987d1e0ba97da2ca540194356dd62de">statevec_pauliXLocal</a>(qureg, targetQubit);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02593">statevec_pauliXLocal()</a>.</p>
</div>
</div>
<a id="af1cca787f3b0e0c91ffb2495f9ad8d5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1cca787f3b0e0c91ffb2495f9ad8d5a">◆ </a></span>statevec_pauliY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_pauliY </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>targetQubit</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00257">257</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">int</span> conjFac = 1;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="QuEST__cpu_8c.html#a45b0916c3e121837f214b64f7424e479">statevec_pauliYLocal</a>(qureg, targetQubit, conjFac);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02887">statevec_pauliYLocal()</a>.</p>
</div>
</div>
<a id="a81fbd2eccd0d0e5a3cece4df2f96cb92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81fbd2eccd0d0e5a3cece4df2f96cb92">◆ </a></span>statevec_pauliYConj()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_pauliYConj </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>targetQubit</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00263">263</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordtype">int</span> conjFac = -1;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="QuEST__cpu_8c.html#a45b0916c3e121837f214b64f7424e479">statevec_pauliYLocal</a>(qureg, targetQubit, conjFac);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02887">statevec_pauliYLocal()</a>.</p>
</div>
</div>
<a id="ab7478fcaf6357ab202d72853b672e375"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7478fcaf6357ab202d72853b672e375">◆ </a></span>statevec_swapQubitAmps()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_swapQubitAmps </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>qb1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>qb2</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00353">353</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="QuEST__cpu_8c.html#ab5b51a28caa8792a3f0c637409a694b0">statevec_swapQubitAmpsLocal</a>(qureg, qb1, qb2);</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l03922">statevec_swapQubitAmpsLocal()</a>.</p>
</div>
</div>
<a id="ac3735bd959600e57b2ee3a105666cddf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3735bd959600e57b2ee3a105666cddf">◆ </a></span>statevec_unitary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void statevec_unitary </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>targetQubit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structComplexMatrix2.html">ComplexMatrix2</a> </td>
<td class="paramname"><em>u</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="QuEST__cpu__local_8c_source.html#l00232">232</a> of file <a class="el" href="QuEST__cpu__local_8c_source.html">QuEST_cpu_local.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="QuEST__cpu_8c.html#aafc398f8f479fcc066a2dea700235635">statevec_unitaryLocal</a>(qureg, targetQubit, u);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div>
</div><!-- fragment -->
<p class="reference">References <a class="el" href="QuEST__cpu_8c_source.html#l02026">statevec_unitaryLocal()</a>.</p>
</div>
</div>
</div><!-- contents -->
<div class="ttc" id="aQuEST__cpu_8c_html_ace1482ef82b83e7f926634a67b322fc4"><div class="ttname"><a href="QuEST__cpu_8c.html#ace1482ef82b83e7f926634a67b322fc4">statevec_controlledNotLocal</a></div><div class="ttdeci">void statevec_controlledNotLocal(Qureg qureg, int controlQubit, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02679">QuEST_cpu.c:2679</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a45b0916c3e121837f214b64f7424e479"><div class="ttname"><a href="QuEST__cpu_8c.html#a45b0916c3e121837f214b64f7424e479">statevec_pauliYLocal</a></div><div class="ttdeci">void statevec_pauliYLocal(Qureg qureg, int targetQubit, int conjFac)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02887">QuEST_cpu.c:2887</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a939897137596bb73ad7a028d0beaaa10"><div class="ttname"><a href="QuEST__cpu_8c.html#a939897137596bb73ad7a028d0beaaa10">densmatr_calcHilbertSchmidtDistanceSquaredLocal</a></div><div class="ttdeci">qreal densmatr_calcHilbertSchmidtDistanceSquaredLocal(Qureg a, Qureg b)</div><div class="ttdoc">computes Tr((a-b) conjTrans(a-b)) = sum of abs values of (a-b)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00934">QuEST_cpu.c:934</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a73a6c5647862b882f4ed7d83ec3c3e1f"><div class="ttname"><a href="QuEST__cpu_8c.html#a73a6c5647862b882f4ed7d83ec3c3e1f">densmatr_calcProbOfAllOutcomesLocal</a></div><div class="ttdeci">void densmatr_calcProbOfAllOutcomesLocal(qreal *outcomeProbs, Qureg qureg, int *qubits, int numQubits)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03616">QuEST_cpu.c:3616</a></div></div>
<div class="ttc" id="astructQureg_html_aba97773694870ef35e378c036f486bb7"><div class="ttname"><a href="structQureg.html#aba97773694870ef35e378c036f486bb7">Qureg::pairStateVec</a></div><div class="ttdeci">ComplexArray pairStateVec</div><div class="ttdoc">Temporary storage for a chunk of the state vector received from another process in the MPI version.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00343">QuEST.h:343</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_ab5b51a28caa8792a3f0c637409a694b0"><div class="ttname"><a href="QuEST__cpu_8c.html#ab5b51a28caa8792a3f0c637409a694b0">statevec_swapQubitAmpsLocal</a></div><div class="ttdeci">void statevec_swapQubitAmpsLocal(Qureg qureg, int qb1, int qb2)</div><div class="ttdoc">It is ensured that all amplitudes needing to be swapped are on this node.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03922">QuEST_cpu.c:3922</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_ac7d30ce54573c75b35386cd0e284adc5"><div class="ttname"><a href="QuEST__cpu_8c.html#ac7d30ce54573c75b35386cd0e284adc5">statevec_multiControlledMultiQubitNotLocal</a></div><div class="ttdeci">void statevec_multiControlledMultiQubitNotLocal(Qureg qureg, int ctrlMask, int targMask)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02778">QuEST_cpu.c:2778</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_ab02bce0ebbb8f624e8ced8b09b99cdef"><div class="ttname"><a href="QuEST__cpu_8c.html#ab02bce0ebbb8f624e8ced8b09b99cdef">statevec_collapseToKnownProbOutcomeLocal</a></div><div class="ttdeci">void statevec_collapseToKnownProbOutcomeLocal(Qureg qureg, int measureQubit, int outcome, qreal totalProbability)</div><div class="ttdoc">Update the state vector to be consistent with measuring measureQubit=0 if outcome=0 and measureQubit=...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03767">QuEST_cpu.c:3767</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a5ddfdb22e4704b680d67d08d9e80835b"><div class="ttname"><a href="QuEST__cpu_8c.html#a5ddfdb22e4704b680d67d08d9e80835b">statevec_compactUnitaryLocal</a></div><div class="ttdeci">void statevec_compactUnitaryLocal(Qureg qureg, int targetQubit, Complex alpha, Complex beta)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01754">QuEST_cpu.c:1754</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_af910c7cf2b85bdc2c399cfe8dbfb8b9c"><div class="ttname"><a href="QuEST__cpu_8c.html#af910c7cf2b85bdc2c399cfe8dbfb8b9c">densmatr_calcPurityLocal</a></div><div class="ttdeci">qreal densmatr_calcPurityLocal(Qureg qureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00872">QuEST_cpu.c:872</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a16ccb485bcffb328bbd5b2af6977cead"><div class="ttname"><a href="QuEST__cpu_8c.html#a16ccb485bcffb328bbd5b2af6977cead">statevec_calcExpecDiagonalOpLocal</a></div><div class="ttdeci">Complex statevec_calcExpecDiagonalOpLocal(Qureg qureg, DiagonalOp op)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l04124">QuEST_cpu.c:4124</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a0aedcccfa50c7aaa8b7fc4c14d7cdfb8"><div class="ttname"><a href="QuEST__cpu_8c.html#a0aedcccfa50c7aaa8b7fc4c14d7cdfb8">statevec_multiControlledMultiQubitUnitaryLocal</a></div><div class="ttdeci">void statevec_multiControlledMultiQubitUnitaryLocal(Qureg qureg, long long int ctrlMask, int *targs, int numTargs, ComplexMatrixN u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01912">QuEST_cpu.c:1912</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_af8236a00389137b5eff986a40577eaf3"><div class="ttname"><a href="QuEST__cpu_8c.html#af8236a00389137b5eff986a40577eaf3">statevec_multiControlledTwoQubitUnitaryLocal</a></div><div class="ttdeci">void statevec_multiControlledTwoQubitUnitaryLocal(Qureg qureg, long long int ctrlMask, int q1, int q2, ComplexMatrix4 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01813">QuEST_cpu.c:1813</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__cpu_8c_html_afb1e220c272754d0773aeccdb613b6b3"><div class="ttname"><a href="QuEST__cpu_8c.html#afb1e220c272754d0773aeccdb613b6b3">statevec_calcProbOfAllOutcomesLocal</a></div><div class="ttdeci">void statevec_calcProbOfAllOutcomesLocal(qreal *outcomeProbs, Qureg qureg, int *qubits, int numQubits)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03549">QuEST_cpu.c:3549</a></div></div>
<div class="ttc" id="astructDiagonalOp_html_a85c3f52533efe831bbe40b9a48602388"><div class="ttname"><a href="structDiagonalOp.html#a85c3f52533efe831bbe40b9a48602388">DiagonalOp::imag</a></div><div class="ttdeci">qreal * imag</div><div class="ttdoc">The imaginary values of the 2^numQubits complex elements.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00310">QuEST.h:310</a></div></div>
<div class="ttc" id="astructQureg_html_ab0ea0358482b62f43fdd781469607d97"><div class="ttname"><a href="structQureg.html#ab0ea0358482b62f43fdd781469607d97">Qureg::numAmpsPerChunk</a></div><div class="ttdeci">long long int numAmpsPerChunk</div><div class="ttdoc">Number of probability amplitudes held in stateVec by this process In the non-MPI version,...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00332">QuEST.h:332</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a3510f01d4d15dcc545564eb84c668cad"><div class="ttname"><a href="QuEST__cpu_8c.html#a3510f01d4d15dcc545564eb84c668cad">densmatr_mixTwoQubitDepolarisingLocal</a></div><div class="ttdeci">void densmatr_mixTwoQubitDepolarisingLocal(Qureg qureg, int qubit1, int qubit2, qreal delta, qreal gamma)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00393">QuEST_cpu.c:393</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a06fb16aa4af7c54d36052a14d3ad58a7"><div class="ttname"><a href="QuEST__cpu_8c.html#a06fb16aa4af7c54d36052a14d3ad58a7">statevec_controlledPauliYLocal</a></div><div class="ttdeci">void statevec_controlledPauliYLocal(Qureg qureg, int controlQubit, int targetQubit, int conjFac)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02982">QuEST_cpu.c:2982</a></div></div>
<div class="ttc" id="aQuEST__internal_8h_html_a623e577b7230f3c8dc202be6185b4289"><div class="ttname"><a href="QuEST__internal_8h.html#a623e577b7230f3c8dc202be6185b4289">densmatr_mixTwoQubitDephasing</a></div><div class="ttdeci">void densmatr_mixTwoQubitDephasing(Qureg qureg, int qubit1, int qubit2, qreal dephase)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00090">QuEST_cpu.c:90</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_ab19f28e68330da68ea3caa2bdef32da9"><div class="ttname"><a href="QuEST__cpu_8c.html#ab19f28e68330da68ea3caa2bdef32da9">statevec_multiControlledUnitaryLocal</a></div><div class="ttdeci">void statevec_multiControlledUnitaryLocal(Qureg qureg, int targetQubit, long long int ctrlQubitsMask, long long int ctrlFlipMask, ComplexMatrix2 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02268">QuEST_cpu.c:2268</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_aeb4453a2e609e5359d2995bccf6663ca"><div class="ttname"><a href="QuEST__cpu_8c.html#aeb4453a2e609e5359d2995bccf6663ca">densmatr_calcExpecDiagonalOpLocal</a></div><div class="ttdeci">Complex densmatr_calcExpecDiagonalOpLocal(Qureg qureg, DiagonalOp op)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l04167">QuEST_cpu.c:4167</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_aa987d1e0ba97da2ca540194356dd62de"><div class="ttname"><a href="QuEST__cpu_8c.html#aa987d1e0ba97da2ca540194356dd62de">statevec_pauliXLocal</a></div><div class="ttdeci">void statevec_pauliXLocal(Qureg qureg, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02593">QuEST_cpu.c:2593</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a1b36518c8fbbc3a5084bb4ad1fb05ea5"><div class="ttname"><a href="QuEST__cpu_8c.html#a1b36518c8fbbc3a5084bb4ad1fb05ea5">densmatr_initPureStateLocal</a></div><div class="ttdeci">void densmatr_initPureStateLocal(Qureg targetQureg, Qureg copyQureg)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01195">QuEST_cpu.c:1195</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_ab124a3a9956046bf9c0e1e3ae9171f42"><div class="ttname"><a href="QuEST__cpu_8c.html#ab124a3a9956046bf9c0e1e3ae9171f42">densmatr_mixDampingLocal</a></div><div class="ttdeci">void densmatr_mixDampingLocal(Qureg qureg, int targetQubit, qreal damping)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00180">QuEST_cpu.c:180</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a08392b1b27d10e3b8a8648a5afeaa629"><div class="ttname"><a href="QuEST__cpu_8c.html#a08392b1b27d10e3b8a8648a5afeaa629">densmatr_calcInnerProductLocal</a></div><div class="ttdeci">qreal densmatr_calcInnerProductLocal(Qureg a, Qureg b)</div><div class="ttdoc">computes Tr(conjTrans(a) b) = sum of (a_ij^* b_ij)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00969">QuEST_cpu.c:969</a></div></div>
<div class="ttc" id="astructQureg_html_a441e4cacef6bd17adb9813c7442d42fe"><div class="ttname"><a href="structQureg.html#a441e4cacef6bd17adb9813c7442d42fe">Qureg::stateVec</a></div><div class="ttdeci">ComplexArray stateVec</div><div class="ttdoc">Computational state amplitudes - a subset thereof in the MPI version.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00341">QuEST.h:341</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_ab750fb47da2fca9849c678c869e40e69"><div class="ttname"><a href="QuEST__cpu_8c.html#ab750fb47da2fca9849c678c869e40e69">densmatr_mixDepolarisingLocal</a></div><div class="ttdeci">void densmatr_mixDepolarisingLocal(Qureg qureg, int targetQubit, qreal depolLevel)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l00131">QuEST_cpu.c:131</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a86dbcc3db99294add9964741e19fbdab"><div class="ttname"><a href="QuEST__cpu_8c.html#a86dbcc3db99294add9964741e19fbdab">statevec_hadamardLocal</a></div><div class="ttdeci">void statevec_hadamardLocal(Qureg qureg, int targetQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03078">QuEST_cpu.c:3078</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_afa58cf7cb98a25ab33621120c5c330d0"><div class="ttname"><a href="QuEST__cpu_8c.html#afa58cf7cb98a25ab33621120c5c330d0">densmatr_applyDiagonalOpLocal</a></div><div class="ttdeci">void densmatr_applyDiagonalOpLocal(Qureg qureg, DiagonalOp op)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l04082">QuEST_cpu.c:4082</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a903beb4f5d8753a964ce2dc5f9096a24"><div class="ttname"><a href="QuEST__cpu_8c.html#a903beb4f5d8753a964ce2dc5f9096a24">statevec_controlledUnitaryLocal</a></div><div class="ttdeci">void statevec_controlledUnitaryLocal(Qureg qureg, int controlQubit, int targetQubit, ComplexMatrix2 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02336">QuEST_cpu.c:2336</a></div></div>
<div class="ttc" id="astructQureg_html_ad08dff5316b8937f4b2a1417591543dc"><div class="ttname"><a href="structQureg.html#ad08dff5316b8937f4b2a1417591543dc">Qureg::numQubitsRepresented</a></div><div class="ttdeci">int numQubitsRepresented</div><div class="ttdoc">The number of qubits represented in either the state-vector or density matrix.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00327">QuEST.h:327</a></div></div>
<div class="ttc" id="astructDiagonalOp_html_a1d66088bed235d524cd452b107694d5c"><div class="ttname"><a href="structDiagonalOp.html#a1d66088bed235d524cd452b107694d5c">DiagonalOp::real</a></div><div class="ttdeci">qreal * real</div><div class="ttdoc">The real values of the 2^numQubits complex elements.</div><div class="ttdef"><b>Definition:</b> <a href="QuEST_8h_source.html#l00308">QuEST.h:308</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_aafc398f8f479fcc066a2dea700235635"><div class="ttname"><a href="QuEST__cpu_8c.html#aafc398f8f479fcc066a2dea700235635">statevec_unitaryLocal</a></div><div class="ttdeci">void statevec_unitaryLocal(Qureg qureg, int targetQubit, ComplexMatrix2 u)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02026">QuEST_cpu.c:2026</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a8bea931504c90d9bd97e74645667804e"><div class="ttname"><a href="QuEST__cpu_8c.html#a8bea931504c90d9bd97e74645667804e">densmatr_findProbabilityOfZeroLocal</a></div><div class="ttdeci">qreal densmatr_findProbabilityOfZeroLocal(Qureg qureg, int measureQubit)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03402">QuEST_cpu.c:3402</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a215e2d6f88dbecc0b408b3573b5e144f"><div class="ttname"><a href="QuEST__cpu_8c.html#a215e2d6f88dbecc0b408b3573b5e144f">statevec_controlledCompactUnitaryLocal</a></div><div class="ttdeci">void statevec_controlledCompactUnitaryLocal(Qureg qureg, int controlQubit, int targetQubit, Complex alpha, Complex beta)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l02196">QuEST_cpu.c:2196</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a6fbb3b693f25dde1e9e3dc87dc1984f7"><div class="ttname"><a href="QuEST__cpu_8c.html#a6fbb3b693f25dde1e9e3dc87dc1984f7">statevec_calcInnerProductLocal</a></div><div class="ttdeci">Complex statevec_calcInnerProductLocal(Qureg bra, Qureg ket)</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01082">QuEST_cpu.c:1082</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a7772f97cb4d92a9825bf3b7c82c3230c"><div class="ttname"><a href="QuEST__cpu_8c.html#a7772f97cb4d92a9825bf3b7c82c3230c">densmatr_calcFidelityLocal</a></div><div class="ttdeci">qreal densmatr_calcFidelityLocal(Qureg qureg, Qureg pureState)</div><div class="ttdoc">computes a few dens-columns-worth of (vec^*T) dens * vec</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l01001">QuEST_cpu.c:1001</a></div></div>
<div class="ttc" id="aQuEST__cpu_8c_html_a8535bc15c2ff249ddddb3fde6eff1490"><div class="ttname"><a href="QuEST__cpu_8c.html#a8535bc15c2ff249ddddb3fde6eff1490">statevec_findProbabilityOfZeroLocal</a></div><div class="ttdeci">qreal statevec_findProbabilityOfZeroLocal(Qureg qureg, int measureQubit)</div><div class="ttdoc">Measure the total probability of a specified qubit being in the zero state across all amplitudes in t...</div><div class="ttdef"><b>Definition:</b> <a href="QuEST__cpu_8c_source.html#l03457">QuEST_cpu.c:3457</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>