RosettaCodeData/Task/Arithmetic-Complex/Pascal/arithmetic-complex-1.pascal

69 lines
1.1 KiB
Plaintext

program showcomplex(output);
type
complex = record
re,im: real
end;
var
z1, z2, zr: complex;
procedure set(var result: complex; re, im: real);
begin
result.re := re;
result.im := im
end;
procedure print(a: complex);
begin
write('(', a.re , ',', a.im, ')')
end;
procedure add(var result: complex; a, b: complex);
begin
result.re := a.re + b.re;
result.im := a.im + b.im;
end;
procedure neg(var result: complex; a: complex);
begin
result.re := -a.re;
result.im := -a.im
end;
procedure mult(var result: complex; a, b: complex);
begin
result.re := a.re*b.re - a.im*b.im;
result.im := a.re*b.im + a.im*b.re
end;
procedure inv(var result: complex; a: complex);
var
anorm: real;
begin
anorm := a.re*a.re + a.im*a.im;
result.re := a.re/anorm;
result.im := -a.im/anorm
end;
begin
set(z1, 3, 4);
set(z2, 5, 6);
neg(zr, z1);
print(zr); { prints (-3,-4) }
writeln;
add(zr, z1, z2);
print(zr); { prints (8,10) }
writeln;
inv(zr, z1);
print(zr); { prints (0.12,-0.16) }
writeln;
mul(zr, z1, z2);
print(zr); { prints (-9,38) }
writeln
end.