enum qfcmp_magic {
QCMP_INV = 1,
QCMP_UNORD = 2,
QCMP_EQ = 4,
QCMP_LT = 8,
QCMP_GT = 16
} magic;
int _U_Qfcmp (long double a, long double b, int);
long _U_Qfcnvfxt_quad_to_sgl (long double);
int _U_Qfeq (long double, long double);
int _U_Qfne (long double, long double);
int _U_Qfgt (long double, long double);
int _U_Qfge (long double, long double);
int _U_Qflt (long double, long double);
int _U_Qfle (long double, long double);
int _U_Qfltgt (long double, long double);
int _U_Qfunle (long double, long double);
int _U_Qfunlt (long double, long double);
int _U_Qfunge (long double, long double);
int _U_Qfungt (long double, long double);
int _U_Qfuneq (long double, long double);
int _U_Qfunord (long double, long double);
int _U_Qford (long double, long double);
int _U_Qfcomp (long double, long double);
long double _U_Qfneg (long double);
#ifdef __LP64__
int __U_Qfcnvfxt_quad_to_sgl (long double);
#endif
unsigned int _U_Qfcnvfxt_quad_to_usgl(long double);
unsigned long long _U_Qfcnvfxt_quad_to_udbl(long double);
int
_U_Qfeq (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_EQ) != 0);
}
int
_U_Qfne (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_EQ) == 0);
}
int
_U_Qfgt (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_GT) != 0);
}
int
_U_Qfge (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_GT) != 0);
}
int
_U_Qflt (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_LT) != 0);
}
int
_U_Qfle (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_LT) != 0);
}
int
_U_Qfltgt (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_LT | QCMP_GT) != 0);
}
int
_U_Qfunle (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ | QCMP_LT) != 0);
}
int
_U_Qfunlt (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_LT) != 0);
}
int
_U_Qfunge (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ | QCMP_GT) != 0);
}
int
_U_Qfungt (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_GT) != 0);
}
int
_U_Qfuneq (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ) != 0);
}
int
_U_Qfunord (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD) != 0);
}
int
_U_Qford (long double a, long double b)
{
return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_LT | QCMP_GT) != 0);
}
int
_U_Qfcomp (long double a, long double b)
{
if (_U_Qfcmp (a, b, QCMP_EQ) == 0)
return 0;
return (_U_Qfcmp (a, b, QCMP_UNORD | QCMP_EQ | QCMP_GT) != 0 ? 1 : -1);
}
long double
_U_Qfneg (long double a)
{
return (0.0L - a);
}
#ifdef __LP64__
int
__U_Qfcnvfxt_quad_to_sgl (long double a)
{
return _U_Qfcnvfxt_quad_to_sgl (a) >> 32;
}
#endif
unsigned int
_U_Qfcnvfxt_quad_to_usgl(long double a)
{
extern long long _U_Qfcnvfxt_quad_to_dbl (long double a);
return (unsigned int) _U_Qfcnvfxt_quad_to_dbl (a);
}
typedef union {
long long unsigned int u[2];
long double d[1];
} quad_type;
unsigned long long
_U_Qfcnvfxt_quad_to_udbl(long double a)
{
extern quad_type _U_Qfcnvfxt_quad_to_quad (long double a);
quad_type u;
u = _U_Qfcnvfxt_quad_to_quad(a);
return u.u[1];
}