exp10f.c 456 B

1234567891011121314151617181920
  1. #define _GNU_SOURCE
  2. #include <math.h>
  3. #include "libc.h"
  4. float exp10f(float x)
  5. {
  6. static const float p10[] = {
  7. 1e-7f, 1e-6f, 1e-5f, 1e-4f, 1e-3f, 1e-2f, 1e-1f,
  8. 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7
  9. };
  10. float n, y = modff(x, &n);
  11. if (fabsf(n) < 8) {
  12. if (!y) return p10[(int)n+7];
  13. y = exp2f(3.32192809488736234787031942948939f * y);
  14. return y * p10[(int)n+7];
  15. }
  16. return exp2(3.32192809488736234787031942948939 * x);
  17. }
  18. weak_alias(exp10f, pow10f);