@kissyagni/quantum-ts
v0.0.3
Published
Quantum computing model and math library
Maintainers
Readme
quantum-ts
TypeScript library for quantum computing: qubit math, state vectors, gates, and a circuit graph model.
AI Usage
AI has been partially used in this repos. Most of the documentation, including this readme, has been generated as well as most of Unit tests.
However, the library code has been written by hand. I created this repo to understand the math behind quantum computing, so there was no point in having a stochastic monkey copy/paste code it found on the internet.
Pull requests are wellcome, but no vibe code.
Installation
npm install @kissyagni/quantum-tsBuilding the library
Requirements: Node.js 20 or later.
npm install
npm run build
npm testPublishing the library
- Bump the version in
package.json(or usenpm version patch|minor|major). - Build and test:
npm run build
npm test
npm login
npm publish --access publicCode samples
Manipulating single qubit
import { QBit } from '@kissyagni/quantum-ts';
// |0⟩ by default
const zero = new QBit();
// |1⟩ (θ = 180°)
const one = new QBit(180, 0);
// Bloch coordinates
const { x, y, z } = zero.toBlochXYZ(); // { x: 0, y: 0, z: 1 }
// From amplitudes α, β (must be normalized)
import * as math from 'mathjs';
const plus = QBit.fromAlphaBeta(
math.complex(1 / math.SQRT2, 0),
math.complex(1 / math.SQRT2, 0),
); // |+⟩Manipulating Quantum State composed of several QBits
import { QBit, QState } from '@kissyagni/quantum-ts';
// Create state |+⟩ ⊗ |-⟩
const state = QState.createFromQBits([new QBit(90, 0), new QBit(-90, 0)]);
// Inspect the resulting state
state.pureness;
state.densityMatrix;
state.stateVector;Building a circuit
import { QuantumCircuitGraph } from '@kissyagni/quantum-ts';
// 2 input qubits
const circuit = new QuantumCircuitGraph(2);
circuit.h(0); // Hadamard on qubit 0
circuit.cnot(0, 1); // CNOT: control 0, target 1
// Compute final quantum state of circuit
const finalState = new QState();
circuit.output.computeStateTo(finalState);
// get information of quantum state
finalState.pureness;
finalState.densityMatrix;
finalState.stateVector;
// Collapse the circuit into one unitary operator
const gate = circuit.toGate();