30 lines
412 B
C
30 lines
412 B
C
/*
|
|
* compute 10**x by successive squaring.
|
|
*/
|
|
|
|
#include <_ansi.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;
|
|
}
|
|
}
|