This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Differences between -m64 and -m32


Hi list,

I have observed drastic slowdown between 32- and 64-bit builds, and
tracked it down to the exp function in libm when called with some
"special" numeric values, those close to eps being an example. On some
occasions and only in the 64-bit code, the result of __ieee745_exp
seems to exceed an internal error bound, causing it to call a
__slowexp with software FP arithmetic. Slowness ensues.
Using the attached makefile & testcase on Ubuntu 10.04 running stock
gfortran (4.4.3) and stock eglibc 2.11.1, I see that the 64-bit case
calls slowexp, while the 32-bit one does not, and the results of exp
differ in one case.

Can anybody help me make some sense of this? Can one possibly remedy
this (preferrably without taking it to the Drepper guy)?

Cheers,
Dennis

Attachment: output.txt
Description: Text document

Attachment: makefile
Description: Binary data

Attachment: test.f90
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]