FSF GCC merge 02/23/03
[official-gcc.git] / libf2c / libF77 / pow_ii.c
blob92347453fb09df52de65282d73861646708a0916
1 #include "f2c.h"
3 integer
4 pow_ii (integer * ap, integer * bp)
6 integer pow, x, n;
7 unsigned long u;
9 x = *ap;
10 n = *bp;
12 if (n <= 0)
14 if (n == 0 || x == 1)
15 return 1;
16 if (x != -1)
17 return x == 0 ? 1 / x : 0;
18 n = -n;
20 u = n;
21 for (pow = 1;;)
23 if (u & 01)
24 pow *= x;
25 if (u >>= 1)
26 x *= x;
27 else
28 break;
30 return (pow);