Commit | Line | Data |
---|---|---|
683456d4 DW |
1 | /* |
2 | * "@(#)pow_ri.c 1.1" | |
3 | */ | |
4 | ||
5 | float pow_ri(ap, bp) | |
6 | float *ap; | |
7 | long int *bp; | |
8 | { | |
9 | double pow, x; | |
10 | long int n; | |
11 | ||
12 | pow = 1; | |
13 | x = *ap; | |
14 | n = *bp; | |
15 | ||
16 | if(n != 0) | |
17 | { | |
18 | if(n < 0) | |
19 | { | |
20 | if(x == 0) | |
21 | { | |
22 | return(pow); | |
23 | } | |
24 | n = -n; | |
25 | x = 1/x; | |
26 | } | |
27 | for( ; ; ) | |
28 | { | |
29 | if(n & 01) | |
30 | pow *= x; | |
31 | if(n >>= 1) | |
32 | x *= x; | |
33 | else | |
34 | break; | |
35 | } | |
36 | } | |
37 | return(pow); | |
38 | } |