Unità Complessi

Analisi

Unità

Unit Complex;
{----------------------------------------------------------------}
Interface
{----------------------------------------------------------------}
Type Comp = Record
        reale,
        immag: Real;
     End;

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.

Test