procedure InitC(var r: Comp; reale, immag: Real);function RealeC(var r: Comp): Real;function ImmagC(var r: Comp): Real;procedure RecC(Var r: Comp);procedure OppC(Var r: Comp);function ModC(r: Comp): Real;
procedure AddC(r, s: Comp; var t: Comp);procedure SubC(r, s: Comp; var t: Comp);procedure MulC(r, s: Comp; var t: Comp);procedure DivC(r, s: Comp; var t: Comp);
function UgualiC(r, s: Comp): Boolean;
Implementation
procedure InitC(var r: Comp; reale, immag: Real);begin r.reale:=reale; r.immag:=immag;end;function RealeC(var r: Comp):Real;begin RealeC:=r.reale;end;function ImmagC(var r: Comp):Real;begin ImmagC:=r.immag;end;procedure OppC(var r: Comp);Begin InitC(r, -RealeC(r), -ImmagC(r));End;function ModC(r: Comp): Real;begin ModC:=Sqrt(Sqr(RealeC(r))+Sqr(ImmagC(r)));end;
procedure RecC(var r: Comp);Var M: Real;Begin M:=ModC(r); If(M = 0) then Halt(1); M:=Sqr(M); InitC(r, RealeC(r)/M, -ImmagC(r)/M);End;
procedure AddC(r, s: Comp; var t: Comp);Begin InitC(t, RealeC(r)+RealeC(s), ImmagC(r)+ImmagC(s));End;
procedure SubC(r, s: Comp; var t: Comp);Begin OppC(s); AddC(r, s, t);End;
procedure MulC(r, s: Comp; var t: Comp);Begin InitC(t, RealeC(r)*RealeC(s)-ImmagC(r)*ImmagC(s), RealeC(r)*ImmagC(s)+RealeC(s)*ImmagC(r));End;
procedure DivC(r, s: Comp; var t: Comp);Begin RecC(s); MulC(r, s, t);End;
function UgualiC(r, s: Comp): Boolean;Begin UgualiC:=(RealeC(r) = RealeC(s)) And (ImmagC(r) = ImmagC(s));End;
Begin
Writeln(‘Unit Complex, ver. 1.0 ...’);End.