[Info-vax] gnulib test-fmal-ieee failure help needed.

John E. Malmberg wb8tyw at qsl.net_work
Sat Jul 22 23:52:24 EDT 2017


On 7/22/2017 10:09 PM, Craig A. Berry wrote:
> On 7/22/17 8:54 PM, John E. Malmberg wrote:
>> The gnulib test-fmal-ieee is failing for the gnulib provided fmal 
>> routine.
>>
>> Actually a lot of the IEEE tests are failing.
>>
>> My compiler command line on OpenVMS 8.4 is:
>>
>> CC/STANDARD=(RELAXED)/ACCEPT=(NOVAXC,RESTR,C99)-
>>    /LIST/SHOW=(EXPAN,INCLU)/NAMES=(AS_IS,SHORT)-
>>    /MAIN=POSIX_EXIT-
>>    /FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS-
>>    /NESTED=NONE-
>>    /PREFIX=EXCEPT=(STRTOIMAX,STRTOUMAX,ISWBLANK,ISBLANK)-
>>    /WARN=(DISABLE=QUESTCOMPARE)-
>>    /DEBUG/NOOPTIMIZE/DEB=ALL/NOOPT-
>>    /DEF=-(HAVE_CONFIG_H,EXEEXT="",EXEEXT="",NO_XMALLOC,EXEEXT="",-
>>           GNULIB_STRICT_CHECKING=1,_POSIX_EXIT,_USE_STD_STAT,-
>>        _  _USE_STD_IOSTREAM)-
>>     /INC=(./,../)/OBJECT=SYS$DISK:[]fmal.o SYS$DISK:[]fmal.c
>>
>> The floating variables involved are declared double.
>>
>> The input to the failed call is:
>>
>>   fmal(Infinity, 2.0L, -Infinity) and the result is expected to be NaN.
>>
>> Is there some other compile settings that I should be using to be more 
>> compatible with GNULIB's expectations for IEEE math?
> 
> fmal is for long doubles, so passing doubles to it is unlikely to work.
> For example, you probably want LDBL_INFINITY instead of Infinity.
> Possibly related is that none of the IEEE test macros (isnan, isinf,
> etc.) in math.h on VMS works for floats or long doubles -- they only
> work for doubles. Which is a bug. We have some workarounds in Perl for
> some of it.

Your right, the gnulib fmal code is long doubles, not doubles.

VMS has a number of the declarations that should be in math.h in fp.h.

In this case INFINITY is defined as decc$gt_gbl_infinity by fp.h and is 
reported as Infinity in the VMS debugger.

Regards,
-John
wb8tyw at qsl.net_work








More information about the Info-vax mailing list