Annotation of 43BSDReno/lib/libF77/pow_zi.c, revision 1.1

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.2     1/24/88
        !             7:  */
        !             8: 
        !             9: #include "complex"
        !            10: 
        !            11: #define        Z_MULEQ(A,B)    \
        !            12:        t = (A).dreal * (B).dreal - (A).dimag * (B).dimag,\
        !            13:        (A).dimag = (A).dreal * (B).dimag + (A).dimag * (B).dreal,\
        !            14:        (A).dreal = t   /* A *= B */
        !            15: 
        !            16: void
        !            17: pow_zi(p, a, b)        /* p = a**b  */
        !            18:        dcomplex *p, *a;
        !            19:        long int *b;
        !            20: {
        !            21:        register long n = *b;
        !            22:        double t;
        !            23:        dcomplex x;
        !            24: 
        !            25:        x = *a;
        !            26:        p->dreal = (double)1, p->dimag = (double)0;
        !            27:        if (!n)
        !            28:                return;
        !            29:        if (n < 0) {
        !            30:                z_div(&x, p, a);
        !            31:                n = -n;
        !            32:        }
        !            33:        while (!(n&1)) {
        !            34:                Z_MULEQ(x, x);
        !            35:                n >>= 1;
        !            36:        }
        !            37:        for (*p = x; --n > 0; Z_MULEQ(*p, x))
        !            38:                while (!(n&1)) {
        !            39:                        Z_MULEQ(x, x);
        !            40:                        n >>= 1;
        !            41:                }
        !            42: }

unix.superglobalmegacorp.com

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