Dimitris,

> when a real number overflows the program halts with EInvalidOp error.
> How can I make the program behave the more standard way, where the
> variable gets the value "inf" and execution continues normally? This is
> vital for many tasks, like fractal computation.

You can use try..except..end block and switch -Sd when compile:

program realover;
Uses math;
var r:real;
BEGIN
   r:=2;
   while True do
   begin
     try
       r:=r**2;
       writeLn(r);
     except
       r:=infinity;
       writeLn(r);
       // break
     end;
  end;
END.

Or you may take a look IEEE specification if it is necessary to create your
own big float support for larger precision with fractals.

> P.S. Why when the program doesn't include the variants unit the program
> complains at runtime? What is that unit?

At windows, it is not necessary for this example. Variants unit provide new
type definition and supported functions, which can consist any simple type
(integer, string, etc).

Sasa

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to