BSD 4_1_snap development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Tue, 30 Dec 1980 05:08:17 +0000 (21:08 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Tue, 30 Dec 1980 05:08:17 +0000 (21:08 -0800)
Work on file usr/src/lib/libF77/pow_zi.c

Synthesized-from: CSRG/cd1/4.1.snap

usr/src/lib/libF77/pow_zi.c [new file with mode: 0644]

diff --git a/usr/src/lib/libF77/pow_zi.c b/usr/src/lib/libF77/pow_zi.c
new file mode 100644 (file)
index 0000000..be21d18
--- /dev/null
@@ -0,0 +1,45 @@
+#include "complex"
+
+pow_zi(p, a, b)        /* p = a**b  */
+dcomplex *p, *a;
+long int *b;
+{
+long int n;
+double t;
+dcomplex x;
+
+n = *b;
+p->dreal = 1;
+p->dimag = 0;
+
+if(n == 0)
+       return;
+if(n < 0)
+       {
+       n = -n;
+       z_div(&x,p,a);
+       }
+else
+       {
+       x.dreal = a->dreal;
+       x.dimag = a->dimag;
+       }
+
+for( ; ; )
+       {
+       if(n & 01)
+               {
+               t = p->dreal * x.dreal - p->dimag * x.dimag;
+               p->dimag = p->dreal * x.dimag + p->dimag * x.dreal;
+               p->dreal = t;
+               }
+       if(n >>= 1)
+               {
+               t = x.dreal * x.dreal - x.dimag * x.dimag;
+               x.dimag = 2 * x.dreal * x.dimag;
+               x.dreal = t;
+               }
+       else
+               break;
+       }
+}