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
JavaScript
// 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;
}
}