Date: Sun, 6 Apr 2003 17:48:43 +1000 From: Tim Robbins <tjr@FreeBSD.ORG> To: David Schultz <das@FreeBSD.org> Cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/lib/libc/stdio floatio.h vfprintf.c Message-ID: <20030406174843.A44495@dilbert.robbins.dropbear.id.au> In-Reply-To: <200304052211.h35MBglG027473@repoman.freebsd.org>; from das@FreeBSD.org on Sat, Apr 05, 2003 at 02:11:42PM -0800 References: <200304052211.h35MBglG027473@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--+QahgC5+KEYLbs62 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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: CPU states: 0.0% user CPU states: 10.0% user CPU states: 20.0% user CPU states: 30.0% user CPU states: 40.0% user CPU states: 50.0% user CPU states: 60.0% user CPU states: 70.0% user CPU states: 80.0% user CPU states: 90.0% user CPU states: 100% CPU states: 110% CPU states: 120% CPU states: 130% CPU states: 140% Here are the results on -current now: CPU states: 0.0% user CPU states: 10.00% user CPU states: 20.00% user CPU states: 30.00% user CPU states: 40.00% user CPU states: 50.00% user CPU states: 60.00% user CPU states: 70.00% user CPU states: 80.00% user CPU states: 90.00% user CPU states: 10000% CPU states: 1100% CPU states: 1200% CPU states: 1300% CPU states: 1400% If you can't reproduce this problem yourself, it's possible that I've broken something here with all my wide char changes. Tim --+QahgC5+KEYLbs62 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="not-top.c" #include <stdio.h> int main(int argc, char *argv[]) { int i; for (i = 0; i < 150; i += 10) printf(i >= 100 ? "CPU states: %4.0f%%\n" : "CPU states: %4.1f%% user\n", (double)i); exit(0); } --+QahgC5+KEYLbs62--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030406174843.A44495>