Eric Bezault wrote:
It looks like under Windows a DOUBLE overflow results
in an exception, but not under Linux. This is not very
good for cross-platform portability. Moreover, somehow
the exception raised under Windows is not caught in the
rescue clause of the routine where the computation took
place unless the result of this computation is used. For
example when executing the following code:
f is
local
d: DOUBLE
do
print ("Hello%N")
d := 2.0e300 * 2.0e300
print ("World%N")
rescue
print ("Gobo%N")
end
it does not execute the rescue clause.
Eugene Melekhov wrote:
VE Windows runtime initializes coprocessor to catch
invalid operation, zero devide, overflow. Exeption is
raised at the operation next to operation caused error.
This is the reason of the missing or unexpected
exceptions.
VE Linux runtime doesn't change the FPU Control Word
and grants this job to libc, that's why the exception is
not rised under Linux.
It's necessary to find out the proper coprocessor
initalization procedure under Windows.