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): Complex
innerProduct(other: StateVector): Complex
normalize(): StateVector
Standard 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(): Complex
purity(): number
vonNeumannEntropy(): number
Comprehensive 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