(* Multiply the complex number z = 5/13 + 12/13i 50 times
  with the complex number w = (0.6 + 0.8i).  Print intermediate
  products and the square of their absolute value.
  Note that |z| = |w| = 1. *)

MODULE complexmult;
FROM RealInOut IMPORT WriteReal;
FROM Terminal  IMPORT WriteLn;

CONST u = 0.6;
     v = 0.8;

VAR i,j: CARDINAL;
   x,x1,y: REAL;

BEGIN
 x := 5.0/13.0; y := 12.0/13.0;
 FOR i := 1 TO 50 DO
   FOR j := 1 TO 10 DO
     (* (x+iy) := (x+iy) * (u+iv) *)
     x1 := x*u - y*v;
     y := y*u + x*v;
     x := x1
   END;
   WriteReal(x,6); WriteReal(y,6);
   WriteReal(x*x + y*y,6); WriteLn
 END
END complexmult.