Hi Ken, On Wed, Nov 13, 2024 at 02:11:52AM GMT, Ken Pizzini wrote: > The description of the %a/%A specifiers in the printf(3) man page > could stand some improvement. In particular, it is not clear from > the current (6.9.1) document what base is used for the "p±d" part of > the format. Furthermore, the description refers to a "decimal point", > even though it would be better referred to as the "radix point", > as the number in question is not a decimal representation. > > It can be inferred from the nature of %a that the base should be > a power of two. and it can be further inferred from the nature of > hexadecimal floating-point literals in C (as specified by C99 and > later) that the base must exactly be the number two, but it would be > helpful for the printf(3) man page to state this explicitly. My first > expectation when reading the man page was that the exponent would be > taken in base 16; my second thought is that it is base FLT_RADIX (which > is 2 on IEEE 754 floating-point systems, but 16 on S/390). Only by > going back to the standard and reading carefully could I determine > that the exponent in p-notation must always be taken from a base of 2. > > A patch with one suggested wording is attached. The entry for "a, A" in > https://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html The latest standard is POSIX.1-2024. Please link to it. <https://pubs.opengroup.org/onlinepubs/9799919799/functions/printf.html> > gives an even better rewording, though I suspect there would be > copyright issues in simply copying its text. > > --Ken Pizzini The patch is missing the metadata that will make it be accepted by git-am(1). Would you mind formatting the patch with git-format-patch(1)? See: <https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING.d/patches/patches> <https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING.d/patches/description> <https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING.d/patches/subject> > --- printf.3~ 2024-11-13 01:07:23.023847047 -0800 > +++ printf.3 2024-11-13 01:55:48.368341811 -0800 > @@ -757,15 +757,18 @@ > the letters ABCDEF, and the exponent separator > .B P > is used. > -There is one hexadecimal digit before the decimal point, > +There is one hexadecimal digit before the radix point, > and the number of digits after it is equal to the precision. > The default precision suffices for an exact representation of the value > if an exact representation in base 2 exists > and otherwise is sufficiently large to distinguish values of type > .IR double . > -The digit before the decimal point is unspecified for nonnormalized > +The digit before the radix point is unspecified for nonnormalized > numbers, and nonzero but otherwise unspecified for normalized numbers. > -The exponent always contains at least one > +The exponent > +.IR d , > +which is the appropriate exponent of 2 expressed as a decimal integer, I would remove the 'which', and s/,/;/ > +always contains at least one And prepend an 'it' here. Other than that, it LGTM. Thanks! Have a lovely day! Alex > digit; if the value is zero, the exponent is 0. > .TP > .B c -- <https://www.alejandro-colomar.es/>
Attachment:
signature.asc
Description: PGP signature