GNU bug report logs - #54785
for floating point, printf should use double like in C instead of long double

Previous Next

Package: coreutils;

Reported by: Vincent Lefevre <vincent <at> vinc17.net>

Date: Fri, 8 Apr 2022 09:18:01 UTC

Severity: normal

Full log


View this message in rfc822 format

From: Chet Ramey <chet.ramey <at> case.edu>
To: Paul Eggert <eggert <at> cs.ucla.edu>, Vincent Lefevre <vincent <at> vinc17.net>
Cc: 54785 <at> debbugs.gnu.org, bug-bash <at> gnu.org, chet.ramey <at> case.edu
Subject: bug#54785: for floating point, printf should use double like in C instead of long double
Date: Mon, 11 Apr 2022 14:52:50 -0400
On 4/9/22 3:31 PM, Paul Eggert wrote:

>> I suggest to parse the argument as a "long double" only if the "L"
>> length modifier is provided, like in C.
> Thanks, good idea.
> 
> I checked, and this also appears to be a POSIX conformance issue. POSIX 
>   says that floating point operands "shall be evaluated as if by the 
> strtod() function". This means double, not long double.
> 
> Whatever decision we make here, we should be consistent with Bash so I'll 
> cc this email to bug-bash.
> 
> I propose that we change both coreutils and Bash to use 'double' rather 
> than 'long double' here, unless the user specifies the L modifier (e.g., 
> "printf '%La\n' ...". I've written up a patch (attached) to Bash 5.2 alpha 
> to do that. Assuming the Bash maintainer likes this proposal, I plan to 
> implement something similar for Coreutils printf.

It sounds like there are three cases.

1. If the `L' modifier is supplied, as an extension (POSIX doesn't allow
   length modifiers for the printf utility), use long double. This would
   work in both default and posix modes.

2. In posix mode, use strtod() and double.

3. In default mode, use the existing code to get the highest possible
   precision, as the code has done for over 20 years.


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
		 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet <at> case.edu    http://tiswww.cwru.edu/~chet/




This bug report was last modified 3 years and 46 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.