Listing 3 (xdtest.c)

/*_Dtest function -- IEEE 754 version */
#include "xmath.h"

short _Dtest(double *px)
   {  /* categorize *px */
   unsigned short *ps = (unsigned short *)px;
   short xchar = (ps[_DO] & _DMASK) >> _DOFF;

   if (xchar == _DMAX) /* NaN or INF */
      return (ps[_DO] & _DFRAC || ps[_D1]
         || ps[_D2] || ps[_D3] ? NAN : INF);
   else if (0 < xchar || ps[_DO] & _DFRAC
      || ps[_D1] || ps[_D2] || ps[_D3])
      return (FINITE); /* finite */
   else
      return (0); /* zero */
   }