// Kompleksna stevila v kartezicni obliki

public class Kompleksno
{ 
    private double re; // realna komponenta
    private double im; // imaginarna komponenta
 
    public Kompleksno(double x, double y)
    {
	this.re = x;
	this.im = y;
    }
  
    public double abs()
    {
	return Math.sqrt(this.re*this.re + this.im*this.im); 
    }
  
    public double realna()
    {
	return this.re; 
    }
  
    public double imaginarna()
    {
	return this.im; 
    }
  
    //metoda fi vrne kot v polarnem zapisu kompleksnega stevila v radianih
    public double fi() 
    {
	return Math.atan2(this.im, this.re);
    }
  
    public Kompleksno vsota(Kompleksno w)
    {
	return new Kompleksno(this.re + w.re, this.im + w.im);
    }
  
    public Kompleksno zmnozek(Kompleksno w)
    {
	return new Kompleksno(this.re*w.re - this.im*w.im, 
			      this.re*w.im + this.im*w.re); 
    }
  
    //metoda za izpis
    public String toString()
    {
	return (this.re + " + " + this.im + " * i"); 
    }
}