lx = __LO(x);
lx = __LO(un);
	double __ieee754_y0(double x) #else	double __ieee754_y0(x) 	double x;#endif{	double z, s,c,ss,cc,u,v;	int hx,ix,lx;        hx = __HI(x);        ix = 0x7fffffff&hx;        lx = __LO(x);    /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0  */	if(ix>=0x7ff00000) return  one/(x+x*x);         if((ix|lx)==0) return -one/zero;        if(hx<0) return zero/zero;        if(ix >= 0x40000000) {  /* |x| >= 2.0 */        /* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))         * where x0 = x-pi/4         *      Better formula:         *              cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)         *                      =  1/sqrt(2) * (sin(x) + cos(x))         *              sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)         *                      =  1/sqrt(2) * (sin(x) - cos(x))         * To avoid cancellation, use         *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))         * to compute the worse one.         */                s = fd_sin(x);                c = fd_cos(x);                ss = s-c;                cc = s+c;	/*	 * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)	 * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)	 */                if(ix<0x7fe00000) {  /* make sure x+x not overflow */                    z = -fd_cos(x+x);                    if ((s*c)<zero) cc = z/ss;                    else            ss = z/cc;                }                if(ix>0x48000000) z = (invsqrtpi*ss)/fd_sqrt(x);                else {                    u = pzero(x); v = qzero(x);                    z = invsqrtpi*(u*ss+v*cc)/fd_sqrt(x);                }                return z;	}	if(ix<=0x3e400000) {	/* x < 2**-27 */	    return(u00 + tpi*__ieee754_log(x));	}	z = x*x;	u = u00+z*(u01+z*(u02+z*(u03+z*(u04+z*(u05+z*u06)))));	v = one+z*(v01+z*(v02+z*(v03+z*v04)));	return(u/v + tpi*(__ieee754_j0(x)*__ieee754_log(x)));}