/contrib/sdk/sources/newlib/libc/stdlib/__exp10.c |
---|
0,0 → 1,30 |
/* |
* compute 10**x by successive squaring. |
*/ |
#include <_ansi.h> |
#include "std.h" |
double |
_DEFUN (__exp10, (x), |
unsigned x) |
{ |
static _CONST double powtab[] = |
{1.0, |
10.0, |
100.0, |
1000.0, |
10000.0}; |
if (x < (sizeof (powtab) / sizeof (double))) |
return powtab[x]; |
else if (x & 1) |
{ |
return 10.0 * __exp10 (x - 1); |
} |
else |
{ |
double n = __exp10 (x / 2); |
return n * n; |
} |
} |