[Info-vax] gnulib test-fmal-ieee failure help needed.
John E. Malmberg
wb8tyw at qsl.net_work
Sun Jul 23 00:01:11 EDT 2017
On 7/22/2017 10:52 PM, John E. Malmberg wrote:
> 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.
The test-fmal1 fails in the same way as test-fmal-ieee.
The test-malm2 fails when fma returns what the debugger says is Infinity
and the test was expecting "-Infinity".
DBG> eval result
Infinity
DBG> eval -result
-Infinity
These results are showing up while am running the failed tests in debug
to get more information. So as soon as I exit one failed test, the
script moves on to the next. I am not sure how many more tests are
going to run in this pass.
Regards,
-John
wb8tyw at qsl.net_work
More information about the Info-vax
mailing list