[fpc-pascal] Division by Zero - not raised exception
florian at freepascal.org
Sun Apr 16 11:40:35 CEST 2006
Sasa Zeman wrote:
>> We don't consider this as a bug, it's for delphi compatibility reasons.
>> These expressions are evaluated at compile time, so it's something
>> differnt. If you want to get an error, compile with -Cr.
> The -Cr will point on error in the code, however, enabling range checking
> will also affect on global speed performance.
The program won't compile with -Cr.
> Definition in documentation (RTL.pdf):
> 29.20 EDivByZero
> 29.20.1 Description
> EDivByZero is used when the operating system or CPU signals a division by
> zero error.
> As defined, reported issue is a bug. As well globaly, in consistency terms.
... operating system or CPU ...
but not the compiler ;)
The point is: this div by zero is encountered at compilation time.
The other option is to stop compilation always. Executing the operation
at run time is useless imo and a waste of CPU cycles.
> Far I can see, the core of the problem is in definiton of Infinity constant
> as 1.0/0.0 and NaN with ln(-1.0) or 0.0/0.0
No. These constants are defined in const blocks. A const block couldn't
throw an exception.
> Perhaps this is necessary to
> avoid problem with probably difference between different CPU/FPUs. However,
> IEEE specification should be followed by all of them and bits manipulation
> to perform infinity should be enough, instead to calculate it (as is
> performed currently).
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
More information about the fpc-pascal