Remove conditional on LDBL_MANT_DIG from e_lgammal_r.c

The IEEE 754 implementation of lgammal in sysdeps/ieee754/ldbl-128/ used
to be shared by IBM's implementation in sysdeps/ieee754/ldbl-128ibm/ (by
an inclusion of the source file).  In order for the algorithm to work
for IBM's implementation, a check for LDBL_MANT_DIG was required. Since
the source file is no longer shared, the requirement for the check is
gone.  This patch removes the conditionals.

Tested for powerpc64le and s390x.

	* sysdeps/ieee754/ldbl-128/e_lgammal_r.c (__ieee754_lgammal_r):
	Remove conditionals on LDBL_MANT_DIG.
	* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
	(__ieee754_lgammal_r): Likewise.
This commit is contained in:
Gabriel F. T. Gomes 2017-09-10 10:31:47 -03:00
parent d2f0ed09f8
commit 9ac3c68218
3 changed files with 9 additions and 10 deletions

View File

@ -1,3 +1,10 @@
2017-09-21 Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
* sysdeps/ieee754/ldbl-128/e_lgammal_r.c (__ieee754_lgammal_r):
Remove conditionals on LDBL_MANT_DIG.
* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c
(__ieee754_lgammal_r): Likewise.
2017-09-21 Gabriel F. T. Gomes <gabriel@inconstante.eti.br> 2017-09-21 Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
* sysdeps/ieee754/ldbl-128ibm/e_expl.c: Remove definitions of * sysdeps/ieee754/ldbl-128ibm/e_expl.c: Remove definitions of

View File

@ -73,11 +73,7 @@
#include <float.h> #include <float.h>
static const _Float128 PIL = L(3.1415926535897932384626433832795028841972E0); static const _Float128 PIL = L(3.1415926535897932384626433832795028841972E0);
#if LDBL_MANT_DIG == 106
static const _Float128 MAXLGM = L(0x5.d53649e2d469dbc1f01e99fd66p+1012);
#else
static const _Float128 MAXLGM = L(1.0485738685148938358098967157129705071571E4928); static const _Float128 MAXLGM = L(1.0485738685148938358098967157129705071571E4928);
#endif
static const _Float128 one = 1; static const _Float128 one = 1;
static const _Float128 huge = LDBL_MAX; static const _Float128 huge = LDBL_MAX;
@ -777,7 +773,7 @@ __ieee754_lgammal_r (_Float128 x, int *signgamp)
if (x < 0) if (x < 0)
{ {
if (x < -2 && x > (LDBL_MANT_DIG == 106 ? -48 : -50)) if (x < -2 && x > -50)
return __lgamma_negl (x, signgamp); return __lgamma_negl (x, signgamp);
q = -x; q = -x;
p = __floorl (q); p = __floorl (q);

View File

@ -23,11 +23,7 @@
#include <float.h> #include <float.h>
static const long double PIL = 3.1415926535897932384626433832795028841972E0L; static const long double PIL = 3.1415926535897932384626433832795028841972E0L;
#if LDBL_MANT_DIG == 106
static const long double MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L; static const long double MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L;
#else
static const long double MAXLGM = 1.0485738685148938358098967157129705071571E4928L;
#endif
static const long double one = 1; static const long double one = 1;
static const long double huge = LDBL_MAX; static const long double huge = LDBL_MAX;
@ -727,7 +723,7 @@ __ieee754_lgammal_r (long double x, int *signgamp)
if (x < 0) if (x < 0)
{ {
if (x < -2 && x > (LDBL_MANT_DIG == 106 ? -48 : -50)) if (x < -2 && x > -48)
return __lgamma_negl (x, signgamp); return __lgamma_negl (x, signgamp);
q = -x; q = -x;
p = __floorl (q); p = __floorl (q);