cvs commit: src/lib/libc/stdio floatio.h vfprintf.c
Tim Robbins
tjr at FreeBSD.ORG
Sat Apr 5 23:49:00 PST 2003
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
-------------- next part --------------
#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);
}
More information about the cvs-src
mailing list