[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

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>