diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/internal/libm.h | 14 | ||||
-rw-r--r-- | src/math/acoshl.c | 6 | ||||
-rw-r--r-- | src/math/asinhl.c | 6 | ||||
-rw-r--r-- | src/math/atanhl.c | 2 | ||||
-rw-r--r-- | src/math/coshl.c | 6 | ||||
-rw-r--r-- | src/math/erfl.c | 10 | ||||
-rw-r--r-- | src/math/expl.c | 6 | ||||
-rw-r--r-- | src/math/expm1l.c | 6 | ||||
-rw-r--r-- | src/math/lgammal.c | 10 | ||||
-rw-r--r-- | src/math/log10l.c | 6 | ||||
-rw-r--r-- | src/math/log1pl.c | 6 | ||||
-rw-r--r-- | src/math/log2l.c | 6 | ||||
-rw-r--r-- | src/math/logl.c | 6 | ||||
-rw-r--r-- | src/math/powl.c | 7 | ||||
-rw-r--r-- | src/math/sinhl.c | 6 | ||||
-rw-r--r-- | src/math/tanhl.c | 6 | ||||
-rw-r--r-- | src/math/tgammal.c | 6 |
17 files changed, 111 insertions, 4 deletions
diff --git a/src/internal/libm.h b/src/internal/libm.h index 88a7eb47..df864111 100644 --- a/src/internal/libm.h +++ b/src/internal/libm.h @@ -42,6 +42,20 @@ union ldshape { uint64_t hi; } i2; }; +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __BIG_ENDIAN +union ldshape { + long double f; + struct { + uint16_t se; + uint16_t top; + uint32_t mid; + uint64_t lo; + } i; + struct { + uint64_t hi; + uint64_t lo; + } i2; +}; #else #error Unsupported long double representation #endif diff --git a/src/math/acoshl.c b/src/math/acoshl.c index 4aa84acb..8d4b43f6 100644 --- a/src/math/acoshl.c +++ b/src/math/acoshl.c @@ -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 diff --git a/src/math/asinhl.c b/src/math/asinhl.c index e5f31751..8635f52e 100644 --- a/src/math/asinhl.c +++ b/src/math/asinhl.c @@ -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 diff --git a/src/math/atanhl.c b/src/math/atanhl.c index f63d60b1..87cd1cdb 100644 --- a/src/math/atanhl.c +++ b/src/math/atanhl.c @@ -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) { diff --git a/src/math/coshl.c b/src/math/coshl.c index 080e5eb0..06a56fe3 100644 --- a/src/math/coshl.c +++ b/src/math/coshl.c @@ -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 diff --git a/src/math/erfl.c b/src/math/erfl.c index 96b74dee..e267c231 100644 --- a/src/math/erfl.c +++ b/src/math/erfl.c @@ -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 diff --git a/src/math/expl.c b/src/math/expl.c index b62980fa..0a7f44f6 100644 --- a/src/math/expl.c +++ b/src/math/expl.c @@ -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 diff --git a/src/math/expm1l.c b/src/math/expm1l.c index 21a86c00..d1715078 100644 --- a/src/math/expm1l.c +++ b/src/math/expm1l.c @@ -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 diff --git a/src/math/lgammal.c b/src/math/lgammal.c index 55ec5325..2b354a7c 100644 --- a/src/math/lgammal.c +++ b/src/math/lgammal.c @@ -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 diff --git a/src/math/log10l.c b/src/math/log10l.c index c7aacf90..63dcc286 100644 --- a/src/math/log10l.c +++ b/src/math/log10l.c @@ -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 diff --git a/src/math/log1pl.c b/src/math/log1pl.c index 37da46d2..141b5f0b 100644 --- a/src/math/log1pl.c +++ b/src/math/log1pl.c @@ -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 diff --git a/src/math/log2l.c b/src/math/log2l.c index d00531d5..722b451a 100644 --- a/src/math/log2l.c +++ b/src/math/log2l.c @@ -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 diff --git a/src/math/logl.c b/src/math/logl.c index 03c5188f..5d536592 100644 --- a/src/math/logl.c +++ b/src/math/logl.c @@ -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 diff --git a/src/math/powl.c b/src/math/powl.c index ce6274cf..a765706d 100644 --- a/src/math/powl.c +++ b/src/math/powl.c @@ -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 diff --git a/src/math/sinhl.c b/src/math/sinhl.c index 4864ddfa..b305d4d2 100644 --- a/src/math/sinhl.c +++ b/src/math/sinhl.c @@ -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 diff --git a/src/math/tanhl.c b/src/math/tanhl.c index f594b85f..4e1aa9f8 100644 --- a/src/math/tanhl.c +++ b/src/math/tanhl.c @@ -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 diff --git a/src/math/tgammal.c b/src/math/tgammal.c index 5c1a02a6..5336c5b1 100644 --- a/src/math/tgammal.c +++ b/src/math/tgammal.c @@ -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 |