This is the mail archive of the
`gcc-patches@gcc.gnu.org`
mailing list for the GCC 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] |

*From*: Gabriel Dos Reis <gdr at integrable-solutions dot net>*To*: Jan Hubicka <jh at suse dot cz>*Cc*: Richard Henderson <rth at redhat dot com>, gcc-patches at gcc dot gnu dot org, aj at suse dot de*Date*: 07 Nov 2002 10:34:08 +0100*Subject*: Re: Converting floor to rint*Organization*: Integrable Solutions*References*: <20021105171400.GX14655@kam.mff.cuni.cz> <20021105173800.GD20534@redhat.com> <20021106092310.GE22059@kam.mff.cuni.cz> <20021106175441.GZ22059@kam.mff.cuni.cz> <20021106180930.GA22066@redhat.com> <20021106211059.GB1316@atrey.karlin.mff.cuni.cz> <m365va2xfl.fsf@soliton.integrable-solutions.net> <20021106222922.GH1316@atrey.karlin.mff.cuni.cz> <m365va1f5b.fsf@soliton.integrable-solutions.net> <20021107092112.GF7964@kam.mff.cuni.cz>

Jan Hubicka <jh@suse.cz> writes: | > Jan Hubicka <jh@suse.cz> writes: | > | > | On the related note. How bad would you consider converting | > | floor(x) into rint(x-0.5) in the fast-math mode? | > | > If you think you do want to do that transformation, then I would | > prefer this | > | > floor(x) -> nearbyint(x-0.5) | > | > | That transformation would do a miracles for i386, where rint is faster | > | than floor by quite a lot and should suffice for 3D application in | > | reliablility. I can imagine it to fail only for very large numbers... | > | > Not really. floor(1) == 1 and rint(1 - 0.5) maybe be 0 or 1 depending | > on the current rounding mode. | Hmm, is rint really expected to be dependent on the rouding mode? | Man page claims: | The nearbyint functions round their argument to an integer value | in floating point format, using the current | rounding direction and without raising the inexact | exception. | | The rint functions do the same, but will raise the | inexact exception when the result differs in value | from the argument. The C definition says: 7.12.9.3 The nearbyint functions Synopsis [#1] #include <math.h> double nearbyint(double x); float nearbyintf(float x); long double nearbyintl(long double x); Description [#2] The nearbyint functions round their argument to an integer value in floating-point format, using the current rounding direction and without raising the ``inexact'' floating-point exception. Returns [#3] The nearbyint functions return the rounded integer value. 7.12.9.4 The rint functions Synopsis [#1] #include <math.h> double rint(double x); float rintf(float x); long double rintl(long double x); Description [#2] The rint functions differ from the nearbyint functions (7.12.9.3) only in that the rint functions may raise the ``inexact'' floating-point exception if the result differs in value from the argument. Returns [#3] The rint functions return the rounded integer value. | I can builtinize nearbyint too if it makes sense. Do we have framework to deal correctly with current rounding mode? I not, I would say, leave it as is until we have the appropriate machinery. | I am bit confused by | rint. Does it imply that rint will raise exception for any non-integral | arugment? And depending on the rounding mode. -- Gaby

**Follow-Ups**:**Re: Converting floor to rint***From:*Jan Hubicka

**Re: Converting floor to rint***From:*Jan Hubicka

**References**:**Simplify floating point conversions***From:*Jan Hubicka

**Re: Simplify floating point conversions***From:*Richard Henderson

**Simplify floating point conversions II***From:*Jan Hubicka

**Re: Simplify floating point conversions II***From:*Jan Hubicka

**Re: Simplify floating point conversions II***From:*Richard Henderson

**Re: Simplify floating point conversions II***From:*Jan Hubicka

**Re: Simplify floating point conversions II***From:*Gabriel Dos Reis

**Converting floor to rint***From:*Jan Hubicka

**Re: Converting floor to rint***From:*Gabriel Dos Reis

**Re: Converting floor to rint***From:*Jan Hubicka

Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|

Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |