summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2015-06-10 08:48:24 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2015-06-10 08:48:24 +0000
commit05c69ce9d22e5d17e8aa1c11152dc1bf8425b98c (patch)
treeb629b935f83aa52c890a84781cfa03bbfb536b60
parentf7df955d88c163fb10c711d750da25443614cd75 (diff)
downloadmpfr-05c69ce9d22e5d17e8aa1c11152dc1bf8425b98c.tar.gz
[src/lngamma.c] For mpfr_lgamma and mpfr_lngamma, the exponent range
was not restored in some cases (some large results). git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@9543 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r--src/lngamma.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lngamma.c b/src/lngamma.c
index cf72aa09f..0038fb8ad 100644
--- a/src/lngamma.c
+++ b/src/lngamma.c
@@ -217,8 +217,9 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
in algorithms.tex */
if (MPFR_IS_INF(t))
{
- inexact = mpfr_overflow (y, rnd, 1);
mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
+ inexact = mpfr_overflow (y, rnd, 1);
return inexact;
}
if (MPFR_GET_EXP(t) - MPFR_PREC(t) >= 62)
@@ -229,7 +230,8 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mpfr_rnd_t rnd)
{
inexact = mpfr_set (y, t, rnd);
mpfr_clear (t);
- return inexact;
+ MPFR_SAVE_EXPO_FREE (expo);
+ return mpfr_check_range (y, inexact, rnd);
}
}
mpfr_clear (t);