package utils;
public class Complex {
  private double real;
  private double imaginary;
  public Complex(double _x, double _y) {
    real = _x;
    imaginary = _y;
  }
  public Complex() {
    real = 0;
    imaginary = 0;
  }
  public void set(double _x, double _y) {
    real = _x;
    imaginary = _y;
  }
  public void setReal(double _x) {
    real = _x;
  }
  public void setImaginary(double _i) {
    imaginary = _i;
  }
  public void addReal(double _x) {
    real += _x;
  }
  public void addImaginary(double _i) {
    imaginary += _i;
  }
  public double getReal() {
    return real;
  }
  public double getImaginary() {
    return imaginary;
  }
    public Complex plus(Complex b) {
    return new Complex(
        b.real + real,
        b.imaginary + imaginary);
  }
    public Complex minus(Complex b) {
    return new Complex(
        real - b.real,
        imaginary - b.imaginary);
  }
          public Complex times(Complex b) {
    return new Complex(
        real * b.real - imaginary * b.imaginary,
        imaginary * b.real + real * b.imaginary);
  }
    public Complex abs() {
    return new Complex(
        Math.abs(real),
        Math.abs(imaginary)
    );
  }
    public Complex inverse() {
    double m = square();
    return new Complex(
        real / m,
        -imaginary / m
    );
  }
    public double square() {
    return real * real + imaginary * imaginary;
  }
    public double magnitude() {
    return Math.sqrt(square());
  }
      public Complex copy() {
    return new Complex(real, imaginary);
  }
  public void print() {
    System.out.println("Complex: real = " + real + " Imaginary = " + imaginary);
  }
  public void print(String msg) {
    System.out.println(msg + "(" + real + "," + imaginary + ")");
  }
}