docs
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
<!DOCTYPE html> <html lang="en"> <head> <title>README Reference</title> <link rel="stylesheet" type="text/css" href="css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="css/highlight.css" /> <meta charset="utf-8"> <script src="js/jquery.min.js" defer></script> <script src="js/jazzy.js" defer></script> <script src="js/lunr.min.js" defer></script> <script src="js/typeahead.jquery.js" defer></script> <script src="js/jazzy.search.js" defer></script> </head> <body> <a title="README Reference"></a> <header class="header"> <p class="header-col header-col--primary"> <a class="header-link" href="index.html"> Docs </a> (98% documented) </p> <p class="header-col--secondary"> <form role="search" action="search.json"> <input type="text" placeholder="Search documentation" data-typeahead> </form> </p> </header> <p class="breadcrumbs"> <a class="breadcrumb" href="index.html"> Reference</a> <img class="carat" src="img/carat.png" /> README Reference </p> <div class="content-wrapper"> <nav class="navigation"> <ul class="nav-groups"> <li class="nav-group-name"> <a class="nav-group-name-link" href="Guides.html">Guides</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a class="nav-group-task-link" href="readme.html">README</a> </li> </ul> </li> <li class="nav-group-name"> <a class="nav-group-name-link" href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/DecomposeGatesError.html">DecomposeGatesError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/DensityMatrixError.html">DensityMatrixError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/DrawCircuitError.html">DrawCircuitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/EvolveCircuitError.html">EvolveCircuitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/GateError.html">GateError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/GroupedProbabilitiesError.html">GroupedProbabilitiesError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/MakeDensityMatrixError.html">MakeDensityMatrixError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/MakeStatevectorBitsError.html">MakeStatevectorBitsError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/MakeStatevectorError.html">MakeStatevectorError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/NoiseError.html">NoiseError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/QuantumOperatorError.html">QuantumOperatorError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/SimplifiedGate.html">SimplifiedGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/SimplifiedNoise.html">SimplifiedNoise</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/SimplifiedQuantumOperator.html">SimplifiedQuantumOperator</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/StatevectorError.html">StatevectorError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/SummarizedProbabilitiesError.html">SummarizedProbabilitiesError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Enums/UnitaryError.html">UnitaryError</a> </li> </ul> </li> <li class="nav-group-name"> <a class="nav-group-name-link" href="Extensions.html">Extensions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a class="nav-group-task-link" href="Extensions/Array.html">Array</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Extensions/Double.html">Double</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Extensions/Int.html">Int</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Extensions/Int/DivisionType.html">– DivisionType</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Extensions/String.html">String</a> </li> </ul> </li> <li class="nav-group-name"> <a class="nav-group-name-link" href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/Circuit.html">Circuit</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/CircuitDensityMatrix.html">CircuitDensityMatrix</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/CircuitDensityMatrixFactory.html">CircuitDensityMatrixFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/CircuitFactory.html">CircuitFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/CircuitProbabilities.html">CircuitProbabilities</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/CircuitStatevector.html">CircuitStatevector</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/CircuitStatevectorFactory.html">CircuitStatevectorFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/ConfigurableGate.html">ConfigurableGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/Drawable.html">Drawable</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/DrawerFactory.html">DrawerFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/GeneticFactory.html">GeneticFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/NoiseCircuit.html">NoiseCircuit</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/NoiseCircuitFactory.html">NoiseCircuitFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/QuantumOperatorConvertible.html">QuantumOperatorConvertible</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/SimplifiedGateConvertible.html">SimplifiedGateConvertible</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/SimplifiedNoiseConvertible.html">SimplifiedNoiseConvertible</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/SimplifiedQuantumOperatorConvertible.html">SimplifiedQuantumOperatorConvertible</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/TwoLevelDecompositionSolver.html">TwoLevelDecompositionSolver</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/TwoLevelDecompositionSolverFactory.html">TwoLevelDecompositionSolverFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/XorGaussianEliminationSolver.html">XorGaussianEliminationSolver</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Protocols/XorGaussianEliminationSolverFactory.html">XorGaussianEliminationSolverFactory</a> </li> </ul> </li> <li class="nav-group-name"> <a class="nav-group-name-link" href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/ContinuedFractionsSolver.html">ContinuedFractionsSolver</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/ContinuedFractionsSolver/FindApproximationError.html">– FindApproximationError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/ControlledGate.html">ControlledGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/ControlledGate/InitError.html">– InitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/EuclideanSolver.html">EuclideanSolver</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Gate.html">Gate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Gate/MakeInversionAboutMeanError.html">– MakeInversionAboutMeanError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Gate/MakeModularExponentiationError.html">– MakeModularExponentiationError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Gate/MakeQuantumFourierTransformError.html">– MakeQuantumFourierTransformError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Gate/Axis.html">– Axis</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/GeneticConfiguration.html">GeneticConfiguration</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/GeneticConfiguration/InitError.html">– InitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/GeneticUseCase.html">GeneticUseCase</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/GeneticUseCase/InitError.html">– InitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/GeneticUseCase/TruthTable.html">– TruthTable</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/GeneticUseCase/Circuit.html">– Circuit</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/HadamardGate.html">HadamardGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainCircuitDensityMatrixFactory.html">MainCircuitDensityMatrixFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainCircuitFactory.html">MainCircuitFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainCircuitFactory/UnitaryConfiguration.html">– UnitaryConfiguration</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainCircuitFactory/StatevectorConfiguration.html">– StatevectorConfiguration</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainCircuitStatevectorFactory.html">MainCircuitStatevectorFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainDrawerFactory.html">MainDrawerFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainGeneticFactory.html">MainGeneticFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainNoiseCircuitFactory.html">MainNoiseCircuitFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainNoiseCircuitFactory/DensityMatrixConfiguration.html">– DensityMatrixConfiguration</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainTwoLevelDecompositionSolverFactory.html">MainTwoLevelDecompositionSolverFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainTwoLevelDecompositionSolverFactory/SingleQubitGateDecomposition.html">– SingleQubitGateDecomposition</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MainXorGaussianEliminationSolverFactory.html">MainXorGaussianEliminationSolverFactory</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Matrix.html">Matrix</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Matrix/InitError.html">– InitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MatrixGate.html">MatrixGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/MatrixGate/InitError.html">– InitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Noise.html">Noise</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/NotGate.html">NotGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/OracleGate.html">OracleGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/OracleGate/InitError.html">– InitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/PhaseShiftGate.html">PhaseShiftGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/QuantumOperator.html">QuantumOperator</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Rational.html">Rational</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Rational/InitError.html">– InitError</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/RotationGate.html">RotationGate</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Vector.html">Vector</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Structs/Vector/InitError.html">– InitError</a> </li> </ul> </li> <li class="nav-group-name"> <a class="nav-group-name-link" href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a class="nav-group-task-link" href="Typealiases.html#/SQCView">SQCView</a> </li> <li class="nav-group-task"> <a class="nav-group-task-link" href="Typealiases.html#/s:21SwiftQuantumComputing7SQCViewa">SQCView</a> </li> </ul> </li> </ul> </nav> <article class="main-content"> <section class="section"> <div class="section-content top-matter"> <h1 id='quantum-circuit-simulator-in-swift' class='heading'>Quantum circuit simulator in Swift</h1> <p><a href="https://github.com/indisoluble/SwiftQuantumComputing/actions?query=branch%3Amaster"><img src="https://github.com/indisoluble/SwiftQuantumComputing/workflows/build/badge.svg?branch=master" alt="CI Status"></a> <a href="https://codecov.io/gh/indisoluble/SwiftQuantumComputing"><img src="https://codecov.io/gh/indisoluble/SwiftQuantumComputing/branch/master/graph/badge.svg" alt="codecov"></a> <img src="https://img.shields.io/badge/platform-iOS%20%7C%20macOS%20%7C%20Linux-lightgrey.svg" alt="platforms"> <a href="https://indisoluble.github.io/SwiftQuantumComputing"><img src="https://indisoluble.github.io/SwiftQuantumComputing/badge.svg" alt="Documentation"></a></p> <h2 id='usage' class='heading'>Usage</h2> <h3 id='circuit' class='heading'>Circuit</h3> <p><img src="https://raw.githubusercontent.com/indisoluble/SwiftQuantumComputing/master/Images/Usage.jpg" alt="Usage"></p> <p>Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Usage/Circuit.playground/Contents.swift">Circuit.playground</a>.</p> <h3 id='circuit-with-noise' class='heading'>Circuit with noise</h3> <pre class="highlight swift"><code><span class="kd">import</span> <span class="kt">SwiftQuantumComputing</span> <span class="c1">// for macOS</span> <span class="c1">//: 1. Compose a list of quantum gates & noises</span> <span class="k">let</span> <span class="nv">quantumOperators</span><span class="p">:</span> <span class="p">[</span><span class="kt">QuantumOperatorConvertible</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span> <span class="kt">Gate</span><span class="o">.</span><span class="nf">hadamard</span><span class="p">(</span><span class="nv">target</span><span class="p">:</span> <span class="mi">0</span><span class="p">),</span> <span class="kt">Noise</span><span class="o">.</span><span class="nf">bitFlip</span><span class="p">(</span><span class="nv">probability</span><span class="p">:</span> <span class="mf">0.35</span><span class="p">,</span> <span class="nv">target</span><span class="p">:</span> <span class="mi">0</span><span class="p">),</span> <span class="kt">Gate</span><span class="o">.</span><span class="nf">phaseShift</span><span class="p">(</span><span class="nv">radians</span><span class="p">:</span> <span class="mf">0.25</span><span class="p">,</span> <span class="nv">target</span><span class="p">:</span> <span class="mi">2</span><span class="p">),</span> <span class="kt">Noise</span><span class="o">.</span><span class="nf">phaseDamping</span><span class="p">(</span><span class="nv">probability</span><span class="p">:</span> <span class="mf">0.75</span><span class="p">,</span> <span class="nv">target</span><span class="p">:</span> <span class="mi">2</span><span class="p">),</span> <span class="kt">Gate</span><span class="o">.</span><span class="nf">controlled</span><span class="p">(</span><span class="nv">gate</span><span class="p">:</span> <span class="o">.</span><span class="nf">hadamard</span><span class="p">(</span><span class="nv">target</span><span class="p">:</span> <span class="mi">1</span><span class="p">),</span> <span class="nv">controls</span><span class="p">:</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">]),</span> <span class="kt">Noise</span><span class="o">.</span><span class="nf">bitFlip</span><span class="p">(</span><span class="nv">probability</span><span class="p">:</span> <span class="mf">0.8</span><span class="p">,</span> <span class="nv">target</span><span class="p">:</span> <span class="mi">1</span><span class="p">)</span> <span class="p">]</span> <span class="c1">//: 2. Build a quantum circuit with noise using the list</span> <span class="k">let</span> <span class="nv">circuit</span> <span class="o">=</span> <span class="kt">MainNoiseCircuitFactory</span><span class="p">()</span><span class="o">.</span><span class="nf">makeNoiseCircuit</span><span class="p">(</span><span class="nv">quantumOperators</span><span class="p">:</span> <span class="n">quantumOperators</span><span class="p">)</span> <span class="c1">//: 3. Use the quantum circuit with noise</span> <span class="k">let</span> <span class="nv">result</span> <span class="o">=</span> <span class="k">try</span> <span class="n">circuit</span><span class="o">.</span><span class="nf">densityMatrix</span><span class="p">()</span><span class="o">.</span><span class="nf">get</span><span class="p">()</span> <span class="nf">print</span><span class="p">(</span><span class="s">"Density matrix: </span><span class="se">\(</span><span class="n">result</span><span class="se">)\n</span><span class="s">"</span><span class="p">)</span> <span class="nf">print</span><span class="p">(</span><span class="s">"Probabilities: </span><span class="se">\(</span><span class="n">result</span><span class="o">.</span><span class="nf">probabilities</span><span class="p">()</span><span class="se">)\n</span><span class="s">"</span><span class="p">)</span> </code></pre> <p>Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Usage/NoiseCircuit.playground/Contents.swift">NoiseCircuit.playground</a>.</p> <h2 id='performance' class='heading'>Performance</h2> <pre class="highlight shell"><code>~/SwiftQuantumComputing % swift run sqc-measure-performance </code></pre> <p>Run this application to check the performance of this simulator in your computer. Execute <code>swift run sqc-measure-performance -h</code> to see all available options.</p> <p>Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Sources/SQCMeasurePerformance/main.swift">SQCMeasurePerformance/main.swift</a>.</p> <h2 id='algorithms' class='heading'>Algorithms</h2> <ul> <li>Use a genetic algorithm to automatically generate a quantum circuit - Check example in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Usage/Genetic.playground/Contents.swift">Genetic.playground</a>.</li> <li>Two-level decomposition: Decompose any gate into an equivalent sequence of not gates and fully controlled phase shifts, z-rotations, y-rotations & not gates - Check example in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Usage/TwoLevelDecomposition.playground/Contents.swift">TwoLevelDecomposition.playground</a>.</li> </ul> <h2 id='other-algorithms' class='heading'>Other algorithms</h2> <ul> <li>Euclidean Algorithm: Find greatest common divisor of two integers - Check example in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Usage/EuclideanAlgorithm.playground/Contents.swift">EuclideanAlgorithm.playground</a>.</li> <li>Continued Fractions: Find an approximation to a given rational number - Check example in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Usage/ContinuedFractions.playground/Contents.swift">ContinuedFractions.playground</a>.</li> <li>Gaussian Elimination: Solve a system of XOR equations - Check example in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Usage/XorGaussianElimination.playground/Contents.swift">XorGaussianElimination.playground</a>.</li> </ul> <h2 id='more-examples' class='heading'>More examples</h2> <ul> <li>Bernstein–Vazirani algorithm - Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Example/BernsteinVaziraniAlgorithm.playground/Contents.swift">BernsteinVaziraniAlgorithm.playground</a>.</li> <li>Deutsch’s algorithm - Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Example/DeutschAlgorithm.playground/Contents.swift">DeutschAlgorithm.playground</a>.</li> <li>Deutsch-Jozsa algorithm - Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Example/DeutschJozsaAlgorithm.playground/Contents.swift">DeutschJozsaAlgorithm.playground</a>.</li> <li>Grover’s algorithm - Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Example/GroverAlgorithm.playground/Contents.swift">GroverAlgorithm.playground</a>.</li> <li>Shor’s Algorithm - Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Example/ShorAlgorithm.playground/Contents.swift">ShorAlgorithm.playground</a>.</li> <li>Simon’s periodicity algorithm - Check code in <a href="https://github.com/indisoluble/SwiftQuantumComputing/tree/master/Playground/Example/SimonPeriodicityAlgorithm.playground/Contents.swift">SimonPeriodicityAlgorithm.playground</a>.</li> </ul> <h2 id='documentation' class='heading'>Documentation</h2> <p>Documentation for the project can be found <a href="https://indisoluble.github.io/SwiftQuantumComputing">here</a>.</p> <h2 id='references' class='heading'>References</h2> <ul> <li><a href="https://github.com/aws/amazon-braket-default-simulator-python">Amazon Braket Default Simulator</a></li> <li><a href="https://www.amazon.com/Automatic-Quantum-Computer-Programming-Approach/dp/038736496X">Automatic Quantum Computer Programming: A Genetic Programming Approach</a></li> <li><a href="https://www.math.u-bordeaux.fr/%7Epjaming/M1/exposes/MA2.pdf">Continued Fractions and the Euclidean Algorithm</a></li> <li><a href="https://arxiv.org/abs/1210.7366">Decomposition of unitary matrices and quantum gates</a></li> <li><a href="https://github.com/fedimser/quantum_decomp/blob/master/res/Fedoriaka2019Decomposition.pdf">Decomposition of unitary matrix into quantum gates</a></li> <li><a href="https://github.com/Qiskit/qiskit-terra">IBM Qiskit</a></li> <li><a href="https://arxiv.org/abs/1601.07195">qHiPSTER: The Quantum High Performance Software Testing Environment</a></li> <li><a href="https://www.amazon.com/Quantum-Computing-Computer-Scientists-Yanofsky/dp/0521879965">Quantum Computing for Computer Scientists</a></li> <li><a href="https://arxiv.org/abs/quant-ph/0010034">Shor’s Quantum Factoring Algorithm</a></li> </ul> <h2 id='swiftpm-dependencies' class='heading'>SwiftPM dependencies</h2> <ul> <li><a href="https://github.com/indisoluble/CBLAS-Linux">CBLAS-Linux</a> (only for Linux)</li> <li><a href="https://github.com/indisoluble/CLapacke-Linux">CLapacke-Linux</a> (only for Linux)</li> <li><a href="https://github.com/apple/swift-argument-parser">Swift Argument Parser</a></li> <li><a href="https://github.com/apple/swift-numerics">Swift Numerics</a></li> </ul> <h3 id='linux' class='heading'>Linux</h3> <p>This package depends on <a href="http://www.netlib.org/blas/">BLAS</a> & <a href="http://www.netlib.org/lapack/">LAPACK</a> if running on Linux, more exactly, <a href="https://www.ubuntu.com">Ubuntu</a>.</p> <p>These dependencies are reflected in <code>Package.swift</code> with:</p> <ul> <li><a href="https://github.com/indisoluble/CBLAS-Linux">CBLAS-Linux</a>, which in turn expects to find: <code>/usr/include/x86_64-linux-gnu/cblas-netlib.h</code></li> <li><a href="https://github.com/indisoluble/CLapacke-Linux">CLapacke-Linux</a>, which in turn expects to find: <code>/usr/include/lapacke.h</code></li> </ul> <p>So, after installing <a href="http://www.netlib.org/blas/">BLAS</a> & <a href="http://www.netlib.org/lapack/">LAPACK</a> (in case they are not already there):</p> <pre class="highlight plaintext"><code>sudo apt-get install libblas-dev liblapacke-dev </code></pre> <p>Check <code>cblas-netlib.h</code> & <code>lapacke.h</code> are in the expected locations.</p> </div> </section> </article> </div> <section class="footer"> <p>© 2021 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2021-12-12)</p> <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.13.7</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </body> </div> </html>