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>