math: add dummy implementations of 128 bit long double functions

This is in preparation for the aarch64 port only to have the long
double math symbols available on ld128 platforms. The implementations
should be fixed up later once we have proper tests for these functions.

Added bigendian handling for ld128 bit manipulations too.
This commit is contained in:
Szabolcs Nagy
2015-03-11 18:54:53 -04:00
committed by Rich Felker
parent 53cfe0c61a
commit f4e4632abf
17 changed files with 111 additions and 4 deletions
+6
View File
@@ -20,4 +20,10 @@ long double acoshl(long double x)
return logl(2*x - 1/(x+sqrtl(x*x-1)));
return logl(x) + 0.693147180559945309417232121458176568L;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double acoshl(long double x)
{
return acosh(x);
}
#endif
+6
View File
@@ -32,4 +32,10 @@ long double asinhl(long double x)
}
return s ? -x : x;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double asinhl(long double x)
{
return asinh(x);
}
#endif
+1 -1
View File
@@ -5,7 +5,7 @@ long double atanhl(long double x)
{
return atanh(x);
}
#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
/* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */
long double atanhl(long double x)
{
+6
View File
@@ -38,4 +38,10 @@ long double coshl(long double x)
t = expl(0.5*x);
return 0.5*t*t;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double coshl(long double x)
{
return cosh(x);
}
#endif
+10
View File
@@ -340,4 +340,14 @@ long double erfcl(long double x)
y = 0x1p-16382L;
return sign ? 2 - y : y*y;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double erfl(long double x)
{
return erf(x);
}
long double erfcl(long double x)
{
return erfc(x);
}
#endif
+6
View File
@@ -119,4 +119,10 @@ long double expl(long double x)
x = 1.0 + 2.0 * x;
return scalbnl(x, k);
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double expl(long double x)
{
return exp(x);
}
#endif
+6
View File
@@ -114,4 +114,10 @@ long double expm1l(long double x)
x = px * qx + (px - 1.0);
return x;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double expm1l(long double x)
{
return expm1(x);
}
#endif
+8 -2
View File
@@ -340,9 +340,16 @@ long double __lgammal_r(long double x, int *sg) {
r = nadj - r;
return r;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
double __lgamma_r(double x, int *sg);
long double __lgammal_r(long double x, int *sg)
{
return __lgamma_r(x, sg);
}
#endif
#if (LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024) || (LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384)
extern int __signgam;
long double lgammal(long double x)
@@ -351,4 +358,3 @@ long double lgammal(long double x)
}
weak_alias(__lgammal_r, lgammal_r);
#endif
+6
View File
@@ -182,4 +182,10 @@ done:
z += e * (L102A);
return z;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double log10l(long double x)
{
return log10(x);
}
#endif
+6
View File
@@ -168,4 +168,10 @@ long double log1pl(long double xm1)
z = z + e * C1;
return z;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double log1pl(long double x)
{
return log1p(x);
}
#endif
+6
View File
@@ -173,4 +173,10 @@ done:
z += e;
return z;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double log2l(long double x)
{
return log2(x);
}
#endif
+6
View File
@@ -166,4 +166,10 @@ long double logl(long double x)
z = z + e * C1; /* This sum has an error of 1/2 lsb. */
return z;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double logl(long double x)
{
return log(x);
}
#endif
+6 -1
View File
@@ -513,5 +513,10 @@ static long double powil(long double x, int nn)
y = 1.0/y;
return y;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double powl(long double x, long double y)
{
return pow(x, y);
}
#endif
+6
View File
@@ -34,4 +34,10 @@ long double sinhl(long double x)
t = expl(0.5*absx);
return h*t*t;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double sinhl(long double x)
{
return sinh(x);
}
#endif
+6
View File
@@ -39,4 +39,10 @@ long double tanhl(long double x)
}
return sign ? -t : t;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double tanhl(long double x)
{
return tanh(x);
}
#endif
+6
View File
@@ -272,4 +272,10 @@ small:
q = z / (x * __polevll(x, S, 8));
return q;
}
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
// TODO: broken implementation to make things compile
long double tgammal(long double x)
{
return tgamma(x);
}
#endif