__HI(x) = ix;
u.d = x; __HI(u) = ix;		 x = u.d;
	double __ieee754_atanh(double x)#else	double __ieee754_atanh(x)	double x;#endif{	double t;	int hx,ix;	unsigned lx;	hx = __HI(x);		/* high word */	lx = __LO(x);		/* low word */	ix = hx&0x7fffffff;	if ((ix|((lx|(-(int)lx))>>31))>0x3ff00000) /* |x|>1 */	    return (x-x)/(x-x);	if(ix==0x3ff00000) 	    return x/zero;	if(ix<0x3e300000&&(really_big+x)>zero) return x;	/* x<2**-28 */	__HI(x) = ix;		/* x <- |x| */	if(ix<0x3fe00000) {		/* x < 0.5 */	    t = x+x;	    t = 0.5*fd_log1p(t+t*x/(one-x));	} else 	    t = 0.5*fd_log1p((x+x)/(one-x));	if(hx>=0) return t; else return -t;}