if (sign & 0x80000000)
if ((sign & 0x80000000) == 0)
__ieee754_acosl (long double x)#elselong double__ieee754_acosl (x)     long double x;#endif{  long double z, r, w, p, q, s, t, f2;  int32_t ix, sign;  ieee854_long_double_shape_type u;  u.value = x;  sign = u.parts32.w0;  ix = sign & 0x7fffffff;  u.parts32.w0 = ix;		/* |x| */  if (ix >= 0x3fff0000)		/* |x| >= 1 */    {      if (ix == 0x3fff0000	  && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)	{			/* |x| == 1 */	  if (sign & 0x80000000)	    return 0.0;		/* acos(1) = 0  */	  else	    return (2.0 * pio2_hi) + (2.0 * pio2_lo);	/* acos(-1)= pi */	}      return (x - x) / (x - x);	/* acos(|x| > 1) is NaN */    }  else if (ix < 0x3ffe0000)	/* |x| < 0.5 */    {      if (ix < 0x3fc60000)	/* |x| < 2**-57 */	return pio2_hi + pio2_lo;      if (ix < 0x3ffde000)	/* |x| < .4375 */	{	  /* Arcsine of x.  */	  z = x * x;	  p = (((((((((pS9 * z		       + pS8) * z		      + pS7) * z		     + pS6) * z		    + pS5) * z		   + pS4) * z		  + pS3) * z		 + pS2) * z		+ pS1) * z	       + pS0) * z;	  q = (((((((( z		       + qS8) * z		     + qS7) * z		    + qS6) * z		   + qS5) * z		  + qS4) * z		 + qS3) * z		+ qS2) * z	       + qS1) * z	    + qS0;	  r = x + x * p / q;	  z = pio2_hi - (r - pio2_lo);	  return z;	}      /* .4375 <= |x| < .5 */      t = u.value - 0.4375L;      p = ((((((((((P10 * t		    + P9) * t		   + P8) * t		  + P7) * t		 + P6) * t		+ P5) * t	       + P4) * t	      + P3) * t	     + P2) * t	    + P1) * t	   + P0) * t;      q = (((((((((t		   + Q9) * t		  + Q8) * t		 + Q7) * t		+ Q6) * t	       + Q5) * t	      + Q4) * t	     + Q3) * t	    + Q2) * t	   + Q1) * t	+ Q0;      r = p / q;      if (sign & 0x80000000)	r = pimacosr4375 - r;      else	r = acosr4375 + r;      return r;    }  else if (ix < 0x3ffe4000)	/* |x| < 0.625 */    {      t = u.value - 0.5625L;      p = ((((((((((rS10 * t		    + rS9) * t		   + rS8) * t		  + rS7) * t		 + rS6) * t		+ rS5) * t	       + rS4) * t	      + rS3) * t	     + rS2) * t	    + rS1) * t	   + rS0) * t;      q = (((((((((t		   + sS9) * t		  + sS8) * t		 + sS7) * t		+ sS6) * t	       + sS5) * t	      + sS4) * t	     + sS3) * t	    + sS2) * t	   + sS1) * t	+ sS0;      if (sign & 0x80000000)	r = pimacosr5625 - p / q;      else	r = acosr5625 + p / q;      return r;    }  else    {				/* |x| >= .625 */      z = (one - u.value) * 0.5;      s = __ieee754_sqrtl (z);      /* Compute an extended precision square root from	 the Newton iteration  s -> 0.5 * (s + z / s).         The change w from s to the improved value is	    w = 0.5 * (s + z / s) - s  = (s^2 + z)/2s - s = (z - s^2)/2s.          Express s = f1 + f2 where f1 * f1 is exactly representable.	  w = (z - s^2)/2s = (z - f1^2 - 2 f1 f2 - f2^2)/2s .          s + w has extended precision.  */      u.value = s;      u.parts32.w2 = 0;      u.parts32.w3 = 0;      f2 = s - u.value;      w = z - u.value * u.value;      w = w - 2.0 * u.value * f2;      w = w - f2 * f2;      w = w / (2.0 * s);      /* Arcsine of s.  */      p = (((((((((pS9 * z		   + pS8) * z		  + pS7) * z		 + pS6) * z		+ pS5) * z	       + pS4) * z	      + pS3) * z	     + pS2) * z	    + pS1) * z	   + pS0) * z;      q = (((((((( z		   + qS8) * z		 + qS7) * z		+ qS6) * z	       + qS5) * z	      + qS4) * z	     + qS3) * z	    + qS2) * z	   + qS1) * z	+ qS0;      r = s + (w + s * p / q);      if (sign & 0x80000000)	w = pio2_hi + (pio2_lo - r);      else	w = r;      return 2.0 * w;    }}