An open API service indexing awesome lists of open source software.

https://github.com/space-cadet/ts-quantum

Quantum mechanics library implemented in typescript
https://github.com/space-cadet/ts-quantum

numerical-methods physics quantum-mechanics simulation typescript

Last synced: 4 months ago
JSON representation

Quantum mechanics library implemented in typescript

Awesome Lists containing this project

README

          

# ts-quantum

A comprehensive TypeScript library for quantum mechanics calculations and simulations. Built for both educational purposes and practical quantum computing applications.

## ๐Ÿš€ Features

### Core Quantum Mechanics
- **Quantum State Vectors** - Complete state vector operations with complex amplitudes
- **Quantum Gates** - Standard gates (Pauli, Hadamard, CNOT, Phase, etc.)
- **Density Matrices** - Mixed state operations and quantum channels
- **Quantum Measurements** - Projective measurements and Born rule calculations
- **Hilbert Space Operations** - Tensor products, direct sums, and basis transformations

### Advanced Features
- **Hamiltonian Evolution** - Time evolution with matrix exponentiation
- **Angular Momentum Algebra** - Complete SU(2) representation theory
- **Wigner Symbols** - 3j, 6j, and 9j symbols for angular momentum coupling
- **Clebsch-Gordan Coefficients** - Angular momentum composition
- **Quantum Information** - Entanglement measures, fidelity, and distances
- **Geometric Quantum Mechanics** - Fubini-Study metric and quantum distances

### Numerical Methods
- **Eigendecomposition** - Robust eigenvalue/eigenvector computation
- **Matrix Functions** - Matrix exponentials, logarithms, and arbitrary functions
- **Sparse Matrix Support** - Efficient operations for large quantum systems
- **Optimization** - Performance-optimized for multi-qubit systems

## ๐Ÿ“ฆ Installation

```bash
npm install ts-quantum
```

## ๐ŸŽฏ Quick Start

```typescript
import {
StateVector,
PauliX,
Hadamard,
CNOT,
measure,
DensityMatrix
} 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);
console.log(`Measured: ${result.value} with probability ${result.probability}`);

// Create Bell state
const twoQubits = StateVector.computationalBasis(4, 0); // |00โŸฉ
const bellState = CNOT.apply(Hadamard.extend(2).apply(twoQubits));

// Work with density matrices
const rho = DensityMatrix.fromStateVector(bellState);
console.log(`Purity: ${rho.purity()}`);
console.log(`Entropy: ${rho.vonNeumannEntropy()}`);
```

## ๐Ÿงฎ Requirements

- **Node.js** >= 14.0.0
- **TypeScript** >= 4.5.0 (optional, works with JavaScript too)
- **mathjs** >= 10.0.0 (automatically installed)

## ๐Ÿ“š Core API

### StateVector
```typescript
// Create and manipulate quantum states
const state = new StateVector(dimension);
const |0โŸฉ = StateVector.computationalBasis(2, 0);
const |+โŸฉ = StateVector.superposition(2, [0, 1]);

// State operations
const normalized = state.normalize();
const probability = state.measurementProbability(index);
const overlap = state1.innerProduct(state2);
```

### Quantum Gates
```typescript
// Single-qubit gates
const X = PauliX; // NOT gate
const Y = PauliY; // Y rotation
const Z = PauliZ; // Phase flip
const H = Hadamard; // Superposition gate
const S = PhaseGate; // Phase gate
const T = TGate; // ฯ€/8 gate

// Multi-qubit gates
const cx = CNOT; // Controlled-X
const cy = ControlledY; // Controlled-Y
const cz = ControlledZ; // Controlled-Z

// Apply gates
const result = H.apply(state);
const extended = X.extend(2).apply(twoQubitState);
```

### Measurements
```typescript
// Computational basis measurement
const outcome = measure(state);

// Projective measurement with custom operator
const projection = projectiveMeasurement(state, operator);

// Measurement probabilities
const probs = state.measurementProbabilities();
```

### Advanced Operations
```typescript
// Angular momentum
import { createAngularState, clebschGordan, wigner3j } from 'ts-quantum';

const |j,mโŸฉ = createAngularState(1, 0); // |1,0โŸฉ state
const cg = clebschGordan(0.5, 0.5, 0.5, -0.5, 0, 0); // Singlet coefficient
const w3j = wigner3j(1, 1, 2, 0, 0, 0); // 3j symbol

// Quantum distances
import { quantumDistance, fidelity } from 'ts-quantum';

const distance = quantumDistance(state1, state2);
const overlap = fidelity(rho1, rho2);
```

## ๐Ÿ”ฌ Examples

### Creating Bell States
```typescript
import { StateVector, Hadamard, CNOT } from 'ts-quantum';

// |ฮฆโบโŸฉ = (|00โŸฉ + |11โŸฉ)/โˆš2
const phi_plus = CNOT.apply(
Hadamard.extend(2).apply(
StateVector.computationalBasis(4, 0)
)
);

// Verify maximum entanglement
const rho = DensityMatrix.fromStateVector(phi_plus);
console.log(`Entanglement entropy: ${rho.vonNeumannEntropy()}`); // โ‰ˆ 0.693
```

### Quantum Random Walk
```typescript
import { StateVector, hadamardWalk } from 'ts-quantum';

// 1D quantum random walk
const walker = hadamardWalk(position: 0, steps: 10);
const finalState = walker.evolve();
```

### Angular Momentum Coupling
```typescript
import { createAngularState, coupleAngularMomenta } from 'ts-quantum';

// Couple two spin-1/2 particles
const spin1 = createAngularState(0.5, 0.5); // |โ†‘โŸฉ
const spin2 = createAngularState(0.5, -0.5); // |โ†“โŸฉ

// Create coupled states in both singlet and triplet channels
const { singlet, triplet } = coupleAngularMomenta(spin1, spin2);
```

## ๐Ÿ“– Documentation

- **[API Reference](./docs/)** - Complete API documentation
- **[Examples](./examples/)** - Practical usage examples
- **[Theory Guide](./docs/theory.md)** - Mathematical background

## ๐Ÿงช Testing

The library includes comprehensive tests with 94% pass rate (422/451 tests passing). All core functionality and examples work correctly.

```bash
npm test # Run all tests
npm run test:coverage # Run with coverage report
npm run test:watch # Watch mode for development
```

## ๐Ÿ—๏ธ Development

```bash
# Clone and setup
git clone https://github.com/space-cadet/ts-quantum.git
cd ts-quantum
npm install

# Build
npm run build

# Generate documentation
npm run docs
```

## ๐ŸŽ“ Educational Use

This library is designed to be educational while remaining computationally robust. Each operation includes:
- Clear mathematical definitions
- Physical interpretations
- Worked examples
- Performance characteristics

Perfect for:
- Quantum mechanics courses
- Quantum computing education
- Research prototyping
- Algorithm development

## โšก Performance

- Optimized for systems up to ~15 qubits
- Sparse matrix support for larger systems
- Efficient eigendecomposition algorithms
- Memory-conscious implementations

## ๐Ÿค Contributing

We welcome contributions! Please see our [Contributing Guide](./CONTRIBUTING.md) for details.

## ๐Ÿ“„ License

MIT License - see [LICENSE](./LICENSE) file for details.

## ๐Ÿ”— Related Projects

- **[Qiskit](https://qiskit.org/)** - IBM's quantum computing framework
- **[Cirq](https://quantumai.google/cirq)** - Google's quantum computing library
- **[PennyLane](https://pennylane.ai/)** - Quantum machine learning

## ๐Ÿ“ž Support

- **Issues**: [GitHub Issues](https://github.com/space-cadet/ts-quantum/issues)
- **Discussions**: [GitHub Discussions](https://github.com/space-cadet/ts-quantum/discussions)
- **Documentation**: [Online Docs](https://space-cadet.github.io/ts-quantum/)

---

**ts-quantum** - Bringing quantum mechanics to TypeScript with mathematical rigor and computational efficiency.