MPFR_COLD_FUNCTION_ATTR int mpfr_overflow (mpfr_ptr x, mpfr_rnd_t rnd_mode, int sign) { int inex; MPFR_LOG_FUNC (("x[%Pu]=%.*Rg rnd=%d sign=%d", mpfr_get_prec (x), mpfr_log_prec, x, rnd_mode, sign), ("x[%Pu]=%.*Rg", mpfr_get_prec (x), mpfr_log_prec, x)); MPFR_ASSERT_SIGN (sign); if (MPFR_IS_LIKE_RNDZ(rnd_mode, sign < 0)) { mpfr_setmax (x, __gmpfr_emax); inex = -1; } else { MPFR_SET_INF(x); inex = 1; } MPFR_SET_SIGN(x, sign); __gmpfr_flags |= MPFR_FLAGS_INEXACT | MPFR_FLAGS_OVERFLOW; return sign > 0 ? inex : -inex; }
int mpfr_overflow (mpfr_ptr x, mpfr_rnd_t rnd_mode, int sign) { int inex; MPFR_ASSERT_SIGN(sign); if (MPFR_IS_LIKE_RNDZ(rnd_mode, sign < 0)) { mpfr_setmax (x, __gmpfr_emax); inex = -1; } else { MPFR_SET_INF(x); inex = 1; } MPFR_SET_SIGN(x,sign); __gmpfr_flags |= MPFR_FLAGS_INEXACT | MPFR_FLAGS_OVERFLOW; return sign > 0 ? inex : -inex; }
int mpfr_overflow (mpfr_ptr x, mp_rnd_t rnd_mode, int sign) { int inex; MPFR_ASSERT_SIGN(sign); MPFR_CLEAR_FLAGS(x); if (rnd_mode == GMP_RNDN || MPFR_IS_RNDUTEST_OR_RNDDNOTTEST(rnd_mode, sign > 0)) { MPFR_SET_INF(x); inex = 1; } else { mpfr_setmax (x, __gmpfr_emax); inex = -1; } MPFR_SET_SIGN(x,sign); __gmpfr_flags |= MPFR_FLAGS_INEXACT | MPFR_FLAGS_OVERFLOW; return sign > 0 ? inex : -inex; }
int mpfr_underflow (mpfr_ptr x, mp_rnd_t rnd_mode, int sign) { int inex; MPFR_ASSERT_SIGN (sign); if (rnd_mode == GMP_RNDN || MPFR_IS_RNDUTEST_OR_RNDDNOTTEST(rnd_mode, MPFR_IS_POS_SIGN (sign))) { mpfr_setmin (x, __gmpfr_emin); inex = 1; } else { MPFR_SET_ZERO(x); inex = -1; } MPFR_SET_SIGN(x, sign); __gmpfr_flags |= MPFR_FLAGS_INEXACT | MPFR_FLAGS_UNDERFLOW; return sign > 0 ? inex : -inex; }