diff options
Diffstat (limited to 'lib/libF77/pow_hh.c')
| -rw-r--r-- | lib/libF77/pow_hh.c | 31 | 
1 files changed, 31 insertions, 0 deletions
| diff --git a/lib/libF77/pow_hh.c b/lib/libF77/pow_hh.c new file mode 100644 index 000000000000..e1a503c5ca82 --- /dev/null +++ b/lib/libF77/pow_hh.c @@ -0,0 +1,31 @@ +#include "f2c.h" + +#ifdef KR_headers +shortint pow_hh(ap, bp) shortint *ap, *bp; +#else +shortint pow_hh(shortint *ap, shortint *bp) +#endif +{ +	shortint pow, x, n; + +	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; +		} +	for(pow = 1; ; ) +		{ +		if(n & 01) +			pow *= x; +		if(n >>= 1) +			x *= x; +		else +			break; +		} +	return(pow); +	} | 
