Browse Source

Deploy QCGPU/qcgpu to github.com/QCGPU/qcgpu.git:gh-pages

Deployment Bot (from Travis CI) 6 years ago
parent
commit
1958779998
18 changed files with 963 additions and 40 deletions
  1. 1 1
      .buildinfo
  2. 108 0
      _sources/gates.rst.txt
  3. 13 0
      _sources/guide.rst.txt
  4. 5 4
      _sources/index.rst.txt
  5. 70 0
      _sources/operations.rst.txt
  6. 5 1
      _sources/quickstart.rst.txt
  7. 49 0
      _sources/registers.rst.txt
  8. 198 0
      gates.html
  9. 11 6
      genindex.html
  10. 131 0
      guide.html
  11. 33 9
      index.html
  12. 11 6
      install.html
  13. BIN
      objects.inv
  14. 158 0
      operations.html
  15. 18 6
      quickstart.html
  16. 140 0
      registers.html
  17. 11 6
      search.html
  18. 1 1
      searchindex.js

+ 1 - 1
.buildinfo

@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 4786ef7a3e6eb7fb8211a93028117631
+config: cd3e300fbf34dbe8bb8b5e26f85a504b
 tags: 645f666f9bcd5a90fca523b33c5a78b7

+ 108 - 0
_sources/gates.rst.txt

@@ -0,0 +1,108 @@
+Quantum Gates
+=============
+
+In quantum computing, gates are used to manipulate quantum registers and
+to implement quantum algorithms.
+
+Built-In Gates
+--------------
+
+There are a number of gates built into QCGPU. They can all be applied
+the same way:
+
+.. code:: python
+
+   import qcgpu
+
+   register = qcgpu.State(2)
+
+   state.h(0) # Applies the Hadamard (H) gate to the first qubit.
+   state.x(1) # Applies a pauli-x (NOT) gate to the second qubit.
+
+``h`` and ``x`` can be replaced with any of the following:
+
+-  The Hadamard gate: **h** - ``state.h(0)``
+-  The S gate: **s** - ``state.s(0)``
+-  The T gate: **t** - ``state.t(0)``
+-  The Pauli-X / NOT gate: **x** - ``state.x(0)``
+-  The Pauli-Y gate: **y** - ``state.y(0)``
+-  The Pauli-Z gate: **z** - ``state.z(0)``
+-  The CNOT gate: **cx** -
+   ``state.cx(0, 1) # CNOT with control = 0, target = 1``
+-  The SWAP gate: **swap** -
+   ``state.swap(0,1) # Swaps the 0th and 1st qubit``
+-  The Toffoli gate: **toffoli** -
+   ``state.toffoli(0, 1, 2) # Toffoli with controls = (0, 1), target = 2``
+
+These are all shorthand methods for the application of arbitrary gates.
+For example, the application of a Hadamard gate above is shorthand for
+
+.. code:: python
+
+   import qcgpu
+
+   h = qcgpu.gate.h()
+
+   register = qcgpu.State(5)
+   register.apply_gate(h, 0)
+
+You can also use any of the gates as controlled gates. For example, the
+application of the CNOT gate above is shorthand for
+
+.. code:: python
+
+   import qcgpu
+
+   x = qcgpu.gate.x()
+
+   register = qcgpu.State(5)
+   register.apply_controlled_gate(x, 0, 1)
+
+Applying A Gate To A Whole Register
+----------------------------------
+
+There is a convenience method to apply a gate to every qubit in the register.
+The following applies a Hadamard gate to the whole register,
+
+.. code:: python
+
+   import qcgpu
+
+   h = qcgpu.gate.h()
+
+   register = qcgpu.State(5)
+   register.apply_all(h)
+   
+
+User Defined Gates
+------------------
+
+Gates in QCGPU are represented by the ``qcgpu.Gate`` class.
+
+The only gates that can be defined by the user are single qubit gates.
+
+The process of creating a gate is
+
+.. code:: python
+
+   import qcgpu
+   import numpy as np
+
+   gate_matrix = np.array([
+       [1, 0],
+       [0, np.exp(1j * np.pi / 4)]
+   ])
+
+   gate = qcgpu.Gate(gate_matrix)
+
+The input to the ``Gate`` constructor is checked to be a 2x2 unitary
+matrix.
+
+This newly created gate can then be applied the long hand way,
+
+.. code:: python
+
+   import qcgpu 
+
+   register = qcgpu.State(2)
+   register.apply_gate(gate, 0)

+ 13 - 0
_sources/guide.rst.txt

@@ -0,0 +1,13 @@
+==========
+User Guide
+==========
+
+This section covers the full usage of QCGPU.
+It will also contain some information about what each part represents.
+
+.. toctree::
+   :maxdepth: 2
+   
+   registers
+   gates
+   operations

+ 5 - 4
_sources/index.rst.txt

@@ -1,3 +1,4 @@
+=====
 QCGPU
 =====
 
@@ -23,16 +24,16 @@ Read the `research paper`_.
 .. _`research paper`: https://arxiv.org/abs/1805.00988
 
 
-
 Table of Contents
 ==================
 
 .. toctree::
-   :maxdepth: 2
+   :maxdepth: 3
    
    install
-   Getting started <quickstart>
-   Software reference <_autodoc/qcgpu>
+   quickstart
+   guide
+   
 
 .. Python Modules
     ==============

+ 70 - 0
_sources/operations.rst.txt

@@ -0,0 +1,70 @@
+Quantum Operations
+==================
+
+There are a number of operations you can perform on quantum registers
+with QCGPU.
+
+Measurement
+-----------
+
+Measurement of a register in QCGPU doesn’t collapse the state (although
+this may be added in the future). When you measure the state, you can
+specify the number of times to sample. The output of this ``measure``
+function is a dictionary with the bitstrings of the outputs, along with
+the number of times they were measured.
+
+You can measure a register as follows,
+
+.. code:: python
+
+   import qcgpu
+
+   register = qcgpu.State(5)
+
+   register.measure(samples=1000)
+   # {'00000': 1000}
+
+There is also a convenience method to measure only a single qubit.
+Again, the state is not collapsed
+
+.. code:: python
+
+   import qcgpu
+
+   register = qcgpu.State(5)
+
+   register.h(0)
+
+   register.measure_qubit(0, samples=1000)
+   # {'1': 523, '0': 477}
+
+Probability
+-----------
+
+QCGPU provides another method for getting the probability of each
+outcome.
+
+The probability of getting an outcome :math:`j` from a state
+:math:`\lvert \psi \rangle = \sum_{j = 0}^{2^n - 1} \alpha_j \lvert j \rangle`
+is
+
+.. math::
+
+
+   P(j) = \lvert \alpha_j \lvert^2
+
+The method ``probabilities`` returns a numpy array with each of the
+values corresponding to :math:`\lvert \alpha_j \lvert ^2` for each index
+:math:`j`.
+
+.. code:: python
+
+   import qcgpu
+
+   register = qcgpu.State(1)
+   register.h(0)
+
+   register.probabilities() # [0.5, 0.5]
+
+This method is particularly useful to plot the probabilities of each
+outcome.

+ 5 - 1
_sources/quickstart.rst.txt

@@ -1,3 +1,4 @@
+===============
 Getting Started
 ===============
 
@@ -35,4 +36,7 @@ along with how often they occurred.
 
 .. code-block:: python
 
-    {'00': 486, '11': 514}
+    {'00': 486, '11': 514}
+
+There are a few different ways to do things using QCGPU, 
+so you should check out the rest of the documentation too

+ 49 - 0
_sources/registers.rst.txt

@@ -0,0 +1,49 @@
+=================
+Quantum Registers
+=================
+
+QCGPU provides a class to represent the register, ``qcgpu.State``. The
+register class stores (on the OpenCL device) a state vector. This state
+vector is a chunk of memory, the size of which is:
+
+.. math::
+
+
+   64 \cdot 2^n \text{ bits}.
+
+This means you would need just 2kb of memory to have a 5 qubit register,
+a 30 qubit register would take up 9gb of memory.
+
+This is something to be aware of, as the state vector must fit in the
+memory of the device you wish to use.
+
+Using the ``State`` class
+-------------------------
+
+To create a new register, you can use
+
+.. code:: python
+
+   import qcgpu
+
+   register = qcgpu.State(5)
+
+This will create a 5 qubit register.
+
+When you run this, you may be prompted to choose a device. This is
+normal, as you can have more than 1 device that supports OpenCL in your
+computer. Just choose the one you want.
+
+Mathematical Description
+-------------------------
+
+This class represents a state vector :math:`\lvert \psi \rangle` with
+
+.. math::
+
+
+   \lvert \psi \rangle = \sum_{j = 0}^{2^n - 1} \alpha_j \lvert j \rangle
+
+where :math:`n` is the number of qubits, :math:`\alpha_j` is the
+amplitude and the state is :math:`j` runs overall :math:`2^n` basis
+states.

+ 198 - 0
gates.html

@@ -0,0 +1,198 @@
+<!DOCTYPE html>
+<html >
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+      <title>Quantum Gates</title>
+    
+      <link rel="stylesheet" href="_static/pygments.css">
+      <link rel="stylesheet" href="_static/theme.css">
+      
+      <script src="_static/theme-vendors.js"></script>
+      <script src="_static/theme.js" defer></script>
+    
+  <link rel="index" title="Index" href="genindex.html" />
+  <link rel="search" title="Search" href="search.html" />
+  <link rel="next" title="Quantum Operations" href="operations.html" />
+  <link rel="prev" title="Quantum Registers" href="registers.html" /> 
+  </head>
+
+  <body><div id="app" class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
+  <router-link to="index.html" class="home-link">
+    <span class="site-name">QCGPU</span>
+  </router-link>
+
+  <div class="links">
+    <navlinks class="can-hide">
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link ">
+       None
+    </a>
+  </div>
+
+
+
+    </navlinks>
+  </div>
+</navbar>
+
+      
+      <div class="sidebar-mask" @click="toggleSidebar(false)">
+      </div>
+        <sidebar @toggle-sidebar="toggleSidebar">
+          
+          <navlinks>
+            
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link ">
+       None
+    </a>
+  </div>
+
+
+
+            
+          </navlinks><div class="sidebar-links" role="navigation" aria-label="main navigation">
+  
+  <div class="sidebar-group">
+    <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="guide.html">User Guide</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="registers.html">Quantum Registers</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Quantum Gates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operations.html">Quantum Operations</a></li>
+</ul>
+</li>
+</ul>
+
+  </div>
+</div>
+        </sidebar>
+
+      <page>
+          <div class="content">
+            
+  <div class="section" id="quantum-gates">
+<h1>Quantum Gates<a class="headerlink" href="#quantum-gates" title="Permalink to this headline">¶</a></h1>
+<p>In quantum computing, gates are used to manipulate quantum registers and
+to implement quantum algorithms.</p>
+<div class="section" id="built-in-gates">
+<h2>Built-In Gates<a class="headerlink" href="#built-in-gates" title="Permalink to this headline">¶</a></h2>
+<p>There are a number of gates built into QCGPU. They can all be applied
+the same way:</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
+
+<span class="n">state</span><span class="o">.</span><span class="n">h</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># Applies the Hadamard (H) gate to the first qubit.</span>
+<span class="n">state</span><span class="o">.</span><span class="n">x</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># Applies a pauli-x (NOT) gate to the second qubit.</span>
+</pre></div>
+</div>
+<p><code class="docutils literal notranslate"><span class="pre">h</span></code> and <code class="docutils literal notranslate"><span class="pre">x</span></code> can be replaced with any of the following:</p>
+<ul class="simple">
+<li>The Hadamard gate: <strong>h</strong> - <code class="docutils literal notranslate"><span class="pre">state.h(0)</span></code></li>
+<li>The S gate: <strong>s</strong> - <code class="docutils literal notranslate"><span class="pre">state.s(0)</span></code></li>
+<li>The T gate: <strong>t</strong> - <code class="docutils literal notranslate"><span class="pre">state.t(0)</span></code></li>
+<li>The Pauli-X / NOT gate: <strong>x</strong> - <code class="docutils literal notranslate"><span class="pre">state.x(0)</span></code></li>
+<li>The Pauli-Y gate: <strong>y</strong> - <code class="docutils literal notranslate"><span class="pre">state.y(0)</span></code></li>
+<li>The Pauli-Z gate: <strong>z</strong> - <code class="docutils literal notranslate"><span class="pre">state.z(0)</span></code></li>
+<li>The CNOT gate: <strong>cx</strong> -
+<code class="docutils literal notranslate"><span class="pre">state.cx(0,</span> <span class="pre">1)</span> <span class="pre">#</span> <span class="pre">CNOT</span> <span class="pre">with</span> <span class="pre">control</span> <span class="pre">=</span> <span class="pre">0,</span> <span class="pre">target</span> <span class="pre">=</span> <span class="pre">1</span></code></li>
+<li>The SWAP gate: <strong>swap</strong> -
+<code class="docutils literal notranslate"><span class="pre">state.swap(0,1)</span> <span class="pre">#</span> <span class="pre">Swaps</span> <span class="pre">the</span> <span class="pre">0th</span> <span class="pre">and</span> <span class="pre">1st</span> <span class="pre">qubit</span></code></li>
+<li>The Toffoli gate: <strong>toffoli</strong> -
+<code class="docutils literal notranslate"><span class="pre">state.toffoli(0,</span> <span class="pre">1,</span> <span class="pre">2)</span> <span class="pre">#</span> <span class="pre">Toffoli</span> <span class="pre">with</span> <span class="pre">controls</span> <span class="pre">=</span> <span class="pre">(0,</span> <span class="pre">1),</span> <span class="pre">target</span> <span class="pre">=</span> <span class="pre">2</span></code></li>
+</ul>
+<p>These are all shorthand methods for the application of arbitrary gates.
+For example, the application of a Hadamard gate above is shorthand for</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">h</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">gate</span><span class="o">.</span><span class="n">h</span><span class="p">()</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+<span class="n">register</span><span class="o">.</span><span class="n">apply_gate</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>You can also use any of the gates as controlled gates. For example, the
+application of the CNOT gate above is shorthand for</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">x</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">gate</span><span class="o">.</span><span class="n">x</span><span class="p">()</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+<span class="n">register</span><span class="o">.</span><span class="n">apply_controlled_gate</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="applying-a-gate-to-a-whole-register">
+<h2>Applying A Gate To A Whole Register<a class="headerlink" href="#applying-a-gate-to-a-whole-register" title="Permalink to this headline">¶</a></h2>
+<p>There is a convenience method to apply a gate to every qubit in the register.
+The following applies a Hadamard gate to the whole register,</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">h</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">gate</span><span class="o">.</span><span class="n">h</span><span class="p">()</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+<span class="n">register</span><span class="o">.</span><span class="n">apply_all</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="user-defined-gates">
+<h2>User Defined Gates<a class="headerlink" href="#user-defined-gates" title="Permalink to this headline">¶</a></h2>
+<p>Gates in QCGPU are represented by the <code class="docutils literal notranslate"><span class="pre">qcgpu.Gate</span></code> class.</p>
+<p>The only gates that can be defined by the user are single qubit gates.</p>
+<p>The process of creating a gate is</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<span class="n">gate_matrix</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span>
+    <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
+    <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="mi">1</span><span class="n">j</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="mi">4</span><span class="p">)]</span>
+<span class="p">])</span>
+
+<span class="n">gate</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">Gate</span><span class="p">(</span><span class="n">gate_matrix</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>The input to the <code class="docutils literal notranslate"><span class="pre">Gate</span></code> constructor is checked to be a 2x2 unitary
+matrix.</p>
+<p>This newly created gate can then be applied the long hand way,</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
+<span class="n">register</span><span class="o">.</span><span class="n">apply_gate</span><span class="p">(</span><span class="n">gate</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+          <div class="page-nav">
+            <div class="inner">
+  <span class="prev">
+    <a href="registers.html"
+       title="previous chapter">← Quantum Registers</a>
+  </span>
+  <span class="next">
+    <a href="operations.html"
+       title="next chapter">Quantum Operations →</a>
+  </span>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
+            </div>
+          </div>
+      </page>
+  </div></body>
+</html>

+ 11 - 6
genindex.html

@@ -60,7 +60,8 @@
   <div class="sidebar-group">
     <ul>
 <li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="guide.html">User Guide</a></li>
 </ul>
 
   </div>
@@ -81,11 +82,15 @@
           </div>
           <div class="page-nav">
             <div class="inner">
-<div class="footer" role="contentinfo">
-      &#169; Copyright 2018, Adam Kelly.
-    <br>
-    Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.1 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a>.
-</div>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
             </div>
           </div>
       </page>

+ 131 - 0
guide.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html >
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+      <title>User Guide</title>
+    
+      <link rel="stylesheet" href="_static/pygments.css">
+      <link rel="stylesheet" href="_static/theme.css">
+      
+      <script src="_static/theme-vendors.js"></script>
+      <script src="_static/theme.js" defer></script>
+    
+  <link rel="index" title="Index" href="genindex.html" />
+  <link rel="search" title="Search" href="search.html" />
+  <link rel="next" title="Quantum Registers" href="registers.html" />
+  <link rel="prev" title="Getting Started" href="quickstart.html" /> 
+  </head>
+
+  <body><div id="app" class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
+  <router-link to="index.html" class="home-link">
+    <span class="site-name">QCGPU</span>
+  </router-link>
+
+  <div class="links">
+    <navlinks class="can-hide">
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link  router-link-active">
+       None
+    </a>
+  </div>
+
+
+
+    </navlinks>
+  </div>
+</navbar>
+
+      
+      <div class="sidebar-mask" @click="toggleSidebar(false)">
+      </div>
+        <sidebar @toggle-sidebar="toggleSidebar">
+          
+          <navlinks>
+            
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link  router-link-active">
+       None
+    </a>
+  </div>
+
+
+
+            
+          </navlinks><div class="sidebar-links" role="navigation" aria-label="main navigation">
+  
+  <div class="sidebar-group">
+    <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">User Guide</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="registers.html">Quantum Registers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gates.html">Quantum Gates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operations.html">Quantum Operations</a></li>
+</ul>
+</li>
+</ul>
+
+  </div>
+</div>
+        </sidebar>
+
+      <page>
+          <div class="content">
+            
+  <div class="section" id="user-guide">
+<h1>User Guide<a class="headerlink" href="#user-guide" title="Permalink to this headline">¶</a></h1>
+<p>This section covers the full usage of QCGPU.
+It will also contain some information about what each part represents.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="registers.html">Quantum Registers</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="registers.html#using-the-state-class">Using the <code class="docutils literal notranslate"><span class="pre">State</span></code> class</a></li>
+<li class="toctree-l2"><a class="reference internal" href="registers.html#mathematical-description">Mathematical Description</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="gates.html">Quantum Gates</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="gates.html#built-in-gates">Built-In Gates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gates.html#applying-a-gate-to-a-whole-register">Applying A Gate To A Whole Register</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gates.html#user-defined-gates">User Defined Gates</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="operations.html">Quantum Operations</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="operations.html#measurement">Measurement</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operations.html#probability">Probability</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+          <div class="page-nav">
+            <div class="inner">
+  <span class="prev">
+    <a href="quickstart.html"
+       title="previous chapter">← Getting Started</a>
+  </span>
+  <span class="next">
+    <a href="registers.html"
+       title="next chapter">Quantum Registers →</a>
+  </span>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
+            </div>
+          </div>
+      </page>
+  </div></body>
+</html>

+ 33 - 9
index.html

@@ -60,7 +60,8 @@
   <div class="sidebar-group">
     <ul>
 <li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="guide.html">User Guide</a></li>
 </ul>
 
   </div>
@@ -81,9 +82,8 @@ quantum circuits.
 It takes advantage of hardware acceleration with
 OpenCL.
 Read the <a class="reference external" href="https://arxiv.org/abs/1805.00988">research paper</a>.</p>
-</div>
 <div class="section" id="table-of-contents">
-<h1>Table of Contents<a class="headerlink" href="#table-of-contents" title="Permalink to this headline">¶</a></h1>
+<h2>Table of Contents<a class="headerlink" href="#table-of-contents" title="Permalink to this headline">¶</a></h2>
 <div class="toctree-wrapper compound">
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a><ul>
@@ -92,10 +92,30 @@ Read the <a class="reference external" href="https://arxiv.org/abs/1805.00988">r
 <li class="toctree-l2"><a class="reference internal" href="install.html#installing-from-source">Installing from Source</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="guide.html">User Guide</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="registers.html">Quantum Registers</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="registers.html#using-the-state-class">Using the <code class="docutils literal notranslate"><span class="pre">State</span></code> class</a></li>
+<li class="toctree-l3"><a class="reference internal" href="registers.html#mathematical-description">Mathematical Description</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="gates.html">Quantum Gates</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="gates.html#built-in-gates">Built-In Gates</a></li>
+<li class="toctree-l3"><a class="reference internal" href="gates.html#applying-a-gate-to-a-whole-register">Applying A Gate To A Whole Register</a></li>
+<li class="toctree-l3"><a class="reference internal" href="gates.html#user-defined-gates">User Defined Gates</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="operations.html">Quantum Operations</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="operations.html#measurement">Measurement</a></li>
+<li class="toctree-l3"><a class="reference internal" href="operations.html#probability">Probability</a></li>
+</ul>
+</li>
+</ul>
+</li>
 </ul>
 </div>
 </div>
+</div>
 
 
           </div>
@@ -105,11 +125,15 @@ Read the <a class="reference external" href="https://arxiv.org/abs/1805.00988">r
     <a href="install.html"
        title="next chapter">Installation →</a>
   </span>
-<div class="footer" role="contentinfo">
-      &#169; Copyright 2018, Adam Kelly.
-    <br>
-    Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.1 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a>.
-</div>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
             </div>
           </div>
       </page>

+ 11 - 6
install.html

@@ -66,7 +66,8 @@
 <li class="toctree-l2"><a class="reference internal" href="#installing-from-source">Installing from Source</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="guide.html">User Guide</a></li>
 </ul>
 
   </div>
@@ -124,11 +125,15 @@ requirements.</p>
     <a href="quickstart.html"
        title="next chapter">Getting Started →</a>
   </span>
-<div class="footer" role="contentinfo">
-      &#169; Copyright 2018, Adam Kelly.
-    <br>
-    Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.1 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a>.
-</div>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
             </div>
           </div>
       </page>

BIN
objects.inv


+ 158 - 0
operations.html

@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html >
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+      <title>Quantum Operations</title>
+    
+      <link rel="stylesheet" href="_static/pygments.css">
+      <link rel="stylesheet" href="_static/theme.css">
+      
+      <script src="_static/theme-vendors.js"></script>
+      <script src="_static/theme.js" defer></script>
+    
+  <link rel="index" title="Index" href="genindex.html" />
+  <link rel="search" title="Search" href="search.html" />
+  <link rel="prev" title="Quantum Gates" href="gates.html" /> 
+  </head>
+
+  <body><div id="app" class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
+  <router-link to="index.html" class="home-link">
+    <span class="site-name">QCGPU</span>
+  </router-link>
+
+  <div class="links">
+    <navlinks class="can-hide">
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link ">
+       None
+    </a>
+  </div>
+
+
+
+    </navlinks>
+  </div>
+</navbar>
+
+      
+      <div class="sidebar-mask" @click="toggleSidebar(false)">
+      </div>
+        <sidebar @toggle-sidebar="toggleSidebar">
+          
+          <navlinks>
+            
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link ">
+       None
+    </a>
+  </div>
+
+
+
+            
+          </navlinks><div class="sidebar-links" role="navigation" aria-label="main navigation">
+  
+  <div class="sidebar-group">
+    <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="guide.html">User Guide</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="registers.html">Quantum Registers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gates.html">Quantum Gates</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Quantum Operations</a></li>
+</ul>
+</li>
+</ul>
+
+  </div>
+</div>
+        </sidebar>
+
+      <page>
+          <div class="content">
+            
+  <div class="section" id="quantum-operations">
+<h1>Quantum Operations<a class="headerlink" href="#quantum-operations" title="Permalink to this headline">¶</a></h1>
+<p>There are a number of operations you can perform on quantum registers
+with QCGPU.</p>
+<div class="section" id="measurement">
+<h2>Measurement<a class="headerlink" href="#measurement" title="Permalink to this headline">¶</a></h2>
+<p>Measurement of a register in QCGPU doesn’t collapse the state (although
+this may be added in the future). When you measure the state, you can
+specify the number of times to sample. The output of this <code class="docutils literal notranslate"><span class="pre">measure</span></code>
+function is a dictionary with the bitstrings of the outputs, along with
+the number of times they were measured.</p>
+<p>You can measure a register as follows,</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+
+<span class="n">register</span><span class="o">.</span><span class="n">measure</span><span class="p">(</span><span class="n">samples</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
+<span class="c1"># {&#39;00000&#39;: 1000}</span>
+</pre></div>
+</div>
+<p>There is also a convenience method to measure only a single qubit.
+Again, the state is not collapsed</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+
+<span class="n">register</span><span class="o">.</span><span class="n">h</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+<span class="n">register</span><span class="o">.</span><span class="n">measure_qubit</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
+<span class="c1"># {&#39;1&#39;: 523, &#39;0&#39;: 477}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="probability">
+<h2>Probability<a class="headerlink" href="#probability" title="Permalink to this headline">¶</a></h2>
+<p>QCGPU provides another method for getting the probability of each
+outcome.</p>
+<p>The probability of getting an outcome <span class="math notranslate nohighlight">\(j\)</span> from a state
+<span class="math notranslate nohighlight">\(\lvert \psi \rangle = \sum_{j = 0}^{2^n - 1} \alpha_j \lvert j \rangle\)</span>
+is</p>
+<div class="math notranslate nohighlight">
+\[P(j) = \lvert \alpha_j \lvert^2\]</div>
+<p>The method <code class="docutils literal notranslate"><span class="pre">probabilities</span></code> returns a numpy array with each of the
+values corresponding to <span class="math notranslate nohighlight">\(\lvert \alpha_j \lvert ^2\)</span> for each index
+<span class="math notranslate nohighlight">\(j\)</span>.</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="n">register</span><span class="o">.</span><span class="n">h</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+<span class="n">register</span><span class="o">.</span><span class="n">probabilities</span><span class="p">()</span> <span class="c1"># [0.5, 0.5]</span>
+</pre></div>
+</div>
+<p>This method is particularly useful to plot the probabilities of each
+outcome.</p>
+</div>
+</div>
+
+
+          </div>
+          <div class="page-nav">
+            <div class="inner">
+  <span class="prev">
+    <a href="gates.html"
+       title="previous chapter">← Quantum Gates</a>
+  </span>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
+            </div>
+          </div>
+      </page>
+  </div></body>
+</html>

+ 18 - 6
quickstart.html

@@ -13,6 +13,7 @@
     
   <link rel="index" title="Index" href="genindex.html" />
   <link rel="search" title="Search" href="search.html" />
+  <link rel="next" title="User Guide" href="guide.html" />
   <link rel="prev" title="Installation" href="install.html" /> 
   </head>
 
@@ -60,7 +61,8 @@
   <div class="sidebar-group">
     <ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
-<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting started</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="guide.html">User Guide</a></li>
 </ul>
 
   </div>
@@ -103,6 +105,8 @@ along with how often they occurred.</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="s1">&#39;00&#39;</span><span class="p">:</span> <span class="mi">486</span><span class="p">,</span> <span class="s1">&#39;11&#39;</span><span class="p">:</span> <span class="mi">514</span><span class="p">}</span>
 </pre></div>
 </div>
+<p>There are a few different ways to do things using QCGPU,
+so you should check out the rest of the documentation too</p>
 </div>
 
 
@@ -113,11 +117,19 @@ along with how often they occurred.</p>
     <a href="install.html"
        title="previous chapter">← Installation</a>
   </span>
-<div class="footer" role="contentinfo">
-      &#169; Copyright 2018, Adam Kelly.
-    <br>
-    Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.1 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a>.
-</div>
+  <span class="next">
+    <a href="guide.html"
+       title="next chapter">User Guide →</a>
+  </span>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
             </div>
           </div>
       </page>

+ 140 - 0
registers.html

@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html >
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+      <title>Quantum Registers</title>
+    
+      <link rel="stylesheet" href="_static/pygments.css">
+      <link rel="stylesheet" href="_static/theme.css">
+      
+      <script src="_static/theme-vendors.js"></script>
+      <script src="_static/theme.js" defer></script>
+    
+  <link rel="index" title="Index" href="genindex.html" />
+  <link rel="search" title="Search" href="search.html" />
+  <link rel="next" title="Quantum Gates" href="gates.html" />
+  <link rel="prev" title="User Guide" href="guide.html" /> 
+  </head>
+
+  <body><div id="app" class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
+  <router-link to="index.html" class="home-link">
+    <span class="site-name">QCGPU</span>
+  </router-link>
+
+  <div class="links">
+    <navlinks class="can-hide">
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link ">
+       None
+    </a>
+  </div>
+
+
+
+    </navlinks>
+  </div>
+</navbar>
+
+      
+      <div class="sidebar-mask" @click="toggleSidebar(false)">
+      </div>
+        <sidebar @toggle-sidebar="toggleSidebar">
+          
+          <navlinks>
+            
+
+  <div class="nav-item">
+    <a href="install.html"
+       class="nav-link ">
+       None
+    </a>
+  </div>
+
+
+
+            
+          </navlinks><div class="sidebar-links" role="navigation" aria-label="main navigation">
+  
+  <div class="sidebar-group">
+    <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="guide.html">User Guide</a><ul class="current">
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Quantum Registers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="gates.html">Quantum Gates</a></li>
+<li class="toctree-l2"><a class="reference internal" href="operations.html">Quantum Operations</a></li>
+</ul>
+</li>
+</ul>
+
+  </div>
+</div>
+        </sidebar>
+
+      <page>
+          <div class="content">
+            
+  <div class="section" id="quantum-registers">
+<h1>Quantum Registers<a class="headerlink" href="#quantum-registers" title="Permalink to this headline">¶</a></h1>
+<p>QCGPU provides a class to represent the register, <code class="docutils literal notranslate"><span class="pre">qcgpu.State</span></code>. The
+register class stores (on the OpenCL device) a state vector. This state
+vector is a chunk of memory, the size of which is:</p>
+<div class="math notranslate nohighlight">
+\[64 \cdot 2^n \text{ bits}.\]</div>
+<p>This means you would need just 2kb of memory to have a 5 qubit register,
+a 30 qubit register would take up 9gb of memory.</p>
+<p>This is something to be aware of, as the state vector must fit in the
+memory of the device you wish to use.</p>
+<div class="section" id="using-the-state-class">
+<h2>Using the <code class="docutils literal notranslate"><span class="pre">State</span></code> class<a class="headerlink" href="#using-the-state-class" title="Permalink to this headline">¶</a></h2>
+<p>To create a new register, you can use</p>
+<div class="code python highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">qcgpu</span>
+
+<span class="n">register</span> <span class="o">=</span> <span class="n">qcgpu</span><span class="o">.</span><span class="n">State</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This will create a 5 qubit register.</p>
+<p>When you run this, you may be prompted to choose a device. This is
+normal, as you can have more than 1 device that supports OpenCL in your
+computer. Just choose the one you want.</p>
+</div>
+<div class="section" id="mathematical-description">
+<h2>Mathematical Description<a class="headerlink" href="#mathematical-description" title="Permalink to this headline">¶</a></h2>
+<p>This class represents a state vector <span class="math notranslate nohighlight">\(\lvert \psi \rangle\)</span> with</p>
+<div class="math notranslate nohighlight">
+\[\lvert \psi \rangle = \sum_{j = 0}^{2^n - 1} \alpha_j \lvert j \rangle\]</div>
+<p>where <span class="math notranslate nohighlight">\(n\)</span> is the number of qubits, <span class="math notranslate nohighlight">\(\alpha_j\)</span> is the
+amplitude and the state is <span class="math notranslate nohighlight">\(j\)</span> runs overall <span class="math notranslate nohighlight">\(2^n\)</span> basis
+states.</p>
+</div>
+</div>
+
+
+          </div>
+          <div class="page-nav">
+            <div class="inner">
+  <span class="prev">
+    <a href="guide.html"
+       title="previous chapter">← User Guide</a>
+  </span>
+  <span class="next">
+    <a href="gates.html"
+       title="next chapter">Quantum Gates →</a>
+  </span>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
+            </div>
+          </div>
+      </page>
+  </div></body>
+</html>

+ 11 - 6
search.html

@@ -68,7 +68,8 @@
   <div class="sidebar-group">
     <ul>
 <li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
-<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="guide.html">User Guide</a></li>
 </ul>
 
   </div>
@@ -105,11 +106,15 @@
           </div>
           <div class="page-nav">
             <div class="inner">
-<div class="footer" role="contentinfo">
-      &#169; Copyright 2018, Adam Kelly.
-    <br>
-    Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.1 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a>.
-</div>
+<script type="text/x-mathjax-config">
+    MathJax.Hub.Config({
+      tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$', '$$'], ['\\[', '\\]']]}
+    });
+    </script>
+
+<script type="text/javascript"
+   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
+</script>
             </div>
           </div>
       </page>

File diff suppressed because it is too large
+ 1 - 1
searchindex.js