Annotation of researchv10no/libF77/pow_zi.c, revision 1.1.1.1

1.1       root        1: #include "f2c.h"
                      2: 
                      3: #ifdef KR_headers
                      4: VOID pow_zi(p, a, b)   /* p = a**b  */
                      5:  doublecomplex *p, *a; integer *b;
                      6: #else
                      7: extern void z_div(doublecomplex*, doublecomplex*, doublecomplex*);
                      8: void pow_zi(doublecomplex *p, doublecomplex *a, integer *b)    /* p = a**b  */
                      9: #endif
                     10: {
                     11: integer n;
                     12: double t;
                     13: doublecomplex x;
                     14: static doublecomplex one = {1.0, 0.0};
                     15: 
                     16: n = *b;
                     17: p->r = 1;
                     18: p->i = 0;
                     19: 
                     20: if(n == 0)
                     21:        return;
                     22: if(n < 0)
                     23:        {
                     24:        n = -n;
                     25:        z_div(&x, &one, a);
                     26:        }
                     27: else
                     28:        {
                     29:        x.r = a->r;
                     30:        x.i = a->i;
                     31:        }
                     32: 
                     33: for( ; ; )
                     34:        {
                     35:        if(n & 01)
                     36:                {
                     37:                t = p->r * x.r - p->i * x.i;
                     38:                p->i = p->r * x.i + p->i * x.r;
                     39:                p->r = t;
                     40:                }
                     41:        if(n >>= 1)
                     42:                {
                     43:                t = x.r * x.r - x.i * x.i;
                     44:                x.i = 2 * x.r * x.i;
                     45:                x.r = t;
                     46:                }
                     47:        else
                     48:                break;
                     49:        }
                     50: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.