unit ucomplex; interface type complex = object r: extended; i: extended; function length(): extended; function squared(): complex; function mult(a: complex): complex; function power(n: integer): complex; procedure update(re: extended; im: extended); end; function complex_sum(a: complex; b: complex): complex; implementation procedure complex.update(re: extended; im: extended); begin r := re; i := im; end; function complex.length(): extended; begin length := sqrt(r * r + i * i); end; function complex.squared(): complex; var res: complex; begin res.r := sqr(r) - sqr(i); res.i := 2 * r * i; squared := res; end; function complex.mult(a: complex): complex; var res: complex; begin res.r := r * a.r - i * a.i; res.i := r * a.i + i * a.r; mult := res; end; function complex.power(n: integer): complex; var j: integer; c, res: complex; begin c.update(r, i); res.update(r, i); for j := 1 to n - 1 do begin res := res.mult(c); end; power := res; end; function complex_sum(a: complex; b: complex): complex; var res: complex; begin res.r := a.r + b.r; res.i := a.i + b.i; complex_sum := res; end; begin end.