All Projects → valvy → miniqubit

valvy / miniqubit

Licence: MIT License
Quantum emulator of the IBM Quantum experience

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
java
68154 projects - #9 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to miniqubit

Quantum-Computing-Collection-Of-Resources
A Well Maintained Repository On Quantum Computing Resources [Code+Theory] Updated Regularly During My Time At IBM, Qubit x Qubit And The Coding School's Introduction To Quantum Computing Course '21
Stars: ✭ 183 (+662.5%)
Mutual labels:  quantum, quantum-mechanics, quantum-computing, ibm
Quantum-Computing-Resources
This repository contains the best resources for learning practical quantum computing. This repository will be updated frequently.
Stars: ✭ 60 (+150%)
Mutual labels:  quantum, quantum-computing, ibm, quantumcomputing
Quantum-Computer-Simulator-with-Algorithms
C++ simulator of quantum registers and quantum algorithms
Stars: ✭ 15 (-37.5%)
Mutual labels:  quantum, quantum-computing, quantum-computer-simulator
Quantum Circuit
Quantum Circuit Simulator implemented in JavaScript
Stars: ✭ 157 (+554.17%)
Mutual labels:  emulator, quantum, quantum-computing
SchrodingerWellPython
2D 3D Time independent FDM Schrodinger equation solver for arbitrary shape of well
Stars: ✭ 21 (-12.5%)
Mutual labels:  quantum, quantum-mechanics
unitaryhack
Rules and information for the 2021 unitaryHACK event hosted by @unitaryfund
Stars: ✭ 16 (-33.33%)
Mutual labels:  quantum, quantum-computing
qibo
A framework for quantum computing with hardware acceleration.
Stars: ✭ 120 (+400%)
Mutual labels:  quantum, quantum-computing
8Q
General Purpose 8 Qubit Optical Quantum Computer
Stars: ✭ 55 (+129.17%)
Mutual labels:  quantum, quantum-computer
QuantumClifford.jl
Clifford circuits, graph states, and other quantum Stabilizer formalism tools.
Stars: ✭ 48 (+100%)
Mutual labels:  quantum-computing, entanglement
TrulyQuantumChess
A game of truly quantum chess, with interference, entanglement, etc.
Stars: ✭ 77 (+220.83%)
Mutual labels:  quantum, entanglement
learn-qc-with-python-and-qsharp
Companion code for Learn Quantum Computing with Python and Q# Book by Dr. Sarah Kaiser and Dr. Chris Granade 💖
Stars: ✭ 62 (+158.33%)
Mutual labels:  quantum, quantum-computing
quantumjava
Samples related to "Quantum Computing for Java Developers"
Stars: ✭ 86 (+258.33%)
Mutual labels:  quantum, quantum-computing
qcl
Quantum Computation Language port from http://tph.tuwien.ac.at/~oemer/qcl.html
Stars: ✭ 29 (+20.83%)
Mutual labels:  quantum, quantum-computing
IonSim.jl
a simple tool for simulating trapped ion systems
Stars: ✭ 46 (+91.67%)
Mutual labels:  quantum, quantum-mechanics
algorithm-zoo
Implementations of algorithms from http://quantumalgorithmzoo.org/
Stars: ✭ 17 (-29.17%)
Mutual labels:  quantum, quantumcomputing
Interlin-q
A Quantum Interconnect Simulator for Distributed Quantum Algorithms
Stars: ✭ 32 (+33.33%)
Mutual labels:  quantum, quantum-computing
Schroedinger
A Schroedinger Equation solver in C++, with flexible basis definition
Stars: ✭ 31 (+29.17%)
Mutual labels:  quantum, quantum-mechanics
QuantumOptics.jl-examples
Examples for QuantumOptics.jl
Stars: ✭ 16 (-33.33%)
Mutual labels:  quantum, quantum-mechanics
UniversalQCompiler
Synthesizing arbitrary quantum computations
Stars: ✭ 53 (+120.83%)
Mutual labels:  quantum-computing, quantum-computer
QuantumResources
A collection of resources for Quantum Computing
Stars: ✭ 43 (+79.17%)
Mutual labels:  quantum, quantum-computing

Miniqbt, a runtime for the IBM Quantum experience

Build Status License: MIT

Introduction

IBM research released a quantum computer accessable in the cloud. MiniQbt is a emulator for the IBM quantum experience, with a generic amount of qubits and classical bits. To contribute to MiniQbt please refer to contributing

installation

The best way of installation is to compile the program from source. For this you need to install the following dependencies. Please consult the individual tools for help.

  1. Eigen3 (Compile from source at the website since some linux distros only have an old version in the repositories)
  2. CMake
  3. Git
  4. Please use for Windows, Visual studio 2015 or later.

For the Python wrapper your need:

  1. Python development libraries
  2. Boost-Python

For the Java wrapper you need:

  1. Java 8

When done create a new build folder and let Cmake unpack everything there. MiniQbt comes with the following options:

Build Option Effect
ENABLE_EMSCRIPTEN Instead of compiling to native code, use Webassembly (Requires emc++ )
ENABLE_TESTS Execute Unit tests
ENABLE_JAVA Build the Java wrapper
ENABLE_PYTHON Build the Python Wrapper

Building in GNU/Linux

# Clone the project.
git clone [email protected]:valvy/miniqubit.git
cd miniqubit
# Create a build directory.
mkdir build
cd build
# Build with only unit tests.
cmake .. -DENABLE_EMSCRIPTEN=OFF -DENABLE_TESTS=ON -DENABLE_JAVA=OFF -DENABLE_PYTHON=OFF
make

Library usage

C++ Sample code

#include <miniqbt/MiniQbt.hpp>
#include <iostream>
#include <vector>

int main(int argc, char** argv){
    using namespace MiniQbt;
    const char* src = 
    "OPENQASM 2.0;              \n"
    "include \"qelib1.inc\";    \n"
    "qreg q[1]; creg c[1];      \n"
    "h q[0];                    \n"
    "measure q[0] -> c[0];      \n";

    QasmAsyncInterpreter interpreter;
    interpreter.interpret(std::string(src));
    while(interpreter.hasErrors()){
        std::cout << interpreter.getError() << "\n";
    }

    QuantumResult result = interpreter.readClassicResult("c");


    std::cout << "result of the algorithm: " << result.dataToString();

    std::cout << "\n";
}

Python Sample code

from PyMiniQbt import QasmAsyncInterpreter

source = "OPENQASM 2.0; include \"qelib1.inc\";  qreg q[1]; creg c[1]; h q[0]; measure q[0] -> c[0];"
interpreter = QasmAsyncInterpreter()
interpreter.interpret(source)
result = interpreter.readClassicResult("c")
while interpreter.hasErrors():
    print(interpreter.getError())
print("result of the algorithm: ")
print(result.dataToString())

JavaScript sample code

"use strict";
const miniqbt = require('./MiniQbt')
// Make sure MiniQbt is properly loaded.
setTimeout(() => {
    console.log("Using : " + miniqbt.NAME + " version "+ miniqbt.VERSION)
    let vm = new miniqbt.QasmAsyncInterpreter()
    vm.interpret("creg cregister[5]; qreg qregister[5];")
    vm.interpret("h qregister;")
    vm.interpret("measure qregister -> cregister;")
    const result = vm.readClassicResult('cregister')
    console.log(result.getName() + " resulted in " + result.dataToString() )

},1000)

Java Sample code

import nl.hvanderheijden.miniqbt.Globals;
import nl.hvanderheijden.miniqbt.QasmAsyncInterpreter;

public class Main {
    public static void main(String[] args) {
        System.out.println(
                String.format("%s version %s",
                        Globals.getName(),
                        Globals.getVersion()
                )
        );
        QasmAsyncInterpreter interpreter = new QasmAsyncInterpreter();
        interpreter.interpret("qreg a[5];");
        interpreter.interpret("creg b[5];");
        interpreter.interpret("h a;");
        interpreter.interpret("measure a -> b;");
        while(interpreter.hasErrors()) {
            System.out.println(interpreter.getError());
        }
        for (String i : interpreter.getRegisters()) {
            QuantumResult result = interpreter.readClassicResult(i);
            System.out.println(result.dataToString());
        }
    }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].