|
|
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_zi.c 5.1 6/7/85 ! 7: */ ! 8: ! 9: #include "complex" ! 10: ! 11: pow_zi(p, a, b) /* p = a**b */ ! 12: dcomplex *p, *a; ! 13: long int *b; ! 14: { ! 15: long int n; ! 16: double t; ! 17: dcomplex x; ! 18: ! 19: n = *b; ! 20: p->dreal = 1; ! 21: p->dimag = 0; ! 22: ! 23: if(n == 0) ! 24: return; ! 25: if(n < 0) ! 26: { ! 27: n = -n; ! 28: z_div(&x, p, a); ! 29: } ! 30: else ! 31: { ! 32: x.dreal = a->dreal; ! 33: x.dimag = a->dimag; ! 34: } ! 35: ! 36: for( ; ; ) ! 37: { ! 38: if(n & 01) ! 39: { ! 40: t = p->dreal * x.dreal - p->dimag * x.dimag; ! 41: p->dimag = p->dreal * x.dimag + p->dimag * x.dreal; ! 42: p->dreal = t; ! 43: } ! 44: if(n >>= 1) ! 45: { ! 46: t = x.dreal * x.dreal - x.dimag * x.dimag; ! 47: x.dimag = 2 * x.dreal * x.dimag; ! 48: x.dreal = t; ! 49: } ! 50: else ! 51: break; ! 52: } ! 53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.