From owner-cvs-all@FreeBSD.ORG Sun Apr 6 17:45:45 2003 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1460237B401; Sun, 6 Apr 2003 17:45:45 -0700 (PDT) Received: from HAL9000.homeunix.com (12-233-57-131.client.attbi.com [12.233.57.131]) by mx1.FreeBSD.org (Postfix) with ESMTP id BD8CE43FAF; Sun, 6 Apr 2003 17:45:43 -0700 (PDT) (envelope-from das@freebsd.org) Received: from HAL9000.homeunix.com (localhost [127.0.0.1]) h370jbKj050775; Sun, 6 Apr 2003 17:45:37 -0700 (PDT) (envelope-from das@freebsd.org) Received: (from das@localhost) by HAL9000.homeunix.com (8.12.6p2/8.12.5/Submit) id h370jbIW050774; Sun, 6 Apr 2003 17:45:37 -0700 (PDT) (envelope-from das@freebsd.org) Date: Sun, 6 Apr 2003 17:45:37 -0700 From: David Schultz To: Tim Robbins Message-ID: <20030407004537.GA50755@HAL9000.homeunix.com> Mail-Followup-To: Tim Robbins , src-committers@freebsd.org, cvs-src@freebsd.org, cvs-all@freebsd.org References: <200304052211.h35MBglG027473@repoman.freebsd.org> <20030406174843.A44495@dilbert.robbins.dropbear.id.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20030406174843.A44495@dilbert.robbins.dropbear.id.au> cc: cvs-src@freebsd.org cc: src-committers@freebsd.org cc: cvs-all@freebsd.org Subject: Re: cvs commit: src/lib/libc/stdio floatio.h vfprintf.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Apr 2003 00:45:45 -0000 On Sun, Apr 06, 2003, Tim Robbins wrote: > On Sat, Apr 05, 2003 at 02:11:42PM -0800, David Schultz wrote: > > > das 2003/04/05 14:11:42 PST > > > > FreeBSD src repository > > > > Modified files: > > lib/libc/stdio floatio.h vfprintf.c > > Log: > > Rework the floating point code in printf(). Significant changes: > > > > - We used to round long double arguments to double. Now we print > > them properly. > > > > - Bugs involving '%F', corner cases of '#' and 'g' format > > specifiers, and the '.*' precision specifier have been > > fixed. > > > > - Added support for the "'" specifier to print thousands' grouping > > characters in a locale-dependent manner. > > > > - Implement the __vfprintf() side of hexadecimal floating point > > support. All that is still needed is a routine to convert the > > mantissa to hex digits one nibble at a time in the style of ultoa(). > > I think there is a bug here. I've attached a small test program that mimics > the behaviour of top's "CPU states" display. Here are the results on 4.x: [...] > for (i = 0; i < 150; i += 10) > printf(i >= 100 ? "CPU states: %4.0f%%\n" : > "CPU states: %4.1f%% user\n", (double)i); Oops! I have just checked in a fix for the problem. It was a little bit tricky due to the handling of thousands' grouping. Thanks for pointing this out.