https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97365

            Bug ID: 97365
           Summary: gcvt and qgcvt do not always provide requested
                    precision
           Product: gcc
           Version: 9.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sisyphus359 at gmail dot com
  Target Milestone: ---

gcvt() will assign no more than 17 digits of precision.
qgcvt() will assign no more than 21 digits of precision.

Here is the demo :

/************************************************/
#include <stdio.h>
#include <stdlib.h>

int main(void) {
 char ebuf[80];

 gcvt(0.1, 55, ebuf);
 printf("%s\n", ebuf);

 qgcvt(0.1L, 67, ebuf);
 printf("%s\n", ebuf);

 return 0;
}

/************************************************/

On Ubuntu-20.04, gcc-9.3.0
I got:
0.10000000000000001
0.100000000000000000001

I expected:
0.1000000000000000055511151231257827021181583404541015625
0.1000000000000000000013552527156068805425093160010874271392822265625

The "expected" values are exact base 10 representations of the values contained
in the double 0.1, and in the (80-bit extended precision) long double 0.1.

Cheers,
Rob
  • [Bug c/97365] New: gcvt and qgcv... sisyphus359 at gmail dot com via Gcc-bugs

Reply via email to