[Oberon] real math
Felix Friedrich
felix.friedrich at inf.ethz.ch
Tue Nov 11 17:15:45 CET 2014
Dear all,
with respect to the differences you observe I would like to point out
that the variant of the underlying hardware and compiler also play an
important role. In addition to the floating point standard. And also in
addition to possible compiler optimisations.
Example: one compiler (e.g. older AOS compiler) may still emit code for
the FPU, which internally works with 80 bit precision. The results are
only truncated to 32 bit when writing back to a general purpose
register. So no loss of precision during expression computation. On
newer machines the same task is usually computed on the SSE unit with
32-bit precision and the precision is lost during computation already.
So, there is nothing wrong with any of the implementations but there are
just implementation specific differences. Still, the principles of "What
Every Computer Scientist Should Know About Floating-Point Arithmetic" do
apply.
Best regards
Felix
On 11.11.2014 15:50, Yaroslav Romanchenko wrote:
>
>
> How many right suggestions. But... anyway something wrong with real
> math in Oberon implementation, because same example in BlackBox
> returns yet another result expected by Zdenek.
>
> Code:
>
> MODULE M1;
>
> IMPORT
> StdLog;
>
> PROCEDURE Do*;
> VAR
> r: REAL;
> BEGIN
> r := 480 / 100 * 100;
> StdLog.Int(ENTIER(r * 1000000));
> StdLog.Ln;
> END Do;
>
> BEGIN
> END M1.
>
> Output:
>
> 480000000
>
> Same result as BlackBox returned in commercial Embarcadero RAD Studio
> using type corresponding single type.
>
> ---
> Cheers, SAGE
> http://sage.com.ua/
>
>
>
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.inf.ethz.ch/pipermail/oberon/attachments/20141111/64069352/attachment.html
More information about the Oberon
mailing list