/* wrapper yn */ double yn (int n, double x) { if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0) && _LIB_VERSION != _IEEE_) { if (x < 0.0) { /* d = zero/(x-x) */ feraiseexcept (FE_INVALID); return __kernel_standard (n, x, 13); } else if (x == 0.0) { /* d = -one/(x-x) */ feraiseexcept (FE_DIVBYZERO); return __kernel_standard (n, x, 12); } else if (_LIB_VERSION != _POSIX_) /* yn(n,x>X_TLOSS) */ return __kernel_standard (n, x, 39); } return __ieee754_yn (n, x); }
void Math_yn(void *fp) { F_Math_yn *f; f = fp; *f->ret = __ieee754_yn(f->n, f->x); }
double yn(int n, double x) /* wrapper yn */ { #ifdef _IEEE_LIBM return __ieee754_yn(n,x); #else double z; z = __ieee754_yn(n,x); if(_LIB_VERSION == _IEEE_ || isnan(x) ) return z; if(x <= 0.0){ if(x==0.0) /* d= -one/(x-x); */ return __kernel_standard((double)n,x,12); else /* d = zero/(x-x); */ return __kernel_standard((double)n,x,13); } if(x>X_TLOSS) { return __kernel_standard((double)n,x,39); /* yn(x>X_TLOSS,n) */ } else return z; #endif }