SwiftQuantumComputing
Quantum circuit simulator in Swift
Install / Use
/learn @indisoluble/SwiftQuantumComputingREADME
Quantum circuit simulator in Swift
Usage
Circuit

Check code in Circuit.playground.
Circuit with noise
import SwiftQuantumComputing // for macOS
//: 1. Compose a list of quantum gates & noises
let quantumOperators: [QuantumOperatorConvertible] = [
Gate.hadamard(target: 0),
Noise.bitFlip(probability: 0.35, target: 0),
Gate.phaseShift(radians: 0.25, target: 2),
Noise.phaseDamping(probability: 0.75, target: 2),
Gate.controlled(gate: .hadamard(target: 1), controls: [2, 0]),
Noise.bitFlip(probability: 0.8, target: 1)
]
//: 2. Build a quantum circuit with noise using the list
let circuit = MainNoiseCircuitFactory().makeNoiseCircuit(quantumOperators: quantumOperators)
//: 3. Use the quantum circuit with noise
let result = try circuit.densityMatrix().get()
print("Density matrix: \(result)\n")
print("Probabilities: \(result.probabilities())\n")
Check code in NoiseCircuit.playground.
Performance
~/SwiftQuantumComputing % swift run sqc-measure-performance
Run this application to check the performance of this simulator in your computer. Execute swift run sqc-measure-performance -h to see all available options.
Check code in SQCMeasurePerformance/main.swift.
Algorithms
- Use a genetic algorithm to automatically generate a quantum circuit - Check example in Genetic.playground.
- 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 TwoLevelDecomposition.playground.
Other algorithms
- Euclidean Algorithm: Find greatest common divisor of two integers - Check example in EuclideanAlgorithm.playground.
- Continued Fractions: Find an approximation to a given rational number - Check example in ContinuedFractions.playground.
- Gaussian Elimination: Solve a system of XOR equations - Check example in XorGaussianElimination.playground.
More examples
- Bernstein–Vazirani algorithm - Check code in BernsteinVaziraniAlgorithm.playground.
- Deutsch's algorithm - Check code in DeutschAlgorithm.playground.
- Deutsch-Jozsa algorithm - Check code in DeutschJozsaAlgorithm.playground.
- Grover's algorithm - Check code in GroverAlgorithm.playground.
- Shor's Algorithm - Check code in ShorAlgorithm.playground.
- Simon's periodicity algorithm - Check code in SimonPeriodicityAlgorithm.playground.
Documentation
Documentation for the project can be found here.
References
- Amazon Braket Default Simulator
- Automatic Quantum Computer Programming: A Genetic Programming Approach
- Continued Fractions and the Euclidean Algorithm
- Decomposition of unitary matrices and quantum gates
- Decomposition of unitary matrix into quantum gates
- IBM Qiskit
- qHiPSTER: The Quantum High Performance Software Testing Environment
- Quantum Computing for Computer Scientists
- Shor's Quantum Factoring Algorithm
SwiftPM dependencies
- CBLAS-Linux (only for Linux)
- CLapacke-Linux (only for Linux)
- Swift Argument Parser
- Swift Numerics
Linux
This package depends on BLAS & LAPACK if running on Linux, more exactly, Ubuntu.
These dependencies are reflected in Package.swift with:
- CBLAS-Linux, which in turn expects to find:
/usr/include/x86_64-linux-gnu/cblas-netlib.h - CLapacke-Linux, which in turn expects to find:
/usr/include/lapacke.h
So, after installing BLAS & LAPACK (in case they are not already there):
sudo apt-get install libblas-dev liblapacke-dev
Check cblas-netlib.h & lapacke.h are in the expected locations.
Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
