Annotation of researchv10no/libF77/pow_zi.c, revision 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.