On Dec 6, 2014, at 09:12 , David Kastrup <[email protected]> wrote: > > Dan Eble <[email protected]> writes: > >> I’ve only skimmed some web pages on this subject, but if the following >> can be tolerated, it seems like the simplest way to reduce pain in >> short order: >> >> On more modern x86 processors that support SSE2, specifying >> the compiler options -mfpmath=sse -msse2 ensures all float >> and double operations are performed in SSE registers and >> correctly rounded. >> [https://gcc.gnu.org/wiki/FloatingPointMath] >> >> It worked for my example program. > > "It will tend to fix known test cases and create a new set of previously > working failures”. […] > I think there is a less architecture-dependent option that keeps gcc > from using any extra precision for intermediate results but it may be > somewhat expensive. On the other hand, numerics are not where LilyPond > spends most of its time. > > Probably > > '-ffloat-store’ […] > would do the trick. But we really rather should try to become > independent from exact equalities as algorithm terminators.
I agree that changing the algorithms is preferred; I didn’t mean to suggest otherwise. But if that’s not going to happen overnight, and there is a way to mitigate the problem in the meantime without touching the code, the people affected would value it. I saw -ffloat-store too, but I didn’t recommend it because "-ffloat-store will not suffice” for specific versions of GCC [1]; and "this option does not force unnamed temporaries to be flushed to memory, as shown by experiments” [2]. So, maybe it would help, to some extent, with the right compiler; or maybe there are no unnamed temporaries that really matter and everything will work. If you don’t want to require SSE2, it's worth a try. [1] http://christian-seiler.de/projekte/fpmath/ [2] https://hal.archives-ouvertes.fr/hal-00128124/en/ — Dan _______________________________________________ lilypond-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-devel
