summaryrefslogtreecommitdiff
path: root/gamma.c
diff options
context:
space:
mode:
authorpelissip <pelissip@280ebfd0-de03-0410-8827-d642c229c3f4>2004-12-16 13:37:23 +0000
committerpelissip <pelissip@280ebfd0-de03-0410-8827-d642c229c3f4>2004-12-16 13:37:23 +0000
commit6578ac3575db83f7e9db73d2acc3670c6cf9a581 (patch)
treedaa10a53ac1e27e2a4f7ba3e5df2c3aa2ad8ee37 /gamma.c
parent8044a031578316d3319dbe3744f06c94dae06039 (diff)
downloadmpfr-6578ac3575db83f7e9db73d2acc3670c6cf9a581.tar.gz
Fix bug.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@3146 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'gamma.c')
-rw-r--r--gamma.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/gamma.c b/gamma.c
index 80bbb5fca..6adfe7755 100644
--- a/gamma.c
+++ b/gamma.c
@@ -91,13 +91,11 @@ mpfr_gamma (mpfr_ptr gamma, mpfr_srcptr x, mp_rnd_t rnd_mode)
return mpfr_set_ui (gamma, 1, rnd_mode);
/* if x is an integer that fits into an unsigned long, use mpfr_fac_ui */
- if (mpfr_integer_p (x))
+ if (mpfr_integer_p (x) && mpfr_fits_ulong_p (x, GMP_RNDN))
{
unsigned long int u;
u = mpfr_get_ui (x, GMP_RNDN);
- /* u = 0 when x is 0 or x does not fit in an unsigned long */
- if (u != 0)
- return mpfr_fac_ui (gamma, u - 1, rnd_mode);
+ return mpfr_fac_ui (gamma, u - 1, rnd_mode);
}
MPFR_SAVE_EXPO_MARK (expo);