/*  DO NOT EDIT THIS FILE.

    It has been auto-edited by fixincludes from:

	"fixinc/tests/inc/internal/math_core.h"

    This had to be done to correct non-standard usages in the
    original, manufacturer supplied header file.  */



#if defined( IRIX___GENERIC1_CHECK )
extern int isnan(double);
extern int isnanf(float);
extern int isnanl(long double);
#define isnan(x) (sizeof(x) == sizeof(double) ? _isnan(x) \
               : sizeof(x) == sizeof(float) ? _isnanf(x) \
               : _isnanl(x))


#endif  /* IRIX___GENERIC1_CHECK */


#if defined( IRIX___GENERIC2_CHECK )
#define isless(x,y) \
  ((sizeof(x)<=4 && sizeof(y)<=4) ? _islessf(x,y) \
   : (sizeof(x)<=8 && sizeof(y)<=8) ? _isless(x,y) \
   : _islessl(x,y))

#endif  /* IRIX___GENERIC2_CHECK */
