|
|
1.1 ! root 1: #include "complex" ! 2: ! 3: pow_ci(p, a, b) /* p = a**b */ ! 4: complex *p, *a; ! 5: long int *b; ! 6: { ! 7: register long int n; ! 8: register float t; ! 9: complex x; ! 10: ! 11: n = *b; ! 12: p->real = 1; ! 13: p->imag = 0; ! 14: ! 15: if(n == 0) ! 16: return; ! 17: if(n < 0) ! 18: { ! 19: n = -n; ! 20: c_div(&x,p,a); ! 21: } ! 22: else ! 23: { ! 24: x.real = a->real; ! 25: x.imag = a->imag; ! 26: } ! 27: ! 28: for( ; ; ) ! 29: { ! 30: if(n & 01) ! 31: { ! 32: t = p->real * x.real - p->imag * x.imag; ! 33: p->imag = p->real * x.imag + p->imag * x.real; ! 34: p->real = t; ! 35: } ! 36: if(n >>= 1) ! 37: { ! 38: t = x.real * x.real - x.imag * x.imag; ! 39: x.imag = 2 * x.real * x.imag; ! 40: x.real = t; ! 41: } ! 42: else ! 43: break; ! 44: } ! 45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.