1 /*
2  * compute 10**x by successive squaring.
3  */
4 
5 #include <_ansi.h>
6 #include "std.h"
7 
8 double
9 _DEFUN (__exp10, (x),
10 	unsigned x)
11 {
12   static _CONST double powtab[] =
13   {1.0,
14    10.0,
15    100.0,
16    1000.0,
17    10000.0};
18 
19   if (x < (sizeof (powtab) / sizeof (double)))
20       return powtab[x];
21   else if (x & 1)
22     {
23       return 10.0 * __exp10 (x - 1);
24     }
25   else
26     {
27       double n = __exp10 (x / 2);
28       return n * n;
29     }
30 }
31