Re: [fpc-devel] Different computation precision in 32-bit and 64-bit app

2021-07-30 Thread Sven Barth via fpc-devel
NetSpirit via fpc-devel  schrieb am Fr.,
30. Juli 2021, 15:37:

> This code gives distinct results when compiled for Win32 and Win64
> - Win32: 49744125
> - Win64: 49744124.999
>
> procedure Test;
> var
>   D: Double;
> begin
>   D := 3 * (exp(3 * ln(255)));
>   WriteLn('Result: ' + FloatToStr(D));
> end;
>
>
> Somewhere is precision loss (or extra rounding). Is this good?
>

On Win64 (and any non-x86 system) the intermediary results are calculated
with Double precision while on any other x86 target it's calculated with
Extended precision before being converted to Double for the assignment to
D. So yes, that is as expected.

Regards,
Sven

>
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel


[fpc-devel] Different computation precision in 32-bit and 64-bit app

2021-07-30 Thread NetSpirit via fpc-devel
This code gives distinct results when compiled for Win32 and Win64
- Win32: 49744125
- Win64: 49744124.999

procedure Test;
var
  D: Double;
begin
  D := 3 * (exp(3 * ln(255)));
  WriteLn('Result: ' + FloatToStr(D));
end;


Somewhere is precision loss (or extra rounding). Is this good?

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel