Date: Mon, 7 Jun 2004 01:30:28 GMT From: "Steven G. Kargl" <kargl@troutmask.apl.washington.edu> To: freebsd-standards@FreeBSD.org Subject: Re: standards/59797: Implement C99's round[f]() math fucntions Message-ID: <200406070130.i571USSY006070@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR standards/59797; it has been noted by GNATS. From: "Steven G. Kargl" <kargl@troutmask.apl.washington.edu> To: David Schultz <das@FreeBSD.ORG> Cc: FreeBSD-gnats-submit@FreeBSD.ORG, freebsd-standards@FreeBSD.ORG Subject: Re: standards/59797: Implement C99's round[f]() math fucntions Date: Sun, 6 Jun 2004 18:28:23 -0700 (PDT) David Schultz wrote: > On Fri, Jun 04, 2004, David Schultz wrote: > > Sorry, I've put this off way too long. The good news is that I'm > > now going to do something about it. The bad news is that I found > > a significant bug in the proposed implementation. Namely, round() > > and roundf() often get the wrong answer for halfway cases. In > > IEEE-754 round-to-nearest mode, numbers that are halfway between > > two representable numbers are supposed to be rounded to even. > > It seems I've paged out more material from my brain than I thought > since I last looked at this. POSIX defines round() to > specifically *not* use the IEEE-754 round-to-nearest behavior. > Your implementation is absolutely correct, Steve, and it even gets > the exception flags right. (I tested all positive inputs to > roundf(), probed inputs to round() uniformly at random for a few > minutes, and checked important special cases.) I'll go ahead and > commit it with minor style and doc fixes. > I would have to go back and review the PR for all the discussion, but I thought bde had proposed using rint(3) with an appropriate rounding mode. Anyway, whatever you decide to do is fine with me. BTW, thanks for the work on fenv. Sorry, I couldn't provide a review. I did look at your patch, but it was way over my head. -- Steve http://troutmask.apl.washington.edu/~kargl/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406070130.i571USSY006070>