Default format for Float128

Jerry DeLisle jvdelisle@frontier.com
Mon Sep 6 02:09:00 GMT 2010


On 09/05/2010 06:19 PM, Jerry DeLisle wrote:
> On 09/02/2010 04:58 PM, Jerry DeLisle wrote:
>> On 09/02/2010 10:08 AM, Steve Kargl wrote:
>> --- snip ---
>>>> $ ./a.out
>>>> 1234567890123456789012345678901234567890
>>>> 28.711679904822148
>>>> 7.1078787878787878787879000000000000
>>>> 42.860000000000000000000000000000000
>>>> -21.256198883056640625000000000000000
>>>> 28.711679904822147253788000000000000
>>>> 1234567890123456789012345678901234567890
>>>> 0.33333333333333333333333000000000000
>>>> 0.33333333333333333334
>>>> 0.33333333333333331
>>>> 0.33333334
>>>>
>>>> There appears to be a lot of excess width here. If I modify write.c
>>>> with
>>>> this:
>
> As first suggested by Dominique: In write_float.def line 1010.
>
> #if defined(HAVE_GFC_REAL_16) && __LDBL_DIG__ > 18
> # define MIN_FIELD_WIDTH 46
> #else
> # define MIN_FIELD_WIDTH 31
> #endif
>
> On my system __LDBL_DIG__ is defined to be 18 resulting in
> MIN_FIELD_WIDTH defined to be 31, which is not large enough. Changing to
> this:
>
> #if defined(HAVE_GFC_REAL_16) || __LDBL_DIG__ > 18
> # define MIN_FIELD_WIDTH 46
> #else
> # define MIN_FIELD_WIDTH 31
> #endif
>
> yields correct results on my system, but I am not clear what FX was
> intending here. This is on a 32 bit i686-linux-gnu system and I also see
> it on x86-64.
>

I forgot to mention this warning:

In file included from ../../../trunk/libgfortran/io/write.c:63:0:
../../../trunk/libgfortran/io/write_float.def: In function ‘write_float’:
../../../trunk/libgfortran/io/write_float.def:1066:7: warning: implicit 
declaration of function ‘libgfortran_dtoaq’ [-Wimplicit-function-declaration]

I assume this is pending final decisions on the libquad implementation.

Regards,

Jerry



More information about the Fortran mailing list