if(hx>0x7fff) return w; else return -w;
if(hx>0x8000) return -w; else return w;
	long double __asinhl(long double x)#else	long double __asinhl(x)	long double x;#endif{	long double t,w;	int32_t hx,ix;	GET_LDOUBLE_EXP(hx,x);	ix = hx&0x7fff;	if(ix==0x7fff) return x+x;	/* x is inf or NaN */	if(ix< 0x3fde) {	/* |x|<2**-34 */	    if(huge+x>one) return x;	/* return x inexact except 0 */	}	if(ix>0x4020) {		/* |x| > 2**34 */	    w = __ieee754_logl(fabsl(x))+ln2;	} else if (ix>0x4000) {	/* 2**34 > |x| > 2.0 */	    t = fabsl(x);	    w = __ieee754_logl(2.0*t+one/(__ieee754_sqrtl(x*x+one)+t));	} else {		/* 2.0 > |x| > 2**-28 */	    t = x*x;	    w =__log1pl(fabsl(x)+t/(one+__ieee754_sqrtl(one+t)));	}	if(hx>0x7fff) return w; else return -w;}