Introduction

Quantum.js Framework

This repository contains a quantum computing framework implemented in TypeScript. The library provides a Circuit class that allows users to create and manipulate quantum circuits using quantum gates. The library also includes static methods to generate random numbers and strings using quantum principles. Also, it includes a method to optimize the QAOA algorithm using the COBYLA optimization algorithm for the Max-Cut problem.

Installation

To use the Quantum.js library in your project, you can install it via npm:

npm i @earlold/quantum.js

Basic Example Usage

import { Circuit } from '@earlold/quantum.js'; // Import the Circuit class from the library
 
// Create a quantum circuit with 3 qubits
const circuit = new Circuit(3);
 
// Apply a Hadamard gate to the first qubit
circuit.h(0);
 
// Apply a CNOT gate with the first qubit as control and the second qubit as target
circuit.cx(0, 1);
 
// Run the circuit
circuit.run();
 
// Measure the qubits
const result = circuit.measure();
 
console.log(result);

Supported Gates

The library supports the following quantum gates, check the table below for the corresponding methods:

GateMethod
Identity (I)i(qubitIndex: number)
Hadamard (H)h(qubitIndex: number)
Pauli-X (X)x(qubitIndex: number)
Pauli-Y (Y)y(qubitIndex: number)
Pauli-Z (Z)z(qubitIndex: number)
T-gatet(qubitIndex: number)
Controlled-X (CNOT)cx(controlIndex: number, targetIndex: number)
Controlled-Zcz(controlIndex: number, targetIndex: number)

Quantum Functions

FunctionsDescription
Circuit.genRandomNumberGenerate a random number using quantum principles
Circuit.genRandomStringGenerate a random string using quantum principles
Circuit.genRandomNumberWithRangeGenerate a random number within a specified range using quantum principles
Circuit.teleportationOneToTreeTeleportation of a qubit from one quantum register to another
optimizeQAOAWithCOBYLAOptimize the QAOA algorithm using the COBYLA optimization algorithm for Max-Cut problem

Dependencies

The library uses the following dependencies:

For more information, check the documentation (opens in a new tab).