if (x <= 0.0L) { if (x == 0.0L) return (-1.0L / (x - x)); else return (x - x) / (x - x); } if (!__finitel (x))
GET_LDOUBLE_WORDS64 (hx, lx, x); if (((hx & 0x7fffffffffffffffLL) | lx) == 0) return (-1.0L / (x - x)); if (hx < 0) return (x - x) / (x - x); if (hx >= 0x7fff000000000000LL)
__ieee754_log10l (x)     long double x;{  long double z;  long double y;  int e;/* Test for domain */  if (x <= 0.0L)    {      if (x == 0.0L)	return (-1.0L / (x - x));      else	return (x - x) / (x - x);    }  if (!__finitel (x))    return (x + x);/* separate mantissa from exponent *//* Note, frexp is used so that denormal numbers * will be handled properly. */  x = __frexpl (x, &e);/* logarithm using log(x) = z + z**3 P(z)/Q(z), * where z = 2(x-1)/x+1) */  if ((e > 2) || (e < -2))    {      if (x < SQRTH)	{			/* 2( 2x-1 )/( 2x+1 ) */	  e -= 1;	  z = x - 0.5L;	  y = 0.5L * z + 0.5L;	}      else	{			/*  2 (x-1)/(x+1)   */	  z = x - 0.5L;	  z -= 0.5L;	  y = 0.5L * x + 0.5L;	}      x = z / y;      z = x * x;      y = x * (z * neval (z, R, 5) / deval (z, S, 5));      goto done;    }/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */  if (x < SQRTH)    {      e -= 1;      x = 2.0 * x - 1.0L;	/*  2x - 1  */    }  else    {      x = x - 1.0L;    }  z = x * x;  y = x * (z * neval (x, P, 12) / deval (x, Q, 11));  y = y - 0.5 * z;done:  /* Multiply log of fraction by log10(e)   * and base 2 exponent by log10(2).   */  z = y * L10EB;  z += x * L10EB;  z += e * L102B;  z += y * L10EA;  z += x * L10EA;  z += e * L102A;  return (z);}