Initial revision
[official-gcc.git] / gcc / f / runtime / libF77 / pow_hh.c
blob24a019734da152aa39bf9d6337363b430f377d2b
1 #include "f2c.h"
3 #ifdef KR_headers
4 shortint pow_hh(ap, bp) shortint *ap, *bp;
5 #else
6 shortint pow_hh(shortint *ap, shortint *bp)
7 #endif
9 shortint pow, x, n;
10 unsigned u;
12 x = *ap;
13 n = *bp;
15 if (n <= 0) {
16 if (n == 0 || x == 1)
17 return 1;
18 if (x != -1)
19 return x == 0 ? 1/x : 0;
20 n = -n;
22 u = n;
23 for(pow = 1; ; )
25 if(u & 01)
26 pow *= x;
27 if(u >>= 1)
28 x *= x;
29 else
30 break;
32 return(pow);