[Bug c/34071] Poor precision of complex division __divdc3 in 64-bit on Intel
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Mon Nov 12 16:29:00 GMT 2007
------- Comment #3 from joseph at codesourcery dot com 2007-11-12 16:29 -------
Subject: Re: Poor precision of complex division __divdc3 in
64-bit on Intel
Excess overflows in complex arithmetic is noted on
<http://gcc.gnu.org/c99status.html> but I don't think there's a specific
bug for it. Bug 24581 deals with cases GCC gets wrong through always
converting real operands of complex arithmetic to complex type. Bug 30789
is the bug that constant folding of complex multiplication and division is
worse than the runtime arithmetic because it doesn't handle any of the
special cases at all.
Complex multiplication and division in libgcc do essentially follow what
C99 Annex G says (but GCC does not have support for imaginary types - I'm
not sure how useful or otherwise such support would be).
Some libgcc function do use wider types for internal computations (in
particular the conversions from long long to floating types) - the
suggested solution for this bug would effectively be to use XFmode in
__divdc3 instead of DFmode. You may want to avoid using the soft-float
TFmode __float128, however, and only select wider types that are
reasonably fast (or compile-time options could select implementations
with different trade-offs).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34071
More information about the Gcc-bugs
mailing list