quanta_sim
Version:
A comprehensive quantum computing simulator library with support for quantum circuits, gates, measurements, and classical conditional operations
42 lines (36 loc) • 824 B
JavaScript
import {
complex,
multiply,
kron,
transpose,
conj,
matrix,
zeros,
add,
trace,
divide,
re,
im,
abs,
} from "mathjs";
export class ComplexNumber {
constructor(real, imag = 0) {
this.real = real;
this.imag = imag;
}
static fromMathJS(complexNum) {
return new ComplexNumber(re(complexNum), im(complexNum));
}
magnitude() {
return Math.sqrt(this.real * this.real + this.imag * this.imag);
}
phase() {
return Math.atan2(this.imag, this.real);
}
toString() {
if (Math.abs(this.imag) < 1e-10) return `${this.real.toFixed(4)}`;
if (Math.abs(this.real) < 1e-10) return `${this.imag.toFixed(4)}i`;
const sign = this.imag >= 0 ? "+" : "";
return `${this.real.toFixed(4)}${sign}${this.imag.toFixed(4)}i`;
}
}