xref: /csrg-svn/usr.bin/f77/libF77/pow_hh.c (revision 10513)
1*10513Sdlw /*
2*10513Sdlw  *	"@(#)pow_hh.c	1.1"
3*10513Sdlw  */
4*10513Sdlw 
5*10513Sdlw short pow_hh(ap, bp)
6*10513Sdlw short *ap, *bp;
7*10513Sdlw {
8*10513Sdlw short pow, x, n;
9*10513Sdlw 
10*10513Sdlw pow = 1;
11*10513Sdlw x = *ap;
12*10513Sdlw n = *bp;
13*10513Sdlw 
14*10513Sdlw if(n < 0)
15*10513Sdlw 	{ }
16*10513Sdlw else if(n > 0)
17*10513Sdlw 	for( ; ; )
18*10513Sdlw 		{
19*10513Sdlw 		if(n & 01)
20*10513Sdlw 			pow *= x;
21*10513Sdlw 		if(n >>= 1)
22*10513Sdlw 			x *= x;
23*10513Sdlw 		else
24*10513Sdlw 			break;
25*10513Sdlw 		}
26*10513Sdlw return(pow);
27*10513Sdlw }
28