From e5cdc5932730448069a7bf3123d5e03eb68fb487 Mon Sep 17 00:00:00 2001 From: CSRG Date: Mon, 29 Dec 1980 21:08:17 -0800 Subject: [PATCH] BSD 4_1_snap development Work on file usr/src/lib/libF77/pow_zi.c Synthesized-from: CSRG/cd1/4.1.snap --- usr/src/lib/libF77/pow_zi.c | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 usr/src/lib/libF77/pow_zi.c diff --git a/usr/src/lib/libF77/pow_zi.c b/usr/src/lib/libF77/pow_zi.c new file mode 100644 index 0000000000..be21d1800b --- /dev/null +++ b/usr/src/lib/libF77/pow_zi.c @@ -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; + } +} -- 2.20.1