Thank you and everyone for the explanation! I'll fix this on my side with extra rounding of the result inside my project. пн, 30 нояб. 2020 г. в 12:48, Vincent Lefevre <vincent+gcc@xxxxxxxxxx>: > On 2020-11-29 19:14:37 +0300, Alex Markin via Gcc-help wrote: > > The problem starts when you have a cross-platform project where on > > the second platform we have a non-gcc compiler and 80-bit float > > calculations on non-intel hardware. That is my case where on the > > second platform expl calculates in the right way and after a > > sequence of evaluations we get a big error accumulation and the > > program behaviour becomes different. > > This is not specific to the 80-bit extended precision. Any FP format > may be affected. When the argument is known at compile time, GCC can > optimize and it normally uses GNU MPFR to compute the result with > correct rounding (which is the best possible result and the only > good way to specify the result completely). This means that if the > library does not provide correct rounding, you will get differences > with results computed at compile time (and differences with other > libraries, possibly across different versions of the same library). > You can see a summary of differences between libraries for the > double type (double precision, or binary64) and various functions: > > https://www.vinc17.net/research/testlibm/ > > These are tests on values that are difficult to round due to the > "Table maker's dilemma". As you can see, for a long time, glibc > was implementing correct rounding for exp and log in particular > (my tests started with glibc 2.2.5, on spe170 in the table), thus > with no differences compared to the compile-time result with GCC > (using MPFR); but this is no longer the case (e.g. with glibc 2.28, > on joooj in the table). This changed in 2018: > > commit de800d83059dbedb7d151580f0a3bdc9eaf37340 > Author: Szabolcs Nagy <szabolcs.nagy@xxxxxxx> > Date: 2018-01-30 15:48:22 +0100 > > Remove slow paths from exp > > commit b7c83ca30ef8e85b6642151d95600a36535f8d97 > Author: Wilco Dijkstra <wdijkstr@xxxxxxx> > Date: 2018-02-07 13:24:43 +0100 > > Remove slow paths from log > > (BTW, reducing the precision of the slow path may have been a better > compromise, with no differences on the results, at least on exp and > log, as I say in the slides mentioned below.) > > On https://www.vinc17.net/research/slides/sieste2010.pdf slides 11 to 17 > you can see various differences obtained with GCC involving a same > expression. > > -- > Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <https://www.vinc17.net/> > 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> > Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon) >