23 lines
		
	
	
	
		
			461 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			461 B
		
	
	
	
		
			C
		
	
	
	
	
	
| extern	double POWR();
 | |
| double TIMESTE(pow, a)
 | |
|   double a;
 | |
|   int pow;
 | |
|   { int p ;
 | |
|     register double n, t, r, s;
 | |
|     p = pow < 0 ? -pow : pow;
 | |
|     n = 5.0;
 | |
|     t = 2.0;
 | |
|     if ( (p & 1) == 0 ) {r = 1.0; s = 1.0; }
 | |
|     else {r = 5.0; s = 2.0; }
 | |
|     p >>= 1;
 | |
|     while ( p != 0 ) {
 | |
|         n *= n; t *= t;
 | |
|         if ( (p & 1) != 0 ) {r *= n; s *= t; }
 | |
|         p >>= 1;
 | |
|       }
 | |
|     if (pow<0) {
 | |
|       return((a/r)/s);
 | |
|     } else {
 | |
|       return((a*r)*s);
 | |
|     }
 | |
|   }
 |