Arithmetic/Complex: Difference between revisions

Content added Content deleted
m (Moved to Arith cat)
(+ Pascal)
Line 446: Line 446:
print_complex (inv a);
print_complex (inv a);
print_complex (neg a)</ocaml>
print_complex (neg a)</ocaml>

=={{header|Pascal}}==
<pascal>
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.
</pascal>


=={{header|Perl}}==
=={{header|Perl}}==