Annotation of researchv10dc/libj/arith.c, revision 1.1

1.1     ! root        1: #include "jerq.h"
        !             2: /* These routines are NOT portable, but they are fast. */
        !             3: 
        !             4: Point
        !             5: add(a, b)
        !             6:        Point a, b;
        !             7: {
        !             8:        register short *ap= &a.x, *bp= &b.x;
        !             9:        *ap++ += *bp++;
        !            10:        *ap += *bp;
        !            11:        return a;
        !            12: }
        !            13: 
        !            14: Point
        !            15: sub(a, b)
        !            16:        Point a, b;
        !            17: {
        !            18:        register short *ap= &a.x, *bp= &b.x;
        !            19:        *ap++ -= *bp++;
        !            20:        *ap -= *bp;
        !            21:        return a;
        !            22: }
        !            23: 
        !            24: Rectangle
        !            25: inset(r,n)
        !            26:        Rectangle r;
        !            27:        register n;
        !            28: {
        !            29:        register short *rp= &r.origin.x;
        !            30:        *rp++ += n;
        !            31:        *rp++ += n;
        !            32:        *rp++ -= n;
        !            33:        *rp   -= n;
        !            34:        return r;
        !            35: }
        !            36: 
        !            37: Point
        !            38: div(a, b)
        !            39:        Point a;
        !            40:        register b;
        !            41: {
        !            42:        register short *ap= &a.x;
        !            43:        *(ap++)/=b;
        !            44:        *ap/=b;
        !            45:        return a;
        !            46: }
        !            47: 
        !            48: Point
        !            49: mul(a, b)
        !            50:        Point a;
        !            51:        register b;
        !            52: {
        !            53:        register short *ap= &a.x;       
        !            54:        *(ap++)*=b;
        !            55:        *ap*=b;
        !            56:        return a;
        !            57: }
        !            58: 
        !            59: Rectangle
        !            60: rsubp(r, p)
        !            61:        Rectangle r;
        !            62:        Point p;
        !            63: {
        !            64:        register short *rp= &r.origin.x, *pp= &p.x;
        !            65:        *rp++ -= *pp++;
        !            66:        *rp++ -= *pp--;
        !            67:        *rp++ -= *pp++;
        !            68:        *rp   -= *pp;
        !            69:        return r;
        !            70: }
        !            71: 
        !            72: Rectangle
        !            73: raddp(r, p)
        !            74:        Rectangle r;
        !            75:        Point p;
        !            76: {
        !            77:        register short *rp= &r.origin.x, *pp= &p.x;
        !            78:        *rp++ += *pp++;
        !            79:        *rp++ += *pp--;
        !            80:        *rp++ += *pp++;
        !            81:        *rp   += *pp;
        !            82:        return r;
        !            83: }
        !            84: 
        !            85: eqpt(p, q)
        !            86:        Point p, q;
        !            87: {
        !            88:        register long *pp=(long *)&p, *qq=(long *)&q;
        !            89:        return *pp==*qq;
        !            90: }
        !            91: eqrect(r, s)
        !            92:        Rectangle r, s;
        !            93: {
        !            94:        register long *rr=(long *)&r, *ss=(long *)&s;
        !            95:        return *rr++==*ss++ && *rr==*ss;
        !            96: }

unix.superglobalmegacorp.com

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