[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