Annotation of coherent/f/usr/include.78/mprec.h, revision 1.1

1.1     ! root        1: /* (-lgl
        !             2:  *     COHERENT Version 3.0
        !             3:  *     Copyright (c) 1982, 1993 by Mark Williams Company.
        !             4:  *     All rights reserved. May not be copied without permission.
        !             5:  -lgl) */
        !             6: /*
        !             7:  *     Definitions of all user multi-precision types, macros and
        !             8:  *     not-int returning functions.
        !             9:  */
        !            10: 
        !            11: #ifndef        __MPREC_H__
        !            12: #define        __MPREC_H__
        !            13: 
        !            14: #ifndef NULL
        !            15: #define        NULL            ((char *)0)
        !            16: #endif
        !            17: #define TRUE           (0 == 0)
        !            18: #define FALSE          (0 != 0)
        !            19: #define        BASE            128
        !            20: #define        L2BASE          7
        !            21: #define        NEFL            (BASE - 1)      /* leading byte of negative numbers */
        !            22: #define        NORSIZ          4               /* maximum size for int value */
        !            23: 
        !            24: 
        !            25: /*
        !            26:  *     Multi-precision integer type.
        !            27:  */
        !            28: 
        !            29: typedef struct {
        !            30:        unsigned len;
        !            31:        char *val;
        !            32: } mint;
        !            33: 
        !            34: 
        !            35: /*
        !            36:  *     Minit initializes a mint so that it may be used by the other
        !            37:  *     multi-precision routines.  This simply consists of setting the
        !            38:  *     val field to NULL so that mpfree will know that there is nothing
        !            39:  *     to free.  Note that the mint so initialized has no value and
        !            40:  *     should not be used as an operand, but may be used as the result
        !            41:  *     of any of the multi-precision routines.
        !            42:  */
        !            43: 
        !            44: #define        minit(mp)       (mp)->val = NULL
        !            45: 
        !            46: 
        !            47: /*
        !            48:  *     Mvfree frees the value associated to a pointer to a mint.
        !            49:  *     Note that it does not re-initialize the mint.
        !            50:  */
        !            51: 
        !            52: #define        mvfree(mp)      mpfree((mp)->val)
        !            53: 
        !            54: 
        !            55: /*
        !            56:  *     Functions returning non-ints.
        !            57:  */
        !            58: 
        !            59: void   gcd(),          /* greatest common divisor of 2 mints */
        !            60:        madd(),         /* add 2 mints */
        !            61:        mcopy(),        /* copy mint */
        !            62:        mdiv(),         /* divide 2 mints */
        !            63:        min(),          /* read in mint from stdin */
        !            64:        mintfr(),       /* free all space used by a mint */
        !            65:        mitom(),        /* set a mint to the value of an int */
        !            66:        mneg(),         /* negate a mint */
        !            67:        mout(),         /* write out mint onto stdout */
        !            68:        mperr(),        /* print error on stdout and exit */
        !            69:        mpfree(),       /* free space allocated by mpalc */
        !            70:        msma(),         /* shift-multiply-add inplace */
        !            71:        msqrt(),        /* square root of mint */
        !            72:        msub(),         /* subtract 2 mints */
        !            73:        mult(),         /* multiply 2 mints */
        !            74:        norm(),         /* normalize a mint */
        !            75:        pow(),          /* raise mint to a mint power mod a mint */
        !            76:        rpow(),         /* raise mint to a mint power */
        !            77:        sdiv(),         /* divide a mint by a char */
        !            78:        smult(),        /* multiply a mint by a char */
        !            79:        spow(),         /* raise mint to an unsigned power */
        !            80:        xgcd();         /* extended greatest common divisor */
        !            81: char   *mpalc(),       /* allocate space */
        !            82:        *mtos();        /* convert mint to string */
        !            83: mint   *itom();        /* allocate space for mint initialized to int */
        !            84: 
        !            85: 
        !            86:        /* external variables */
        !            87: 
        !            88: extern mint    *mzero,         /* a mint which has a value of zero */
        !            89:                *mone,          /* a mint which has a value of one */
        !            90:                *mminint,       /* min value that fits in an int */
        !            91:                *mmaxint;       /* max value that fits in an int */
        !            92: extern int     ibase,          /* input base (2 <= ibase <= 16 assumed) */
        !            93:                obase;          /* output base (2 <= obase <= 16 assumed) */
        !            94: 
        !            95: #endif

unix.superglobalmegacorp.com

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