"use strict" export class Complex { #real #imag constructor (a=0, b=0) { this.#real = a this.#imag = b } toString() { return this.#real + '+' + this.#imag + 'i' } Add(other){ let rv = new Complex(this.#real, this.#imag) rv.#real += other.#real rv.#imag += other.#imag return rv } Sub(other){ let rv = new Complex(this.#real, this.#imag) rv.#real -= other.#real rv.#imag -= other.#imag return rv } Mult(other) { let rv = new Complex(0, 0) rv.#real = this.#real * other.#real - this.#imag * other.#imag rv.#imag = this.#real * other.#imag + this.#imag * other.#real return(rv) } Div(other) { let rv = new Complex(0, 0) let tmp = other.#real * other.#real + other.#imag * other.#imag rv.#real = (this.#real * other.#real + this.#imag * other.#imag)/tmp rv.#imag = (this.#imag * other.#real - this.#real * other.#imag)/tmp return(rv) } Mag() { return Math.sqrt(this.#real * this.#real + this.#imag * this.#imag) } }