123456789101112131415161718192021222324252627282930313233343536373839 |
- #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
|