diff --git a/src/math/lgamma.c b/src/math/lgamma.c index cd74903..ecb1dbb 100644 --- a/src/math/lgamma.c +++ b/src/math/lgamma.c @@ -35,7 +35,7 @@ int main(void) err++; } d = ulperr(y, p->y, p->dy); - if (!checkulp(d, p->r) || yi != p->i) { + if (!checkulp(d, p->r) || (!isnan(p->x) && p->x!=-inf && !(p->e&DIVBYZERO) && yi != p->i)) { printf("%s:%d: %s lgamma(%a) want %a,%lld got %a,%d ulperr %.3f = %a + %a\n", p->file, p->line, rstr(p->r), p->x, p->y, p->i, y, yi, d, d-p->dy, p->dy); err++; diff --git a/src/math/lgamma_r.c b/src/math/lgamma_r.c index 0645feb..78b66ea 100644 --- a/src/math/lgamma_r.c +++ b/src/math/lgamma_r.c @@ -34,7 +34,7 @@ int main(void) err++; } d = ulperr(y, p->y, p->dy); - if (!checkulp(d, p->r) || yi != p->i) { + if (!checkulp(d, p->r) || (!isnan(p->x) && p->x!=-inf && !(p->e&DIVBYZERO) && yi != p->i)) { printf("%s:%d: %s lgamma_r(%a) want %a,%lld got %a,%d ulperr %.3f = %a + %a\n", p->file, p->line, rstr(p->r), p->x, p->y, p->i, y, yi, d, d-p->dy, p->dy); err++; diff --git a/src/math/lgammaf.c b/src/math/lgammaf.c index 26edb68..ce73ee4 100644 --- a/src/math/lgammaf.c +++ b/src/math/lgammaf.c @@ -35,7 +35,7 @@ int main(void) err++; } d = ulperrf(y, p->y, p->dy); - if (!checkulp(d, p->r) || yi != p->i) { + if (!checkulp(d, p->r) || (!isnan(p->x) && p->x!=-inf && !(p->e&DIVBYZERO) && yi != p->i)) { printf("%s:%d: %s lgammaf(%a) want %a,%lld got %a,%d ulperr %.3f = %a + %a\n", p->file, p->line, rstr(p->r), p->x, p->y, p->i, y, yi, d, d-p->dy, p->dy); err++; diff --git a/src/math/lgammaf_r.c b/src/math/lgammaf_r.c index e1a52d8..8be26b2 100644 --- a/src/math/lgammaf_r.c +++ b/src/math/lgammaf_r.c @@ -34,7 +34,7 @@ int main(void) err++; } d = ulperrf(y, p->y, p->dy); - if (!checkulp(d, p->r) || yi != p->i) { + if (!checkulp(d, p->r) || (!isnan(p->x) && p->x!=-inf && !(p->e&DIVBYZERO) && yi != p->i)) { printf("%s:%d: %s lgammaf_r(%a) want %a,%lld got %a,%d ulperr %.3f = %a + %a\n", p->file, p->line, rstr(p->r), p->x, p->y, p->i, y, yi, d, d-p->dy, p->dy); err++; diff --git a/src/math/lgammal.c b/src/math/lgammal.c index 352df9b..c5f6041 100644 --- a/src/math/lgammal.c +++ b/src/math/lgammal.c @@ -41,7 +41,7 @@ int main(void) err++; } d = ulperrl(y, p->y, p->dy); - if (!checkulp(d, p->r) || yi != p->i) { + if (!checkulp(d, p->r) || (!isnan(p->x) && p->x!=-inf && !(p->e&DIVBYZERO) && yi != p->i)) { printf("%s:%d: %s lgammal(%La) want %La,%lld got %La,%d ulperr %.3f = %a + %a\n", p->file, p->line, rstr(p->r), p->x, p->y, p->i, y, yi, d, d-p->dy, p->dy); err++; diff --git a/src/math/lgammal_r.c b/src/math/lgammal_r.c index 9813f4e..03e3901 100644 --- a/src/math/lgammal_r.c +++ b/src/math/lgammal_r.c @@ -40,7 +40,7 @@ int main(void) err++; } d = ulperrl(y, p->y, p->dy); - if (!checkulp(d, p->r) || yi != p->i) { + if (!checkulp(d, p->r) || (!isnan(p->x) && p->x!=-inf && !(p->e&DIVBYZERO) && yi != p->i)) { printf("%s:%d: %s lgammal_r(%La) want %La,%lld got %La,%d ulperr %.3f = %a + %a\n", p->file, p->line, rstr(p->r), p->x, p->y, p->i, y, yi, d, d-p->dy, p->dy); err++;