summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lngamma.c2
-rw-r--r--tests/tlngamma.c8
2 files changed, 9 insertions, 1 deletions
diff --git a/lngamma.c b/lngamma.c
index fcef9bef2..1564f2800 100644
--- a/lngamma.c
+++ b/lngamma.c
@@ -167,7 +167,7 @@ GAMMA_FUNC (mpfr_ptr y, mpfr_srcptr z0, mp_rnd_t rnd)
compared = mpfr_cmp_ui (z0, 1);
#ifndef IS_GAMMA
- if (compared == 0) /* lngamma(1) = +0 */
+ if (compared == 0 || mpfr_cmp_ui (z0, 2) == 0) /* lngamma(1 or 2) = +0 */
return mpfr_set_ui (y, 0, GMP_RNDN);
#endif
diff --git a/tests/tlngamma.c b/tests/tlngamma.c
index a4e421ba3..3e012091c 100644
--- a/tests/tlngamma.c
+++ b/tests/tlngamma.c
@@ -93,6 +93,14 @@ special (void)
exit (1);
}
+ mpfr_set_ui (x, 2, GMP_RNDN);
+ mpfr_lngamma (y, x, GMP_RNDN);
+ if (mpfr_cmp_ui (y, 0))
+ {
+ printf ("Error for lngamma(2)\n");
+ exit (1);
+ }
+
mpfr_set_prec (x, 53);
mpfr_set_prec (y, 53);