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>