From owner-freebsd-standards@FreeBSD.ORG Mon Jun 7 01:30:29 2004 Return-Path: Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3182116A4CE for ; Mon, 7 Jun 2004 01:30:29 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2ADCC43D1D for ; Sun, 6 Jun 2004 18:30:29 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) i571UTA4006071 for ; Mon, 7 Jun 2004 01:30:29 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.11/8.12.11/Submit) id i571USSY006070; Mon, 7 Jun 2004 01:30:28 GMT (envelope-from gnats) Date: Mon, 7 Jun 2004 01:30:28 GMT Message-Id: <200406070130.i571USSY006070@freefall.freebsd.org> To: freebsd-standards@FreeBSD.org From: "Steven G. Kargl" Subject: Re: standards/59797: Implement C99's round[f]() math fucntions X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: "Steven G. Kargl" List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Jun 2004 01:30:29 -0000 The following reply was made to PR standards/59797; it has been noted by GNATS. From: "Steven G. Kargl" To: David Schultz 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/