diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2006-08-21 12:45:17 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2006-08-21 12:45:17 +0000 |
commit | 5d14ce4167d150657f030083b31312c1da612bce (patch) | |
tree | 0615667d94e45433c0a95b74a42bee2eb98feca5 /lngamma.c | |
parent | ab9a0cc54b357ddd48607767d376941defc65e92 (diff) | |
download | mpfr-5d14ce4167d150657f030083b31312c1da612bce.tar.gz |
Fixed an exponent/flags-related bug in lngamma.c.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/2.2@4137 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'lngamma.c')
-rw-r--r-- | lngamma.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -154,11 +154,16 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mp_rnd_t rnd) } /* if x < 0 and -2k-1 <= x <= -2k, then lngamma(x) = NaN */ - if (MPFR_IS_NEG(z0) && ((mpfr_get_si (z0, GMP_RNDZ) % 2) == 0 - || mpfr_integer_p (z0))) + if (MPFR_IS_NEG (z0)) { - MPFR_SET_NAN (y); - MPFR_RET_NAN; + MPFR_SAVE_EXPO_MARK (expo); + if (mpfr_get_si (z0, GMP_RNDZ) % 2 == 0 || mpfr_integer_p (z0)) + { + MPFR_SAVE_EXPO_FREE (expo); + MPFR_SET_NAN (y); + MPFR_RET_NAN; + } + MPFR_SAVE_EXPO_FREE (expo); } #endif |