A TypeScript library for quantum mechanics calculations and utilities.
import { StateVector } from 'ts-quantum';
// Create a 2-dimensional quantum state
const state = new StateVector(2);
// Create standard basis states
const zeroState = StateVector.computationalBasis(2, 0); // |0⟩
const oneState = StateVector.computationalBasis(2, 1); // |1⟩
import { PauliX, Hadamard } from 'ts-quantum';
// Apply X gate (NOT gate)
const flippedState = PauliX.apply(zeroState);
// Create superposition with Hadamard
const superposition = Hadamard.apply(zeroState);
import { measure } from 'ts-quantum';
// Measure a state in computational basis
const outcome = measure(state);
console.log(`Measured: ${outcome.value} with probability ${outcome.probability}`);
npm install ts-quantum
import {
StateVector,
PauliX,
Hadamard,
measure
} from 'ts-quantum';
// Create a qubit in |0⟩ state
const qubit = StateVector.computationalBasis(2, 0);
// Apply Hadamard gate to create superposition
const superposition = Hadamard.apply(qubit);
// Measure the state
const result = measure(superposition);
The quantum module consists of several key components:
Core class for quantum state manipulation:
StateVector(dimension: number)setState(index: number, value: Complex)getState(index: number): ComplexinnerProduct(other: StateVector): Complexnormalize(): StateVectorStandard quantum gates:
PauliX - NOT gatePauliY - Y rotationPauliZ - Phase flipHadamard - Creates superpositionCNOT - Controlled-NOT gateQuantum measurement operations:
measure(state: StateVector)projectiveMeasurement(state: StateVector, operator: Operator)Mixed state operations:
DensityMatrix(dimension: number)trace(): Complexpurity(): numbervonNeumannEntropy(): numberComprehensive angular momentum algebra:
createJplus(j: number) - Creates raising operator J₊createJminus(j: number) - Creates lowering operator J₋createJz(j: number) - Creates z-component operator JzcreateJ2(j: number) - Creates total angular momentum operator J²createAngularState(j: number, m: number) - Creates |j,m⟩ eigenstatewignerD(j: number, α: number, β: number, γ: number) - Wigner D-matrixclebschGordan(j1: number, m1: number, j2: number, m2: number, J: number, M: number) - CG coefficientswigner3j(j1: number, j2: number, j3: number, m1: number, m2: number, m3: number) - 3j symbolswigner6j(j1: number, j2: number, j3: number, l1: number, l2: number, l3: number) - 6j symbolswigner9j(...) - 9j symbolsQuantum geometric operations:
quantumDistance(state1, state2) - Fubini-Study distance between quantum statesimport { quantumDistance } from 'ts-quantum';
const distance = quantumDistance(state1, state2);
See the /examples directory for more detailed usage examples.
Please see CONTRIBUTING.md for guidelines.
MIT License