#include "f2c.h"
#ifdef __cplusplus
extern "C" {
#endif

#ifdef KR_headers
integer pow_ii(ap, bp) integer *ap, *bp;
#else
integer pow_ii(integer *ap, integer *bp)
#endif
{
  integer pow, x, n;
  unsigned long u;

  x = *ap;
  n = *bp;

  if(n <= 0) {
         if(n == 0 || x == 1)
                return 1;
         if(x != -1)
                return x == 0 ? 1/x : 0;
         n = -n;
         }
  u = n;
  for(pow = 1; ; )
         {
         if(u & 01)
                pow *= x;
         if(u >>= 1)
                x *= x;
         else
                break;
         }
  return(pow);
  }
#ifdef __cplusplus
}
#endif
