summaryrefslogtreecommitdiffstats
path: root/lib/libF77/pow_zi.c
diff options
context:
space:
mode:
authorjmz <jmz@FreeBSD.org>1997-04-13 01:16:58 +0000
committerjmz <jmz@FreeBSD.org>1997-04-13 01:16:58 +0000
commit438bdd8a9c9d390f13a4b05980c19b18e974d16c (patch)
treee809113557ae09d5ce13e9239ae81534708bd955 /lib/libF77/pow_zi.c
parent5d93c9d5fb208d10eacf608b44ee02d3cd5b4a16 (diff)
downloadFreeBSD-src-438bdd8a9c9d390f13a4b05980c19b18e974d16c.zip
FreeBSD-src-438bdd8a9c9d390f13a4b05980c19b18e974d16c.tar.gz
Upgrade to the 1997/02/26 version.
Diffstat (limited to 'lib/libF77/pow_zi.c')
-rw-r--r--lib/libF77/pow_zi.c71
1 files changed, 37 insertions, 34 deletions
diff --git a/lib/libF77/pow_zi.c b/lib/libF77/pow_zi.c
index 167e6ac..abb3cb2 100644
--- a/lib/libF77/pow_zi.c
+++ b/lib/libF77/pow_zi.c
@@ -8,44 +8,47 @@ extern void z_div(doublecomplex*, doublecomplex*, doublecomplex*);
void pow_zi(doublecomplex *p, doublecomplex *a, integer *b) /* p = a**b */
#endif
{
-integer n;
-unsigned long u;
-double t;
-doublecomplex x;
-static doublecomplex one = {1.0, 0.0};
+ integer n;
+ unsigned long u;
+ double t;
+ doublecomplex q, x;
+ static doublecomplex one = {1.0, 0.0};
-n = *b;
-p->r = 1;
-p->i = 0;
+ n = *b;
+ q.r = 1;
+ q.i = 0;
-if(n == 0)
- return;
-if(n < 0)
- {
- n = -n;
- z_div(&x, &one, a);
- }
-else
- {
- x.r = a->r;
- x.i = a->i;
- }
-
-for(u = n; ; )
- {
- if(u & 01)
+ if(n == 0)
+ goto done;
+ if(n < 0)
+ {
+ n = -n;
+ z_div(&x, &one, a);
+ }
+ else
{
- t = p->r * x.r - p->i * x.i;
- p->i = p->r * x.i + p->i * x.r;
- p->r = t;
+ x.r = a->r;
+ x.i = a->i;
}
- if(u >>= 1)
+
+ for(u = n; ; )
{
- t = x.r * x.r - x.i * x.i;
- x.i = 2 * x.r * x.i;
- x.r = t;
+ if(u & 01)
+ {
+ t = q.r * x.r - q.i * x.i;
+ q.i = q.r * x.i + q.i * x.r;
+ q.r = t;
+ }
+ if(u >>= 1)
+ {
+ t = x.r * x.r - x.i * x.i;
+ x.i = 2 * x.r * x.i;
+ x.r = t;
+ }
+ else
+ break;
}
- else
- break;
+ done:
+ p->i = q.i;
+ p->r = q.r;
}
-}
OpenPOWER on IntegriCloud