user: implement mlibc as the libc, finally.
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
#include "libm.h"
|
||||
|
||||
#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
|
||||
long double scalbnl(long double x, int n)
|
||||
{
|
||||
return scalbn(x, n);
|
||||
}
|
||||
#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
|
||||
long double scalbnl(long double x, int n)
|
||||
{
|
||||
union ldshape u;
|
||||
|
||||
if (n > 16383) {
|
||||
x *= 0x1p16383L;
|
||||
n -= 16383;
|
||||
if (n > 16383) {
|
||||
x *= 0x1p16383L;
|
||||
n -= 16383;
|
||||
if (n > 16383)
|
||||
n = 16383;
|
||||
}
|
||||
} else if (n < -16382) {
|
||||
x *= 0x1p-16382L * 0x1p113L;
|
||||
n += 16382 - 113;
|
||||
if (n < -16382) {
|
||||
x *= 0x1p-16382L * 0x1p113L;
|
||||
n += 16382 - 113;
|
||||
if (n < -16382)
|
||||
n = -16382;
|
||||
}
|
||||
}
|
||||
u.f = 1.0;
|
||||
u.i.se = 0x3fff + n;
|
||||
return x * u.f;
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user