Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Jun 2004 15:50:30 -0700 (PDT)
From:      David Schultz <das@FreeBSD.ORG>
To:        freebsd-standards@FreeBSD.org
Subject:   Re: standards/59797: Implement C99's round[f]() math fucntions
Message-ID:  <200406052250.i55MoU9e087071@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: David Schultz <das@FreeBSD.ORG>
To: "Steven G. Kargl" <kargl@troutmask.apl.washington.edu>,
	FreeBSD-gnats-submit@FreeBSD.ORG, freebsd-standards@FreeBSD.ORG
Cc:  
Subject: Re: standards/59797: Implement C99's round[f]() math fucntions
Date: Sat, 5 Jun 2004 15:49:16 -0700

 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.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406052250.i55MoU9e087071>