|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)pow_di.c 5.3 1/19/88
7: */
8:
9: double
10: pow_di(ap, bp)
11: double *ap;
12: long *bp;
13: {
14: register long n = *bp;
15: double y, x = *ap;
16:
17: if (!n)
18: return((double)1);
19: if (n < 0) {
20: x = (double)1 / x;
21: n = -n;
22: }
23: while (!(n&1)) {
24: x *= x;
25: n >>= 1;
26: }
27: for (y = x; --n > 0; y *= x)
28: while (!(n&1)) {
29: x *= x;
30: n >>= 1;
31: }
32: return(y);
33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.