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