UNPKG

quaco.js

Version:

A lightweight modular Quantum Computing Simulator in JavaScript. Supports qubits, quantum gates, entanglement, circuits, algorithms, and visualization.

38 lines (35 loc) 1.04 kB
// src/utils/MathUtils.js /** * Math utilities for quantum simulation. */ export class MathUtils { /** * Normalizes a vector of Complex numbers so that the sum of |amplitude|^2 = 1. * @param {Complex[]} vector * @returns {Complex[]} normalized vector */ static normalize(vector) { let normSquared = 0; for (const amplitude of vector) { normSquared += amplitude.abs2(); } const norm = Math.sqrt(normSquared); if (norm === 0) { throw new Error("Cannot normalize zero vector"); } return vector.map(amplitude => new amplitude.constructor( amplitude.re / norm, amplitude.im / norm )); } /** * Compares two floating point numbers safely. * @param {number} a * @param {number} b * @param {number} epsilon * @returns {boolean} */ static almostEqual(a, b, epsilon = 1e-10) { return Math.abs(a - b) < epsilon; } }