quaco.js
Version:
A lightweight modular Quantum Computing Simulator in JavaScript. Supports qubits, quantum gates, entanglement, circuits, algorithms, and visualization.
53 lines (46 loc) • 1.35 kB
JavaScript
// src/Simulator.js
import { Circuit } from './Circuit.js';
/**
* High-level Quantum Circuit Simulator.
* Helps create, run, and visualize circuits easily.
*/
export class Simulator {
constructor(numQubits) {
this.numQubits = numQubits;
this.circuit = new Circuit(numQubits);
}
/**
* Add a single-qubit gate.
* @param {Complex[][]} gateMatrix
* @param {number} targetQubit
*/
addGate(gateMatrix, targetQubit) {
this.circuit.addGate(gateMatrix, targetQubit);
}
/**
* Add a CNOT gate.
* @param {number} controlQubit
* @param {number} targetQubit
*/
addCNOT(controlQubit, targetQubit) {
this.circuit.addCNOT(controlQubit, targetQubit);
}
/**
* Execute the circuit for a given number of shots.
* @param {number} shots
* @returns {object} measurement results (histogram)
*/
run(shots = 1) {
return this.circuit.run(shots);
}
/**
* Displays the histogram of results nicely.
* @param {object} results
*/
static displayHistogram(results) {
console.log("\nMeasurement Results Histogram:");
for (const [state, count] of Object.entries(results)) {
console.log(`${state}: ${count}`);
}
}
}