===================================================================
@@ -8513,7 +8513,7 @@ _LT_EOF
if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
else
- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
fi
aix_use_runtimelinking=no
@@ -12514,29 +12514,53 @@ else
typedef _Complex float __attribute__((mode(TC))) __complex128;
- __float128 foo (__float128 x)
+ __float128 test_cplx (__float128 x)
{
- __complex128 z1, z2;
+ __complex128 z1, z2;
- z1 = x;
- z2 = x / 7.Q;
- z2 /= z1;
+ z1 = x;
+ z2 = x / 7.Q;
+ z2 /= z1;
- return (__float128) z2;
+ return (__float128) z2;
}
- __float128 bar (__float128 x)
+ __float128 test_fabs (__float128 x)
{
+ return __builtin_fabsq (x);
+ }
+
+ __float128 test_copysign (__float128 x, __float128 y)
+ {
+ return __builtin_copysignq (x, y);
+ }
+
+ __float128 test_huge_val (__float128 x)
+ {
return x * __builtin_huge_valq ();
}
+ __float128 test_inf (__float128 x)
+ {
+ return x * __builtin_infq ();
+ }
+
+ __float128 test_nan (__float128 x)
+ {
+ return x * __builtin_nanq ("");
+ }
+
int
main ()
{
- foo (1.2Q);
- bar (1.2Q);
+ test_cplx (1.2Q);
+ test_fabs (1.2Q);
+ test_copysign (1.2Q, -1.2Q);
+ test_huge_val (1.2Q);
+ test_inf (1.2Q);
+ test_nan (1.2Q);
;
return 0;
@@ -12561,29 +12585,53 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
typedef _Complex float __attribute__((mode(TC))) __complex128;
- __float128 foo (__float128 x)
+ __float128 test_cplx (__float128 x)
{
- __complex128 z1, z2;
+ __complex128 z1, z2;
- z1 = x;
- z2 = x / 7.Q;
- z2 /= z1;
+ z1 = x;
+ z2 = x / 7.Q;
+ z2 /= z1;
- return (__float128) z2;
+ return (__float128) z2;
}
- __float128 bar (__float128 x)
+ __float128 test_fabs (__float128 x)
{
+ return __builtin_fabsq (x);
+ }
+
+ __float128 test_copysign (__float128 x, __float128 y)
+ {
+ return __builtin_copysignq (x, y);
+ }
+
+ __float128 test_huge_val (__float128 x)
+ {
return x * __builtin_huge_valq ();
}
+ __float128 test_inf (__float128 x)
+ {
+ return x * __builtin_infq ();
+ }
+
+ __float128 test_nan (__float128 x)
+ {
+ return x * __builtin_nanq ("");
+ }
+
int
main ()
{
- foo (1.2Q);
- bar (1.2Q);
+ test_cplx (1.2Q);
+ test_fabs (1.2Q);
+ test_copysign (1.2Q, -1.2Q);
+ test_huge_val (1.2Q);
+ test_inf (1.2Q);
+ test_nan (1.2Q);
;
return 0;
===================================================================
@@ -212,25 +212,49 @@ AC_CACHE_CHECK([whether __float128 is supported],
[GCC_TRY_COMPILE_OR_LINK([
typedef _Complex float __attribute__((mode(TC))) __complex128;
- __float128 foo (__float128 x)
+ __float128 test_cplx (__float128 x)
{
- __complex128 z1, z2;
+ __complex128 z1, z2;
- z1 = x;
- z2 = x / 7.Q;
- z2 /= z1;
+ z1 = x;
+ z2 = x / 7.Q;
+ z2 /= z1;
- return (__float128) z2;
+ return (__float128) z2;
}
- __float128 bar (__float128 x)
+ __float128 test_fabs (__float128 x)
{
+ return __builtin_fabsq (x);
+ }
+
+ __float128 test_copysign (__float128 x, __float128 y)
+ {
+ return __builtin_copysignq (x, y);
+ }
+
+ __float128 test_huge_val (__float128 x)
+ {
return x * __builtin_huge_valq ();
}
+
+ __float128 test_inf (__float128 x)
+ {
+ return x * __builtin_infq ();
+ }
+
+ __float128 test_nan (__float128 x)
+ {
+ return x * __builtin_nanq ("");
+ }
],[
- foo (1.2Q);
- bar (1.2Q);
+ test_cplx (1.2Q);
+ test_fabs (1.2Q);
+ test_copysign (1.2Q, -1.2Q);
+ test_huge_val (1.2Q);
+ test_inf (1.2Q);
+ test_nan (1.2Q);
],[
libquad_cv_have_float128=yes
],[
===================================================================
@@ -104,7 +104,7 @@ atan2q (__float128 y, __float128 x)
k = (iy-ix)>>48;
if(k > 120) z=pi_o_2+0.5Q*pi_lo; /* |y/x| > 2**120 */
else if(hx<0&&k<-120) z=0.0Q; /* |y|/x < -2**120 */
- else z=atanq(fabsq(y/x)); /* safe to do y/x */
+ else z=atanq(__builtin_fabsq(y/x)); /* safe to do y/x */
switch (m) {
case 0: return z ; /* atan(+,+) */
case 1: {
===================================================================
@@ -35,9 +35,9 @@ cacoshq (__complex128 x)
__real__ res = HUGE_VALQ;
if (rcls == QUADFP_NAN)
- __imag__ res = nanq ("");
+ __imag__ res = __builtin_nanq ("");
else
- __imag__ res = copysignq ((rcls == QUADFP_INFINITE
+ __imag__ res = __builtin_copysignq ((rcls == QUADFP_INFINITE
? (__real__ x < 0.0
? M_PIq - M_PI_4q : M_PI_4q)
: M_PI_2q), __imag__ x);
@@ -47,24 +47,24 @@ cacoshq (__complex128 x)
__real__ res = HUGE_VALQ;
if (icls >= QUADFP_ZERO)
- __imag__ res = copysignq (signbitq (__real__ x) ? M_PIq : 0.0,
+ __imag__ res = __builtin_copysignq (signbitq (__real__ x) ? M_PIq : 0.0,
__imag__ x);
else
- __imag__ res = nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
}
else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
{
__real__ res = 0.0;
- __imag__ res = copysignq (M_PI_2q, __imag__ x);
+ __imag__ res = __builtin_copysignq (M_PI_2q, __imag__ x);
}
/* The factor 16 is just a guess. */
- else if (16.0Q * fabsq (__imag__ x) < fabsq (__real__ x))
+ else if (16.0Q * __builtin_fabsq (__imag__ x) < __builtin_fabsq (__real__ x))
{
/* Kahan's formula which avoid cancellation through subtraction in
some cases. */
===================================================================
@@ -32,12 +32,12 @@ casinhq (__complex128 x)
{
if (icls == QUADFP_INFINITE)
{
- __real__ res = copysignq (HUGE_VALQ, __real__ x);
+ __real__ res = __builtin_copysignq (HUGE_VALQ, __real__ x);
if (rcls == QUADFP_NAN)
- __imag__ res = nanq ("");
+ __imag__ res = __builtin_nanq ("");
else
- __imag__ res = copysignq (rcls >= QUADFP_ZERO ? M_PI_2q : M_PI_4q,
+ __imag__ res = __builtin_copysignq (rcls >= QUADFP_ZERO ? M_PI_2q : M_PI_4q,
__imag__ x);
}
else if (rcls <= QUADFP_INFINITE)
@@ -45,14 +45,14 @@ casinhq (__complex128 x)
__real__ res = __real__ x;
if ((rcls == QUADFP_INFINITE && icls >= QUADFP_ZERO)
|| (rcls == QUADFP_NAN && icls == QUADFP_ZERO))
- __imag__ res = copysignq (0.0, __imag__ x);
+ __imag__ res = __builtin_copysignq (0.0, __imag__ x);
else
- __imag__ res = nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
}
else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
@@ -75,8 +75,8 @@ casinhq (__complex128 x)
/* Ensure zeros have correct sign and results are correct if
very close to branch cuts. */
- __real__ res = copysignq (__real__ res, __real__ x);
- __imag__ res = copysignq (__imag__ res, __imag__ x);
+ __real__ res = __builtin_copysignq (__real__ res, __real__ x);
+ __imag__ res = __builtin_copysignq (__imag__ res, __imag__ x);
}
return res;
===================================================================
@@ -34,13 +34,13 @@ casinq (__complex128 x)
}
else if (isinfq (__real__ x) || isinfq (__imag__ x))
{
- __real__ res = nanq ("");
- __imag__ res = copysignq (HUGE_VALQ, __imag__ x);
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_copysignq (HUGE_VALQ, __imag__ x);
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
}
else
===================================================================
@@ -32,21 +32,21 @@ catanhq (__complex128 x)
{
if (icls == QUADFP_INFINITE)
{
- __real__ res = copysignq (0.0, __real__ x);
- __imag__ res = copysignq (M_PI_2q, __imag__ x);
+ __real__ res = __builtin_copysignq (0.0, __real__ x);
+ __imag__ res = __builtin_copysignq (M_PI_2q, __imag__ x);
}
else if (rcls == QUADFP_INFINITE || rcls == QUADFP_ZERO)
{
- __real__ res = copysignq (0.0, __real__ x);
+ __real__ res = __builtin_copysignq (0.0, __real__ x);
if (icls >= QUADFP_ZERO)
- __imag__ res = copysignq (M_PI_2q, __imag__ x);
+ __imag__ res = __builtin_copysignq (M_PI_2q, __imag__ x);
else
- __imag__ res = nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
}
else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
===================================================================
@@ -32,26 +32,26 @@ catanq (__complex128 x)
{
if (rcls == QUADFP_INFINITE)
{
- __real__ res = copysignq (M_PI_2q, __real__ x);
- __imag__ res = copysignq (0.0, __imag__ x);
+ __real__ res = __builtin_copysignq (M_PI_2q, __real__ x);
+ __imag__ res = __builtin_copysignq (0.0, __imag__ x);
}
else if (icls == QUADFP_INFINITE)
{
if (rcls >= QUADFP_ZERO)
- __real__ res = copysignq (M_PI_2q, __real__ x);
+ __real__ res = __builtin_copysignq (M_PI_2q, __real__ x);
else
- __real__ res = nanq ("");
- __imag__ res = copysignq (0.0, __imag__ x);
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_copysignq (0.0, __imag__ x);
}
else if (icls == QUADFP_ZERO || icls == QUADFP_INFINITE)
{
- __real__ res = nanq ("");
- __imag__ res = copysignq (0.0, __imag__ x);
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_copysignq (0.0, __imag__ x);
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
}
else if (rcls == QUADFP_ZERO && icls == QUADFP_ZERO)
===================================================================
@@ -50,10 +50,10 @@ ccoshq (__complex128 x)
cosix = 1.0Q;
}
- if (fabsq (__real__ x) > t)
+ if (__builtin_fabsq (__real__ x) > t)
{
__float128 exp_t = expq (t);
- __float128 rx = fabsq (__real__ x);
+ __float128 rx = __builtin_fabsq (__real__ x);
if (signbitq (__real__ x))
sinix = -sinix;
rx -= t;
@@ -86,8 +86,8 @@ ccoshq (__complex128 x)
}
else
{
- __imag__ retval = __real__ x == 0.0Q ? 0.0Q : nanq ("");
- __real__ retval = nanq ("") + nanq ("");
+ __imag__ retval = __real__ x == 0.0Q ? 0.0Q : __builtin_nanq ("");
+ __real__ retval = __builtin_nanq ("") + __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (icls == QUADFP_INFINITE)
@@ -113,21 +113,21 @@ ccoshq (__complex128 x)
cosix = 1.0Q;
}
- __real__ retval = copysignq (HUGE_VALQ, cosix);
- __imag__ retval = (copysignq (HUGE_VALQ, sinix)
- * copysignq (1.0Q, __real__ x));
+ __real__ retval = __builtin_copysignq (HUGE_VALQ, cosix);
+ __imag__ retval = (__builtin_copysignq (HUGE_VALQ, sinix)
+ * __builtin_copysignq (1.0Q, __real__ x));
}
else if (icls == QUADFP_ZERO)
{
/* Imaginary part is 0.0. */
__real__ retval = HUGE_VALQ;
- __imag__ retval = __imag__ x * copysignq (1.0Q, __real__ x);
+ __imag__ retval = __imag__ x * __builtin_copysignq (1.0Q, __real__ x);
}
else
{
/* The addition raises the invalid exception. */
__real__ retval = HUGE_VALQ;
- __imag__ retval = nanq ("") + nanq ("");
+ __imag__ retval = __builtin_nanq ("") + __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (icls == QUADFP_INFINITE)
@@ -137,8 +137,8 @@ ccoshq (__complex128 x)
}
else
{
- __real__ retval = nanq ("");
- __imag__ retval = __imag__ x == 0.0 ? __imag__ x : nanq ("");
+ __real__ retval = __builtin_nanq ("");
+ __imag__ retval = __imag__ x == 0.0 ? __imag__ x : __builtin_nanq ("");
}
return retval;
===================================================================
@@ -80,8 +80,8 @@ cexpq (__complex128 x)
{
/* If the imaginary part is +-inf or NaN and the real part
is not +-inf the result is NaN + iNaN. */
- __real__ retval = nanq ("");
- __imag__ retval = nanq ("");
+ __real__ retval = __builtin_nanq ("");
+ __imag__ retval = __builtin_nanq ("");
#ifdef HAVE_FENV_H
feraiseexcept (FE_INVALID);
@@ -116,14 +116,14 @@ cexpq (__complex128 x)
cosix = 1.0Q;
}
- __real__ retval = copysignq (value, cosix);
- __imag__ retval = copysignq (value, sinix);
+ __real__ retval = __builtin_copysignq (value, cosix);
+ __imag__ retval = __builtin_copysignq (value, sinix);
}
}
else if (signbitq (__real__ x) == 0)
{
__real__ retval = HUGE_VALQ;
- __imag__ retval = nanq ("");
+ __imag__ retval = __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (icls == QUADFP_INFINITE)
@@ -133,14 +133,14 @@ cexpq (__complex128 x)
else
{
__real__ retval = 0.0Q;
- __imag__ retval = copysignq (0.0Q, __imag__ x);
+ __imag__ retval = __builtin_copysignq (0.0Q, __imag__ x);
}
}
else
{
/* If the real part is NaN the result is NaN + iNaN. */
- __real__ retval = nanq ("");
- __imag__ retval = nanq ("");
+ __real__ retval = __builtin_nanq ("");
+ __imag__ retval = __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (rcls != QUADFP_NAN || icls != QUADFP_NAN)
===================================================================
@@ -35,14 +35,14 @@ clog10q (__complex128 x)
{
/* Real and imaginary part are 0.0. */
__imag__ result = signbitq (__real__ x) ? M_PIq : 0.0Q;
- __imag__ result = copysignq (__imag__ result, __imag__ x);
+ __imag__ result = __builtin_copysignq (__imag__ result, __imag__ x);
/* Yes, the following line raises an exception. */
- __real__ result = -1.0Q / fabsq (__real__ x);
+ __real__ result = -1.0Q / __builtin_fabsq (__real__ x);
}
else if (__builtin_expect (rcls != QUADFP_NAN && icls != QUADFP_NAN, 1))
{
/* Neither real nor imaginary part is NaN. */
- __float128 absx = fabsq (__real__ x), absy = fabsq (__imag__ x);
+ __float128 absx = __builtin_fabsq (__real__ x), absy = __builtin_fabsq (__imag__ x);
int scale = 0;
if (absx < absy)
@@ -104,12 +104,12 @@ clog10q (__complex128 x)
}
else
{
- __imag__ result = nanq ("");
+ __imag__ result = __builtin_nanq ("");
if (rcls == QUADFP_INFINITE || icls == QUADFP_INFINITE)
/* Real or imaginary part is infinite. */
__real__ result = HUGE_VALQ;
else
- __real__ result = nanq ("");
+ __real__ result = __builtin_nanq ("");
}
return result;
===================================================================
@@ -31,14 +31,14 @@ clogq (__complex128 x)
{
/* Real and imaginary part are 0.0. */
__imag__ result = signbitq (__real__ x) ? M_PIq : 0.0Q;
- __imag__ result = copysignq (__imag__ result, __imag__ x);
+ __imag__ result = __builtin_copysignq (__imag__ result, __imag__ x);
/* Yes, the following line raises an exception. */
- __real__ result = -1.0Q / fabsq (__real__ x);
+ __real__ result = -1.0Q / __builtin_fabsq (__real__ x);
}
else if (__builtin_expect (rcls != QUADFP_NAN && icls != QUADFP_NAN, 1))
{
/* Neither real nor imaginary part is NaN. */
- __float128 absx = fabsq (__real__ x), absy = fabsq (__imag__ x);
+ __float128 absx = __builtin_fabsq (__real__ x), absy = __builtin_fabsq (__imag__ x);
int scale = 0;
if (absx < absy)
@@ -99,12 +99,12 @@ clogq (__complex128 x)
}
else
{
- __imag__ result = nanq ("");
+ __imag__ result = __builtin_nanq ("");
if (rcls == QUADFP_INFINITE || icls == QUADFP_INFINITE)
/* Real or imaginary part is infinite. */
__real__ result = HUGE_VALQ;
else
- __real__ result = nanq ("");
+ __real__ result = __builtin_nanq ("");
}
return result;
===================================================================
@@ -30,8 +30,8 @@ cprojq (__complex128 x)
{
__complex128 res;
- __real__ res = __builtin_inf ();
- __imag__ res = copysignq (0.0, __imag__ x);
+ __real__ res = __builtin_infq ();
+ __imag__ res = __builtin_copysignq (0.0, __imag__ x);
return res;
}
===================================================================
@@ -32,7 +32,7 @@ csinhq (__complex128 x)
int rcls = fpclassifyq (__real__ x);
int icls = fpclassifyq (__imag__ x);
- __real__ x = fabsq (__real__ x);
+ __real__ x = __builtin_fabsq (__real__ x);
if (__builtin_expect (rcls >= QUADFP_ZERO, 1))
{
@@ -53,10 +53,10 @@ csinhq (__complex128 x)
cosix = 1.0Q;
}
- if (fabsq (__real__ x) > t)
+ if (__builtin_fabsq (__real__ x) > t)
{
__float128 exp_t = expq (t);
- __float128 rx = fabsq (__real__ x);
+ __float128 rx = __builtin_fabsq (__real__ x);
if (signbitq (__real__ x))
cosix = -cosix;
rx -= t;
@@ -95,8 +95,8 @@ csinhq (__complex128 x)
if (rcls == QUADFP_ZERO)
{
/* Real part is 0.0. */
- __real__ retval = copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
- __imag__ retval = nanq ("") + nanq ("");
+ __real__ retval = __builtin_copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
+ __imag__ retval = __builtin_nanq ("") + __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (icls == QUADFP_INFINITE)
@@ -105,8 +105,8 @@ csinhq (__complex128 x)
}
else
{
- __real__ retval = nanq ("");
- __imag__ retval = nanq ("");
+ __real__ retval = __builtin_nanq ("");
+ __imag__ retval = __builtin_nanq ("");
#ifdef HAVE_FENV_H
feraiseexcept (FE_INVALID);
@@ -132,8 +132,8 @@ csinhq (__complex128 x)
cosix = 1.0;
}
- __real__ retval = copysignq (HUGE_VALQ, cosix);
- __imag__ retval = copysignq (HUGE_VALQ, sinix);
+ __real__ retval = __builtin_copysignq (HUGE_VALQ, cosix);
+ __imag__ retval = __builtin_copysignq (HUGE_VALQ, sinix);
if (negate)
__real__ retval = -__real__ retval;
@@ -148,7 +148,7 @@ csinhq (__complex128 x)
{
/* The addition raises the invalid exception. */
__real__ retval = HUGE_VALQ;
- __imag__ retval = nanq ("") + nanq ("");
+ __imag__ retval = __builtin_nanq ("") + __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (icls == QUADFP_INFINITE)
@@ -158,8 +158,8 @@ csinhq (__complex128 x)
}
else
{
- __real__ retval = nanq ("");
- __imag__ retval = __imag__ x == 0.0Q ? __imag__ x : nanq ("");
+ __real__ retval = __builtin_nanq ("");
+ __imag__ retval = __imag__ x == 0.0Q ? __imag__ x : __builtin_nanq ("");
}
return retval;
===================================================================
@@ -32,7 +32,7 @@ csinq (__complex128 x)
int rcls = fpclassifyq (__real__ x);
int icls = fpclassifyq (__imag__ x);
- __real__ x = fabsq (__real__ x);
+ __real__ x = __builtin_fabsq (__real__ x);
if (__builtin_expect (icls >= QUADFP_ZERO, 1))
{
@@ -53,10 +53,10 @@ csinq (__complex128 x)
cosix = 1.0Q;
}
- if (fabsq (__imag__ x) > t)
+ if (__builtin_fabsq (__imag__ x) > t)
{
__float128 exp_t = expq (t);
- __float128 ix = fabsq (__imag__ x);
+ __float128 ix = __builtin_fabsq (__imag__ x);
if (signbitq (__imag__ x))
cosix = -cosix;
ix -= t;
@@ -95,7 +95,7 @@ csinq (__complex128 x)
if (icls == QUADFP_ZERO)
{
/* Imaginary part is 0.0. */
- __real__ retval = nanq ("");
+ __real__ retval = __builtin_nanq ("");
__imag__ retval = __imag__ x;
#ifdef HAVE_FENV_H
@@ -105,8 +105,8 @@ csinq (__complex128 x)
}
else
{
- __real__ retval = nanq ("");
- __imag__ retval = nanq ("");
+ __real__ retval = __builtin_nanq ("");
+ __imag__ retval = __builtin_nanq ("");
#ifdef HAVE_FENV_H
feraiseexcept (FE_INVALID);
@@ -120,7 +120,7 @@ csinq (__complex128 x)
if (rcls == QUADFP_ZERO)
{
/* Real part is 0.0. */
- __real__ retval = copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
+ __real__ retval = __builtin_copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
__imag__ retval = __imag__ x;
}
else if (rcls > QUADFP_ZERO)
@@ -138,8 +138,8 @@ csinq (__complex128 x)
cosix = 1.0;
}
- __real__ retval = copysignq (HUGE_VALQ, sinix);
- __imag__ retval = copysignq (HUGE_VALQ, cosix);
+ __real__ retval = __builtin_copysignq (HUGE_VALQ, sinix);
+ __imag__ retval = __builtin_copysignq (HUGE_VALQ, cosix);
if (negate)
__real__ retval = -__real__ retval;
@@ -149,7 +149,7 @@ csinq (__complex128 x)
else
{
/* The addition raises the invalid exception. */
- __real__ retval = nanq ("");
+ __real__ retval = __builtin_nanq ("");
__imag__ retval = HUGE_VALQ;
#ifdef HAVE_FENV_H
@@ -161,10 +161,10 @@ csinq (__complex128 x)
else
{
if (rcls == QUADFP_ZERO)
- __real__ retval = copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
+ __real__ retval = __builtin_copysignq (0.0Q, negate ? -1.0Q : 1.0Q);
else
- __real__ retval = nanq ("");
- __imag__ retval = nanq ("");
+ __real__ retval = __builtin_nanq ("");
+ __imag__ retval = __builtin_nanq ("");
}
return retval;
===================================================================
@@ -43,20 +43,20 @@ csqrtq (__complex128 x)
{
if (__real__ x < 0.0Q)
{
- __real__ res = icls == QUADFP_NAN ? nanq ("") : 0;
- __imag__ res = copysignq (HUGE_VALQ, __imag__ x);
+ __real__ res = icls == QUADFP_NAN ? __builtin_nanq ("") : 0;
+ __imag__ res = __builtin_copysignq (HUGE_VALQ, __imag__ x);
}
else
{
__real__ res = __real__ x;
__imag__ res = (icls == QUADFP_NAN
- ? nanq ("") : copysignq (0.0Q, __imag__ x));
+ ? __builtin_nanq ("") : __builtin_copysignq (0.0Q, __imag__ x));
}
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
}
}
else
@@ -66,25 +66,25 @@ csqrtq (__complex128 x)
if (__real__ x < 0.0Q)
{
__real__ res = 0.0Q;
- __imag__ res = copysignq (sqrtq (-__real__ x),
+ __imag__ res = __builtin_copysignq (sqrtq (-__real__ x),
__imag__ x);
}
else
{
- __real__ res = fabsq (sqrtq (__real__ x));
- __imag__ res = copysignq (0.0Q, __imag__ x);
+ __real__ res = __builtin_fabsq (sqrtq (__real__ x));
+ __imag__ res = __builtin_copysignq (0.0Q, __imag__ x);
}
}
else if (__builtin_expect (rcls == QUADFP_ZERO, 0))
{
__float128 r;
- if (fabsq (__imag__ x) >= 2.0Q * FLT128_MIN)
- r = sqrtq (0.5Q * fabsq (__imag__ x));
+ if (__builtin_fabsq (__imag__ x) >= 2.0Q * FLT128_MIN)
+ r = sqrtq (0.5Q * __builtin_fabsq (__imag__ x));
else
- r = 0.5Q * sqrtq (2.0Q * fabsq (__imag__ x));
+ r = 0.5Q * sqrtq (2.0Q * __builtin_fabsq (__imag__ x));
__real__ res = r;
- __imag__ res = copysignq (r, __imag__ x);
+ __imag__ res = __builtin_copysignq (r, __imag__ x);
}
else
{
@@ -91,23 +91,23 @@ csqrtq (__complex128 x)
__float128 d, r, s;
int scale = 0;
- if (fabsq (__real__ x) > FLT128_MAX / 4.0Q)
+ if (__builtin_fabsq (__real__ x) > FLT128_MAX / 4.0Q)
{
scale = 1;
__real__ x = scalbnq (__real__ x, -2 * scale);
__imag__ x = scalbnq (__imag__ x, -2 * scale);
}
- else if (fabsq (__imag__ x) > FLT128_MAX / 4.0Q)
+ else if (__builtin_fabsq (__imag__ x) > FLT128_MAX / 4.0Q)
{
scale = 1;
- if (fabsq (__real__ x) >= 4.0Q * FLT128_MIN)
+ if (__builtin_fabsq (__real__ x) >= 4.0Q * FLT128_MIN)
__real__ x = scalbnq (__real__ x, -2 * scale);
else
__real__ x = 0.0Q;
__imag__ x = scalbnq (__imag__ x, -2 * scale);
}
- else if (fabsq (__real__ x) < FLT128_MIN
- && fabsq (__imag__ x) < FLT128_MIN)
+ else if (__builtin_fabsq (__real__ x) < FLT128_MIN
+ && __builtin_fabsq (__imag__ x) < FLT128_MIN)
{
scale = -(FLT128_MANT_DIG / 2);
__real__ x = scalbnq (__real__ x, -2 * scale);
@@ -125,7 +125,7 @@ csqrtq (__complex128 x)
else
{
s = sqrtq (0.5Q * (d - __real__ x));
- r = fabsq (0.5Q * (__imag__ x / s));
+ r = __builtin_fabsq (0.5Q * (__imag__ x / s));
}
if (scale)
@@ -135,7 +135,7 @@ csqrtq (__complex128 x)
}
__real__ res = r;
- __imag__ res = copysignq (s, __imag__ x);
+ __imag__ res = __builtin_copysignq (s, __imag__ x);
}
}
===================================================================
@@ -33,8 +33,8 @@ ctanhq (__complex128 x)
{
if (__quadmath_isinf_nsq (__real__ x))
{
- __real__ res = copysignq (1.0Q, __real__ x);
- __imag__ res = copysignq (0.0Q, __imag__ x);
+ __real__ res = __builtin_copysignq (1.0Q, __real__ x);
+ __imag__ res = __builtin_copysignq (0.0Q, __imag__ x);
}
else if (__imag__ x == 0.0Q)
{
@@ -42,8 +42,8 @@ ctanhq (__complex128 x)
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (__quadmath_isinf_nsq (__imag__ x))
@@ -71,7 +71,7 @@ ctanhq (__complex128 x)
cosix = 1.0Q;
}
- if (fabsq (__real__ x) > t)
+ if (__builtin_fabsq (__real__ x) > t)
{
/* Avoid intermediate overflow when the imaginary part of
the result may be subnormal. Ignoring negligible terms,
@@ -79,9 +79,9 @@ ctanhq (__complex128 x)
sin(y)*cos(y)/sinh(x)^2 = 4*sin(y)*cos(y)/exp(2x). */
__float128 exp_2t = expq (2 * t);
- __real__ res = copysignq (1.0, __real__ x);
+ __real__ res = __builtin_copysignq (1.0, __real__ x);
__imag__ res = 4 * sinix * cosix;
- __real__ x = fabsq (__real__ x);
+ __real__ x = __builtin_fabsq (__real__ x);
__real__ x -= t;
__imag__ res /= exp_2t;
if (__real__ x > t)
@@ -96,7 +96,7 @@ ctanhq (__complex128 x)
else
{
__float128 sinhrx, coshrx;
- if (fabsq (__real__ x) > FLT128_MIN)
+ if (__builtin_fabsq (__real__ x) > FLT128_MIN)
{
sinhrx = sinhq (__real__ x);
coshrx = coshq (__real__ x);
@@ -107,7 +107,7 @@ ctanhq (__complex128 x)
coshrx = 1.0Q;
}
- if (fabsq (sinhrx) > fabsq (cosix) * FLT128_EPSILON)
+ if (__builtin_fabsq (sinhrx) > __builtin_fabsq (cosix) * FLT128_EPSILON)
den = sinhrx * sinhrx + cosix * cosix;
else
den = cosix * cosix;
===================================================================
@@ -33,8 +33,8 @@ ctanq (__complex128 x)
{
if (__quadmath_isinf_nsq (__imag__ x))
{
- __real__ res = copysignq (0.0Q, __real__ x);
- __imag__ res = copysignq (1.0Q, __imag__ x);
+ __real__ res = __builtin_copysignq (0.0Q, __real__ x);
+ __imag__ res = __builtin_copysignq (1.0Q, __imag__ x);
}
else if (__real__ x == 0.0Q)
{
@@ -42,8 +42,8 @@ ctanq (__complex128 x)
}
else
{
- __real__ res = nanq ("");
- __imag__ res = nanq ("");
+ __real__ res = __builtin_nanq ("");
+ __imag__ res = __builtin_nanq ("");
#ifdef HAVE_FENV_H
if (__quadmath_isinf_nsq (__real__ x))
@@ -71,7 +71,7 @@ ctanq (__complex128 x)
cosrx = 1.0Q;
}
- if (fabsq (__imag__ x) > t)
+ if (__builtin_fabsq (__imag__ x) > t)
{
/* Avoid intermediate overflow when the real part of the
result may be subnormal. Ignoring negligible terms, the
@@ -79,9 +79,9 @@ ctanq (__complex128 x)
sin(x)*cos(x)/sinh(y)^2 = 4*sin(x)*cos(x)/exp(2y). */
__float128 exp_2t = expq (2 * t);
- __imag__ res = copysignq (1.0Q, __imag__ x);
+ __imag__ res = __builtin_copysignq (1.0Q, __imag__ x);
__real__ res = 4 * sinrx * cosrx;
- __imag__ x = fabsq (__imag__ x);
+ __imag__ x = __builtin_fabsq (__imag__ x);
__imag__ x -= t;
__real__ res /= exp_2t;
if (__imag__ x > t)
@@ -96,7 +96,7 @@ ctanq (__complex128 x)
else
{
__float128 sinhix, coshix;
- if (fabsq (__imag__ x) > FLT128_MIN)
+ if (__builtin_fabsq (__imag__ x) > FLT128_MIN)
{
sinhix = sinhq (__imag__ x);
coshix = coshq (__imag__ x);
@@ -107,7 +107,7 @@ ctanq (__complex128 x)
coshix = 1.0Q;
}
- if (fabsq (sinhix) > fabsq (cosrx) * FLT128_EPSILON)
+ if (__builtin_fabsq (sinhix) > __builtin_fabsq (cosrx) * FLT128_EPSILON)
den = cosrx * cosrx + sinhix * sinhix;
else
den = cosrx * cosrx;
===================================================================
@@ -884,7 +884,7 @@ erfcq (__float128 x)
if ((ix >= 0x40022000) && (sign & 0x80000000))
return two - tiny;
- x = fabsq (x);
+ x = __builtin_fabsq (x);
z = one / (x * x);
i = 8.0 / x;
switch (i)
===================================================================
@@ -688,7 +688,7 @@ j0q (__float128 x)
if (x == 0.0Q)
return 1.0Q;
- xx = fabsq (x);
+ xx = __builtin_fabsq (x);
if (xx <= 2.0Q)
{
/* 0 <= x <= 2 */
@@ -829,7 +829,7 @@ y0q (__float128 x)
return (zero / (zero * x));
return -HUGE_VALQ + x;
}
- xx = fabsq (x);
+ xx = __builtin_fabsq (x);
if (xx <= 0x1p-57)
return U0 + TWOOPI * logq (x);
if (xx <= 2.0Q)
===================================================================
@@ -693,7 +693,7 @@ j1q (__float128 x)
}
if (x == 0.0Q)
return x;
- xx = fabsq (x);
+ xx = __builtin_fabsq (x);
if (xx <= 2.0Q)
{
/* 0 <= x <= 2 */
@@ -835,7 +835,7 @@ y1q (__float128 x)
return (zero / (zero * x));
return -HUGE_VALQ + x;
}
- xx = fabsq (x);
+ xx = __builtin_fabsq (x);
if (xx <= 0x1p-114)
return -TWOOPI / x;
if (xx <= 2.0Q)
===================================================================
@@ -102,7 +102,7 @@ jnq (int n, __float128 x)
if (n == 1)
return (j1q (x));
sgn = (n & 1) & (se >> 31); /* even n -- 0, odd n -- sign(x) */
- x = fabsq (x);
+ x = __builtin_fabsq (x);
if (x == 0.0Q || ix >= 0x7fff0000) /* if x is 0 or inf */
b = zero;
@@ -243,7 +243,7 @@ jnq (int n, __float128 x)
*/
tmp = n;
v = two / x;
- tmp = tmp * logq (fabsq (v * tmp));
+ tmp = tmp * logq (__builtin_fabsq (v * tmp));
if (tmp < 1.1356523406294143949491931077970765006170e+04Q)
{
@@ -280,7 +280,7 @@ jnq (int n, __float128 x)
*/
z = j0q (x);
w = j1q (x);
- if (fabsq (z) >= fabsq (w))
+ if (__builtin_fabsq (z) >= __builtin_fabsq (w))
b = (t * z / b);
else
b = (t * w / a);
===================================================================
@@ -29,7 +29,7 @@ logbq (__float128 x)
GET_FLT128_WORDS64 (hx, lx, x);
hx &= 0x7fffffffffffffffLL; /* high |x| */
if ((hx | lx) == 0)
- return -1.0 / fabsq (x);
+ return -1.0 / __builtin_fabsq (x);
if (hx >= 0x7fff000000000000LL)
return x * x;
if ((ex = hx >> 48) == 0) /* IEEE 754 logb */
===================================================================
@@ -235,7 +235,7 @@ powq (__float128 x, __float128 y)
}
}
- ax = fabsq (x);
+ ax = __builtin_fabsq (x);
/* special value of x */
if ((p.words32.w1 | p.words32.w2 | p.words32.w3) == 0)
{
===================================================================
@@ -47,8 +47,8 @@ remainderq (__float128 x, __float128 p)
if (hp<=0x7ffdffffffffffffLL) x = fmodq (x,p+p); /* now x < 2p */
if (((hx-hp)|(lx-lp))==0) return zero*x;
- x = fabsq(x);
- p = fabsq(p);
+ x = __builtin_fabsq(x);
+ p = __builtin_fabsq(p);
if (hp<0x0002000000000000LL) {
if(x+x>p) {
x-=p;
===================================================================
@@ -56,8 +56,8 @@ remquoq (__float128 x, __float128 y, int *quo)
return zero * x;
}
- x = fabsq (x);
- y = fabsq (y);
+ x = __builtin_fabsq (x);
+ y = __builtin_fabsq (y);
cquo = 0;
if (x >= 4 * y)
===================================================================
@@ -41,9 +41,9 @@ scalblnq (__float128 x, long int n)
k = ((hx>>48)&0x7fff) - 114;
}
if (k==0x7fff) return x+x; /* NaN or Inf */
- if (n< -50000) return tiny*copysignq(tiny,x); /*underflow*/
+ if (n< -50000) return tiny*__builtin_copysignq(tiny,x); /*underflow*/
if (n> 50000 || k+n > 0x7ffe)
- return huge*copysignq(huge,x); /* overflow */
+ return huge*__builtin_copysignq(huge,x); /* overflow */
/* Now k and n are bounded we know that k = k+n does not
overflow. */
k = k+n;
@@ -50,7 +50,7 @@ scalblnq (__float128 x, long int n)
if (k > 0) /* normal result */
{SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
if (k <= -114)
- return tiny*copysignq(tiny,x); /*underflow*/
+ return tiny*__builtin_copysignq(tiny,x); /*underflow*/
k += 114; /* subnormal result */
SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
return x*twom114;
===================================================================
@@ -42,9 +42,9 @@ scalbnq (__float128 x, int n)
k = ((hx>>48)&0x7fff) - 114;
}
if (k==0x7fff) return x+x; /* NaN or Inf */
- if (n< -50000) return tiny*copysignq(tiny,x); /*underflow*/
+ if (n< -50000) return tiny*__builtin_copysignq(tiny,x); /*underflow*/
if (n> 50000 || k+n > 0x7ffe)
- return huge*copysignq(huge,x); /* overflow */
+ return huge*__builtin_copysignq(huge,x); /* overflow */
/* Now k and n are bounded we know that k = k+n does not
overflow. */
k = k+n;
@@ -51,7 +51,7 @@ scalbnq (__float128 x, int n)
if (k > 0) /* normal result */
{SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48)); return x;}
if (k <= -114)
- return tiny*copysignq(tiny,x); /*underflow*/
+ return tiny*__builtin_copysignq(tiny,x); /*underflow*/
k += 114; /* subnormal result */
SET_FLT128_MSW64(x,(hx&0x8000ffffffffffffULL)|(k<<48));
return x*twom114;
===================================================================
@@ -105,7 +105,7 @@ __quadmath_kernel_sinq (__float128 x, __float128 y
sinq(h+l) = sinq(h)cosq(l) + cosq(h)sinq(l). */
index = 0x3ffe - (tix >> 16);
hix = (tix + (0x200 << index)) & (0xfffffc00 << index);
- x = fabsq (x);
+ x = __builtin_fabsq (x);
switch (index)
{
case 0: index = ((45 << 10) + hix - 0x3ffe0000) >> 8; break;
===================================================================
@@ -98,7 +98,7 @@ __quadmath_kernel_tanq (__float128 x, __float128 y
{ /* generate inexact */
if ((ix | u.words32.w1 | u.words32.w2 | u.words32.w3
| (iy + 1)) == 0)
- return one / fabsq (x);
+ return one / __builtin_fabsq (x);
else
return (iy == 1) ? x : -one / x;
}
===================================================================
@@ -49,8 +49,8 @@ mul_split (__float128 *hi, __float128 *lo, __float
static int
compare (const void *p, const void *q)
{
- __float128 pld = fabsq (*(const __float128 *) p);
- __float128 qld = fabsq (*(const __float128 *) q);
+ __float128 pld = __builtin_fabsq (*(const __float128 *) p);
+ __float128 qld = __builtin_fabsq (*(const __float128 *) q);
if (pld < qld)
return -1;
else if (pld == qld)