[rfc] enable non-trivial complex division
Joseph S. Myers
joseph@codesourcery.com
Sun Feb 20 13:36:00 GMT 2005
On Sat, 19 Feb 2005, Richard Henderson wrote:
> I'm not sure that I agree that other languages want the, somewhat odd,
> behaviour wrt nans and infinities. Certainly there doesn't seem to be
> anything in the C++ or Fortran standards that specify this.
>
> The worst part of this, IMO, being that C99 considers (+inf, nan) to
> be an infinity and not a nan. This makes no sense to me.
>
> Anyway, I've enabled the new library routine for C99, made everyone
> else default to the more stable inline implementation. I do add the
> new option described above for C, and for C allow -ffast-math to
> change the default to the trivial inline implementation. I don't let
> other languages change to the trivial inline implementation with
> -fast-math, because of the lack of an option to change it back.
>
> Comments?
If we are to have three different implementations then long-term I think
they should be (a) trivial, (b) logarithmic reduction to avoid undue
overflow for both multiplication and division, (c) (b) plus special nan
and infinity handling. With -fcx-limited-range being a
language-independent switch to change from (b) to (a). We don't have (b)
at present, though flag_complex_method == 1 substitutes for it. That
suggests for now having -fcx-limited-range as a language-independent flag,
included in -ffast-math for all languages, which switches from the default
of 1 (2 for C99) to 0 (and -ffast-math -fno-cx-limited-range keeping the
default of 1 or 2) with C99 only changing the default from 1 to 2; and in
future adding logarithmic reduction for both 1 and 2.
--
Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/
jsm@polyomino.org.uk (personal mail)
joseph@codesourcery.com (CodeSourcery mail)
jsm28@gcc.gnu.org (Bugzilla assignments and CCs)
More information about the Gcc-patches
mailing list