Annotation of OpenXM/src/kan96xx/Kan/global.c, Revision 1.32
1.32 ! takayama 1: /* global.c $OpenXM: OpenXM/src/kan96xx/Kan/global.c,v 1.31 2004/09/17 02:42:57 takayama Exp $ */
1.1 maekawa 2: #include <stdio.h>
3: #include <setjmp.h>
4: #include "datatype.h"
5: #include "stackm.h"
6: #include "lookup.h"
7:
8: /*-------- variables to define a ring ----------------*/
9: /*
10: The numbers L,M, LL,MM,NN are set in setUpRing() in setupring.c now.
11:
12: Be careful when you do not use one of three type variables.
13: Any setting must keep the relation: L<=M<=N.
14: You must see mmwMult() in poly.c in the above case.
15: Example. L=M=0 means there is no q-variables and difference variables.
1.15 takayama 16: L=5, M=N=5 means all variables are q-variables (x0=q).
17: L=2, M=2, N=5 means x0=q, x1 is q-variable and x2,,,,x4 are
18: differential variables.
19: L=0, M=2, N=5 means x0,x1 are difference variables and x2,,,x4
20: are differential variables. */
1.1 maekawa 21: /*#define L 0 number of q-variables */
22: /*#define M 0 number of difference variables */
23: /*Number of elimination variables */
24: /*#define LL 0 */
25: /*#define MM 0 */
1.15 takayama 26: /* x_MM,...,x_{M-1} are eliminated difference variables */
27: /* MM < M if you want to use it. MM>=M if you do not use it */
1.1 maekawa 28: /*#define NN 9 */
1.15 takayama 29: /*x_NN,...,x_{N-1} are eliminated differential variables */
30: /* NN < N if you want to use it. NN>=N if you do not use it.
31: See the eliminated_standard() in dbm3.c */
1.1 maekawa 32:
33:
34: /* They are not used.
35: int N = 6;
36: int L = 1;
37: int M = 1;
38: int C = 1;
39: int NN = 5;
40: int MM = 1;
41: int LL = 1;
42: int CC = 1;
43: */
44:
45:
46: /********** These variables are set in setUpRing() ***********************/
47: int Md = 0; /* if Md=1, then x_NN, ..., x_{N-1} are eliminated variables*/
48: int Med = 0; /* if Med=1, then x_MM, ..., x_{M-1} are eliminated variables*/
49: int Mq = 0; /* if Mq=1, then x_LL, ..., x_{L-1} are eliminated variables*/
50:
51: char **TransX; /* name of variables */
52: char **TransD;
53: int *Order; /* order matrix */
54:
55: int Msize = 0;
56: /*int P = 32609; */ /* characteristic */
57: /* ------------------ end of variables for the ring -------------- */
58:
59: struct ring SmallRing;
60: struct ring *SmallRingp = &SmallRing;
61:
62: struct ring *CurrentRingp = (struct ring *)0;
63:
64: struct ring *SyzRingp = (struct ring *)0;
65:
66: MP_INT *Mp_one;
67: MP_INT *Mp_zero;
68: MP_INT Mp_work_iiComb;
69: MP_INT Mp_work_iiPower;
70: MP_INT Mp_work_iiPoch;
71:
72: struct coeff *UniversalZero;
73: struct coeff *UniversalOne;
74:
75: /*******************************************************************/
76: int History = 1; /* get a transformation matrix or not */
77:
78: int Commutative = 0;
79: int UseCriterion1 = 0;
80: int UseCriterion2B = 0;
81: int OutputStyle = '*';
82: int Wrap = 0; /* output.c */
83: int Verbose = 0;
84: int ReduceLowerTerms = 1;
85: int Criterion2B = 0;
86: int Criterion2M = 0;
87: int Criterion2F = 0;
88: int Statistics = 0;
1.9 takayama 89: int AutoReduce = 0;
1.1 maekawa 90: int CheckHomogenization = 1;
91: int ErrorMessageMode = 0;
92: int WarningMessageMode = 0;
93: int CatchCtrlC = 0;
94: int Strict = 0; /* It is used warning. */
95: int Strict2 = 0; /* It is used in putDictionary */
96: extern struct dictionary UserDictionary[];
97: int SigIgn = 0;
98: int StopDegree = 0x7fff;
99: int KSPushEnvMode = 0;
100: int Sugar = 0;
101: int Homogenize_vec = 1; /*x + e (x+1)===>(1) x h + e (x+h) or (0)x + e(x+h) */
102: int CmoDMSOutputOption = 0; /* Output with
1.15 takayama 103: (1) RING_BY_NAME or (0) DMS_OF_N_VARIABLES.
104: plugin/cmo.c */
1.10 takayama 105: int SecureMode = 0;
1.31 takayama 106: int RestrictedMode = 0;
107: int RestrictedMode_saved = 0;
1.22 takayama 108: int Ecart = 0;
1.23 takayama 109: int EcartAutomaticHomogenization = 0;
1.24 takayama 110: int TraceLift = 0;
111: struct ring *TraceLift_ringmod = NULL;
1.25 takayama 112: int DoCancel = 0;
1.27 takayama 113: int QuoteMode = 0;
1.1 maekawa 114:
115: /* global variables for stackmachine.c */
116: int VerboseStack = 1; /* 0 is quiet, 1 is standard, 2 ... */
117: int DebugStack = 0;
118:
1.11 takayama 119: FILE *Fstack = NULL; /* Initialized to standard output stream
120: in stackmachine_init()
121: for module: stackmachine */
1.1 maekawa 122:
123: #if defined(sun)
124: /* in case of Solaris, use the following: */
125: int EnvOfStackMachine[2000];
126: #else
1.18 takayama 127: #if defined(__CYGIWN__)
128: sigjmp_buf EnvOfStackMachine;
129: #else
1.1 maekawa 130: jmp_buf EnvOfStackMachine;
1.18 takayama 131: #endif
1.1 maekawa 132: #endif
133:
134: struct object NullObject;
135: struct object NoObject;
136:
137: int Lookup[TYPES][TYPES];
138:
139: int Quiet = 0;
140: int TimerOn = 0;
141:
1.32 ! takayama 142: char *VersionString = "3.040921";
1.1 maekawa 143:
1.4 takayama 144: char *LeftBracket = NULL;
145: char *RightBracket = NULL;
146:
1.1 maekawa 147: int AvoidTheSameRing = 1;
148: int DebugCMO = 0; /* plugin/cmo.c */
149: int OXprintMessage = 1; /* referred only from ox_sm1 plugin/ox.hh */
150:
151: char *OxSystem = "ox_sm1.plain"; /* Example : ox_sm1.plain */
152: char *OxSystemVersion = NULL; /* Example : 0.1 */
153:
1.11 takayama 154: /* global variables for kanExport0.c */
155: int VerboseK = 1; /* 1 is standard */
156: int DebugK = 0;
157: FILE *Fk = NULL; /* Initialized to stdout in stackmachine_init() */
158:
1.1 maekawa 159: stackmachine_init() {
160: int i,j;
1.11 takayama 161: extern FILE *BaseFp;
1.30 takayama 162: GC_init();
1.1 maekawa 163: OxSystemVersion = VersionString;
164: Fstack = stdout; /* initialize output stream */
1.11 takayama 165: Fk = stdout;
166: BaseFp = stdin;
1.4 takayama 167: LeftBracket = "["; RightBracket = "]";
1.1 maekawa 168: /* initialize null object */
169: NullObject.tag = 0;
170: NullObject.lc.op = NullObject.rc.op = (struct object *)NULL;
171: /* findUserdictionary returns NoObject if it cannot find the key.*/
172: NoObject.tag = -1;
173: NoObject.lc.op = NoObject.rc.op = (struct object *)NULL;
174: /* Initalize lookup table */
175: for (i=0; i<TYPES; i++) {
176: for (j=0; j<TYPES; j++)
177: Lookup[i][j] = i*TYPES + j; /* Refer to mklookup.c */
178: }
179: /* Initialize hashing */
180: hashInitialize(UserDictionary);
181:
182: initClassDataBase();
183:
184: }
185:
186:
187: stackmachine_close() {
188: /* close output stream */
189: }
190:
191:
192:
193: Kclose() {
194: /* close Fk */
195: }
196:
197:
198:
199:
200:
201:
202:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>