public class Complex { public final double real; public final double imag; public Complex() { this(0, 0); } public Complex(double r, double i) { real = r; imag = i; } public Complex add(Complex b) { return new Complex(this.real + b.real, this.imag + b.imag); } public Complex mult(Complex b) { // FOIL of (a+bi)(c+di) with i*i = -1 return new Complex(this.real * b.real - this.imag * b.imag, this.real * b.imag + this.imag * b.real); } public Complex inv() { // 1/(a+bi) * (a-bi)/(a-bi) = 1/(a+bi) but it's more workable double denom = real * real + imag * imag; return new Complex(real / denom, -imag / denom); } public Complex neg() { return new Complex(-real, -imag); } public Complex conj() { return new Complex(real, -imag); } @Override public String toString() { return real + " + " + imag + " * i"; } public static void main(String[] args) { Complex a = new Complex(Math.PI, -5); //just some numbers Complex b = new Complex(-1, 2.5); System.out.println(a.neg()); System.out.println(a.add(b)); System.out.println(a.inv()); System.out.println(a.mult(b)); System.out.println(a.conj()); } }