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
…