Annotation of 41BSD/cmd/apl/ae.c, revision 1.1

1.1     ! root        1: #include "apl.h"
        !             2: 
        !             3: ex_base()
        !             4: {
        !             5:        register struct item *p, *q;
        !             6:        int s, s1;
        !             7:        data d, d1;
        !             8:        double r, b;
        !             9: 
        !            10:        p = fetch2();
        !            11:        q = sp[-2];
        !            12:        if(p->rank > 1 || q->rank > 1)
        !            13:                error("base R");
        !            14:        b = 1.;
        !            15:        r = 0.;
        !            16:        s = p->size;
        !            17:        s1 = q->size;
        !            18:        while(s > 0 || s1 > 0) {
        !            19:                if(s > 0) {
        !            20:                        s--;
        !            21:                        p->index = s;
        !            22:                        d = getdat(p);
        !            23:                }
        !            24:                if(s1 > 0) {
        !            25:                        s1--;
        !            26:                        q->index = s1;
        !            27:                        d1 = getdat(q);
        !            28:                }
        !            29:                r += d1 * b;
        !            30:                b *= d;
        !            31:        }
        !            32:        pop();
        !            33:        pop();
        !            34:        p = newdat(DA, 0, 1);
        !            35:        push(p);
        !            36:        d = r;
        !            37:        putdat(p, d);
        !            38: }
        !            39: 
        !            40: ex_rep()
        !            41: {
        !            42:        register struct item *p, *q;
        !            43:        register s;
        !            44:        double a, b, r;
        !            45: 
        !            46:        p = fetch2();
        !            47:        q = sp[-2];
        !            48:        if(q->size != 1 || p->rank > 1)
        !            49:                error("represent R");
        !            50:        r = getdat(q);
        !            51:        s = p->size;
        !            52:        while(s > 0) {
        !            53:                s--;
        !            54:                p->index = s;
        !            55:                b = getdat(p);
        !            56:                if(b == 0.)
        !            57:                        error("represent D");
        !            58:                r /= b;
        !            59:                a = r;
        !            60:                r = floor(r);
        !            61:                datum = (a - r) * b;
        !            62:                p->index = s;
        !            63:                putdat(p, datum);
        !            64:        }
        !            65:        sp--;
        !            66:        pop();
        !            67:        push(p);
        !            68: }

unix.superglobalmegacorp.com

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