1: /*
2: * "@(#)pow_ii.c 1.2"
3: *
4: * Corrections by Robert P. Corbett, 1983 March 2
5: * Revised to restore portability, 1983 March 4
6: */
7:
8:
9: long int pow_ii(ap, bp)
10: long int *ap, *bp;
11: {
12: long int pow, x, n;
13: int zero = 0;
14:
15: pow = 1;
16: x = *ap;
17: n = *bp;
18:
19: if (n == 0)
20: return ( 1L );
21:
22: if (x == 0)
23: return ( 0L );
24:
25: if (x == 1)
26: return ( 1L );
27:
28: if (x == -1)
29: {
30: if (n < 0)
31: {
32: if (n < -2)
33: n += 2;
34: n = -n;
35: }
36: if (n % 2 == 0)
37: return ( 1L );
38: else
39: return ( -1L );
40: }
41:
42: if (n > 0)
43: for( ; ; )
44: {
45: if(n & 01)
46: pow *= x;
47: if(n >>= 1)
48: x *= x;
49: else
50: break;
51: }
52: else
53: pow = 0;
54:
55: return(pow);
56: }
Defined functions
pow_ii
defined in line
9;
never used