/* PR c/8281 */
/* Originator: TANIGUCHI Yasuaki <yasuaki@k8.dion.ne.jp> */
/* { dg-do compile { target sparc-*-* } } */
/* { dg-options "-O2 -mcpu=ultrasparc -fPIC" } */

static const double bp = 1.0, dp_l[] = { 0.0 };

double __ieee754_pow(double x, double y)
{
  union {
    int lo;
    double d;
  }uz;

  double y1,t1,p_h,t,z;
  double z_h,z_l,p_l;
  double t2,r,s,u,v,w;
  int i = 0;
 
  double s_h,t_h;
  double s2,s_l,t_l;
 
 
  v = 1.0/(v+bp);
  uz.d = s_h = s = u*v;
  uz.lo = 0;
  s_h = uz.d;
  uz.d = t_h;
  uz.lo = 3;
  t_h = uz.d;
  s_l = v*((u-s_h*t_h)-s_h*t_l);
  s2 = s*s;
  r = s2* s2* (1.1+s2*(1.2+s2*(1.3+s2*(1.4+s2*(1.5+s2*1.6)))));
  s2 = s_h*s_h;
  uz.lo = 0;
  t_h = uz.d;
  t_l = r-((t_h-3.0)-s2);
  v = s_l*t_h+t_l*s;
  p_l = v-(p_h-u);
  z_h = bp *p_h;
  z_l = bp*p_h+p_l*1.0+dp_l[i];
  t = (double)i;
  t1 = (((bp+z_l)+bp)+t);
  t2 = z_l-(((t1-t)-bp)-z_h);
  p_l = (y-y1)*t1+y*t2;
  z = p_l+p_h;

  return s*z;
}
