#define _GNU_SOURCE
#include <float.h>
#include <math.h>

#include "libc.h"
#include "libm.h"

#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
long double exp10l(long double x) { return exp10(x); }
#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
long double exp10l(long double x) {
  static const long double p10[] = {1e-15L, 1e-14L, 1e-13L, 1e-12L, 1e-11L, 1e-10L, 1e-9L, 1e-8L,
                                    1e-7L,  1e-6L,  1e-5L,  1e-4L,  1e-3L,  1e-2L,  1e-1L, 1,
                                    1e1,    1e2,    1e3,    1e4,    1e5,    1e6,    1e7,   1e8,
                                    1e9,    1e10,   1e11,   1e12,   1e13,   1e14,   1e15};
  long double n, y = modfl(x, &n);
  union ldshape u = {n};
  /* fabsl(n) < 16 without raising invalid on nan */
  if ((u.i.se & 0x7fff) < 0x3fff + 4) {
    if (!y)
      return p10[(int)n + 15];
    y = exp2l(3.32192809488736234787031942948939L * y);
    return y * p10[(int)n + 15];
  }
  return powl(10.0, x);
}
#endif

weak_alias(exp10l, pow10l);
