Annotation of researchv10dc/630/man/src/p_man/man3/muldiv.3l, revision 1.1

1.1     ! root        1: .ds ZZ DEVELOPMENT PACKAGE
        !             2: .TH MULDIV 3L "630 MTG"
        !             3: .XE "muldiv()"
        !             4: .SH NAME
        !             5: muldiv \- calculate (a*b)/c accurately
        !             6: .SH SYNOPSIS
        !             7: .ft B
        !             8: #include <dmd.h>
        !             9: .br
        !            10: short muldiv (a, b, c)
        !            11: .br
        !            12: int a, b, c;
        !            13: .SH DESCRIPTION
        !            14: The
        !            15: .I muldiv
        !            16: function
        !            17: is a macro that returns the 16-bit result
        !            18: .IR (a*b)/c .
        !            19: .I (a*b)
        !            20: is calculated to 32 bits to minimize the precision lost.
        !            21: The
        !            22: .I muldiv
        !            23: function
        !            24: is convenient for calculating transformations.
        !            25: .SH EXAMPLE
        !            26: The following subroutine implements the transform(3R) function. It
        !            27: converts a point from window coordinates to screen coordinates:
        !            28: .sp
        !            29: .nf
        !            30: .ft CM
        !            31: 
        !            32: #include <dmd.h>
        !            33: 
        !            34: Point
        !            35: transform(p)
        !            36: Point p;
        !            37: {
        !            38:        Point Do, Dc, ret;
        !            39: 
        !            40:        Do = Drect.origin;
        !            41:        Dc = Drect.corner;
        !            42: 
        !            43:        ret.x = muldiv(p.x, Dc.x-Do.x, XMAX) + Do.x;
        !            44:        ret.y = muldiv(p.y, Dc.y-Do.y, YMAX) + Do.y;
        !            45: 
        !            46:        return(ret);
        !            47: }
        !            48: .ft 1
        !            49: .fi
        !            50: .P
        !            51: The following subroutine does the opposite of the transform(3R)
        !            52: function. It converts a point from screen coordinates to window 
        !            53: coordinates.
        !            54: .nf
        !            55: .ft CM
        !            56: 
        !            57: #include <dmd.h>
        !            58: 
        !            59: Point
        !            60: untransform(p)
        !            61: Point p;
        !            62: {
        !            63:        Point Do, Dc, ret;
        !            64: 
        !            65:        Do = Drect.origin;
        !            66:        Dc = Drect.corner;
        !            67: 
        !            68:        ret.x = muldiv(p.x-Do.x, XMAX, Dc.x-Do.x);
        !            69:        ret.y = muldiv(p.y-Do.y, YMAX, Dc.y-Do.y);
        !            70: 
        !            71:        return(ret);
        !            72: }
        !            73: .fi
        !            74: .ft R
        !            75: .SH SEE ALSO
        !            76: globals(3R), ptarith(3R), transform(3R/3L).

unix.superglobalmegacorp.com

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