Quantum circuit simulator in Swift
Check code in Circuit.playground.
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.
~/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.
Documentation for the project can be found here.
This package depends on BLAS & LAPACK if running on Linux, more exactly, Ubuntu.
These dependencies are reflected in Package.swift
with:
/usr/include/x86_64-linux-gnu/cblas-netlib.h
/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.