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;
 | |
|     }
 | |
| }
 |