mirror of
https://github.com/autc04/Retro68.git
synced 2024-09-10 03:54:48 +00:00
31 lines
429 B
C
31 lines
429 B
C
/*
|
|
* 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;
|
|
}
|
|
}
|