1) UCB code to scroll portion of screen with al/dl works only for fullscreen
[unix-history] / lib / libF77 / pow_zi.c
CommitLineData
547779a8
WH
1#include "f2c.h"
2
3#ifdef KR_headers
4VOID pow_zi(p, a, b) /* p = a**b */
5 doublecomplex *p, *a; integer *b;
6#else
7extern void z_div(doublecomplex*, doublecomplex*, doublecomplex*);
8void pow_zi(doublecomplex *p, doublecomplex *a, integer *b) /* p = a**b */
9#endif
10{
11integer n;
12double t;
13doublecomplex x;
14static doublecomplex one = {1.0, 0.0};
15
16n = *b;
17p->r = 1;
18p->i = 0;
19
20if(n == 0)
21 return;
22if(n < 0)
23 {
24 n = -n;
25 z_div(&x, &one, a);
26 }
27else
28 {
29 x.r = a->r;
30 x.i = a->i;
31 }
32
33for( ; ; )
34 {
35 if(n & 01)
36 {
37 t = p->r * x.r - p->i * x.i;
38 p->i = p->r * x.i + p->i * x.r;
39 p->r = t;
40 }
41 if(n >>= 1)
42 {
43 t = x.r * x.r - x.i * x.i;
44 x.i = 2 * x.r * x.i;
45 x.r = t;
46 }
47 else
48 break;
49 }
50}