[BACK]Return to mi.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Annotation of OpenXM_contrib2/asir2000/engine/mi.c, Revision 1.1

1.1     ! noro        1: /* $OpenXM: OpenXM/src/asir99/engine/mi.c,v 1.1.1.1 1999/11/10 08:12:26 noro Exp $ */
        !             2: #include "ca.h"
        !             3:
        !             4: extern int current_mod;
        !             5:
        !             6: void addmi(a,b,c)
        !             7: MQ a,b;
        !             8: MQ *c;
        !             9: {
        !            10:        if ( !current_mod )
        !            11:                error("addmi : invalid modulus");
        !            12:        if ( (a && NID(a) != N_M) || (b && NID(b) != N_M) )
        !            13:                error("addmi : invalid argument");
        !            14:        addmq(current_mod,a,b,c);
        !            15: }
        !            16:
        !            17: void submi(a,b,c)
        !            18: MQ a,b;
        !            19: MQ *c;
        !            20: {
        !            21:        if ( !current_mod )
        !            22:                error("submi : invalid modulus");
        !            23:        if ( (a && NID(a) != N_M) || (b && NID(b) != N_M) )
        !            24:                error("submi : invalid argument");
        !            25:        submq(current_mod,a,b,c);
        !            26: }
        !            27:
        !            28: void mulmi(a,b,c)
        !            29: MQ a,b;
        !            30: MQ *c;
        !            31: {
        !            32:        if ( !current_mod )
        !            33:                error("mulmi : invalid modulus");
        !            34:        if ( (a && NID(a) != N_M) || (b && NID(b) != N_M) )
        !            35:                error("mulmi : invalid argument");
        !            36:        mulmq(current_mod,a,b,c);
        !            37: }
        !            38:
        !            39: void divmi(a,b,c)
        !            40: MQ a,b;
        !            41: MQ *c;
        !            42: {
        !            43:        if ( !current_mod )
        !            44:                error("divmi : invalid modulus");
        !            45:        if ( (a && NID(a) != N_M) || (b && NID(b) != N_M) )
        !            46:                error("divmi : invalid argument");
        !            47:        divmq(current_mod,a,b,c);
        !            48: }
        !            49:
        !            50: void chsgnmi(a,c)
        !            51: MQ a,*c;
        !            52: {
        !            53:        if ( !current_mod )
        !            54:                error("chsgnmi : invalid modulus");
        !            55:        if ( a && NID(a) != N_M )
        !            56:                error("chsgnmi : invalid argument");
        !            57:        submq(current_mod,0,a,c);
        !            58: }
        !            59:
        !            60: void pwrmi(a,b,c)
        !            61: MQ a;
        !            62: Q b;
        !            63: MQ *c;
        !            64: {
        !            65:        if ( !current_mod )
        !            66:                error("pwrmi : invalid modulus");
        !            67:        if ( a && NID(a) != N_M )
        !            68:                error("pwrmi : invalid argument");
        !            69:        pwrmq(current_mod,a,b,c);
        !            70: }
        !            71:
        !            72: int cmpmi(a,b)
        !            73: MQ a,b;
        !            74: {
        !            75:        int c;
        !            76:
        !            77:        if ( !current_mod )
        !            78:                error("cmpmi : invalid modulus");
        !            79:        if ( (a && NID(a) != N_M) || (b && NID(b) != N_M) )
        !            80:                error("cmpmi : invalid argument");
        !            81:        if ( !a )
        !            82:                if ( !b )
        !            83:                        return 0;
        !            84:                else
        !            85:                        return CONT(b) < 0;
        !            86:        else
        !            87:                if ( !b )
        !            88:                        return CONT(a) > 0;
        !            89:                else {
        !            90:                        c = CONT(a)-CONT(b);
        !            91:                        if ( c % current_mod )
        !            92:                                return c > 0;
        !            93:                        else
        !            94:                                return 0;
        !            95:                }
        !            96: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>