class Komplex
{
// ----------- Daten ------------

  double a; // Realteil
  double b; // Imaginaerteil


// ------- Konstruktoren --------

  Komplex()
  { this.a = 0;
    this.b = 0;
  }

  Komplex(double a, double b)
  { this.a = a;
    this.b = b;
  }

  Komplex(Komplex z)
  { this.a = z.a;
    this.b = z.b;
  }

// ---------- Methoden ----------

  void addiereDazu(Komplex z)
  { this.a = this.a + z.a;
    this.b = this.b + z.b;
  } // addiereDazu

  void addiereDazu(double x, double y)
  { this.a = this.a + x;
    this.b = this.b + y;
  } // addiereDazu

  void subtrahiereDavon(Komplex z)
  { this.a = this.a - z.a;
    this.b = this.b - z.b;
  } // subtrahiereDavon

  void subtrahiereDavon(double x, double y)
  { this.a = this.a - x;
    this.b = this.b - y;
  } // subtrahiere

  void multipliziereMit(Komplex z)
  { double real = this.a * z.a - this.b * z.b;
    double imag = this.a * z.b + this.b * z.a;
    this.a = real;
    this.b = imag;
  } // multipliziereMit

  void multipliziereMit(double x, double y)
  { double real = this.a * x - this.b * y;
    double imag = this.a * y + this.b * x;
    this.a = real;
    this.b = imag;
  } // multipliziereMit

  void dividiereDurch(Komplex z)
  { double betragsquadrat = z.a * z.a + z.b * z.b;
    double real = this.a * z.a + this.b * z.b;
    double imag = this.b * z.a - this.a * z.b;
    this.a = real/betragsquadrat;
    this.b = imag/betragsquadrat;
  } // dividiereDurch

  void dividiereDurch(double x, double y)
  { double betragsquadrat = x * x + y * y;
    double real = this.a * x + this.b * y;
    double imag = this.b * x - this.a * y;
    this.a = real/betragsquadrat;
    this.b = imag/betragsquadrat;
  } // dividiereDurch

  void weiseZu(Komplex z)
  { this.a = z.a;
    this.b = z.b;
  } // weiseZu

  void weiseZu(double x, double y)
  { this.a = x;
    this.b = y;
  } // weiseZu

  double betragsQuadrat()
  { return (this.a * this.a + this.b * this.b);
  } // betrag

  double betrag()
  { return Math.sqrt(this.a * this.a + this.b * this.b);
  } // betrag

} // class Komplex
