No.  Indeed not.  And if it calls floor then it isn't likely to give the
desired -0 result.

How important is it to return -0 instead of +0 anyway?

On Wed, Jan 19, 2011 at 10:17 AM, sebb <seb...@gmail.com> wrote:

> On 19 January 2011 16:25, Ted Dunning <ted.dunn...@gmail.com> wrote:
> > Slightly slower,
>
> Unfortunately, I suspect it is about twice as slow for this case,
> because FastMath.ceil() actually calls FastMath.floor().
>
> Not ideal for FastMath !
>
> >
> >    double y = floor(x):
> >    double d = x - y;
> >    if (d > 0.5) {
> >         return ceil(x);
> >    } else {
> >         return y;
> >    }
> >
> > but it gives your desired result with little (visible) special casing.
> >
> > On Wed, Jan 19, 2011 at 8:04 AM, sebb <seb...@gmail.com> wrote:
> >
> >> FastMath.rint(x) has the following code:
> >>
> >>        double y = floor(x);
> >>        double d = x - y;
> >>
> >>        if (d > 0.5) {
> >>            return y+1.0; // round up
> >>        }
> >>  ...
> >>
> >> For -0.5 < x < 0 the rounding up generates +0.0  - rather than -0.0,
> >> as expected by the sign of the input parameter.
> >>
> >> Is there an easy way to fix this, other than explicitly checking for y
> ==
> >> -1.0?
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >> For additional commands, e-mail: dev-h...@commons.apache.org
> >>
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to