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.
To use the Quantum.js library in your project, you can install it via npm:
npm i @earlold/quantum.js
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);
The library supports the following quantum gates, check the table below for the corresponding methods:
Gate | Method |
---|---|
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-gate | t(qubitIndex: number) |
Controlled-X (CNOT) | cx(controlIndex: number, targetIndex: number) |
Controlled-Z | cz(controlIndex: number, targetIndex: number) |
Functions | Description |
---|---|
Circuit.genRandomNumber | Generate a random number using quantum principles |
Circuit.genRandomString | Generate a random string using quantum principles |
Circuit.genRandomNumberWithRange | Generate a random number within a specified range using quantum principles |
Circuit.teleportationOneToTree | Teleportation of a qubit from one quantum register to another |
optimizeQAOAWithCOBYLA | Optimize the QAOA algorithm using the COBYLA optimization algorithm for Max-Cut problem |
Functions | Description |
---|---|
Circuit.prepareBellPhiPlus | Prepare the Bell state Phi+ |
Circuit.prepareBellPhiMinus | Prepare the Bell state Phi- |
Circuit.prepareBellPsiPlus | Prepare the Bell state Psi+ |
Circuit.prepareBellPsiMinus | Prepare the Bell state Psi- |
The library uses the following dependencies:
For more information, check the documentation.