Annotation of OpenXM/src/tigers/tigers.patch, Revision 1.2
1.1 maekawa 1: diff -urN TiGERS_0.9.orig/NOTE.txt TiGERS_0.9/NOTE.txt
2: --- TiGERS_0.9.orig/NOTE.txt Thu Jan 1 09:00:00 1970
3: +++ TiGERS_0.9/NOTE.txt Sat Jan 8 07:43:41 2000
4: @@ -0,0 +1 @@
5: +This is a working directory by NT. 1999, 6/26.
6: diff -urN TiGERS_0.9.orig/README.change TiGERS_0.9/README.change
7: --- TiGERS_0.9.orig/README.change Thu Jan 1 09:00:00 1970
8: +++ TiGERS_0.9/README.change Sat Jan 8 07:46:11 2000
9: @@ -0,0 +1 @@
10: +The original source code of TiGERS is in OpenXM_contib/TiGERS_0.9.
11: diff -urN TiGERS_0.9.orig/binomial.c TiGERS_0.9/binomial.c
12: --- TiGERS_0.9.orig/binomial.c Sat Jan 8 07:42:43 2000
13: +++ TiGERS_0.9/binomial.c Sat Jan 8 07:43:41 2000
14: @@ -12,7 +12,7 @@
15: #include<stdlib.h>
16: #include "utils.h"
17: #include "binomial.h"
18: -
19: +extern int NT;
20:
21: /*
22: **-------------ring defs-----------------------------------------------------
23: @@ -98,12 +98,21 @@
24: */
25: void print_monomial(FILE *of, int *exps){
26: int i,jk=0;
27: - for(i=0;i<ring_N;i++){
28: - if (exps[i]!=0){
29: - if (jk!=0) fprintf(of,"*");
30: - else jk=1;
31: - ring_putvar(of,i);
32: - if (exps[i]>1) fprintf(of,"^%d",exps[i]);
33: + if (NT == 1) {
34: + fprintf(of,"[");
35: + for (i=0; i<ring_N; i++) {
36: + fprintf(of,"%d",exps[i]);
37: + if (i != ring_N-1) fprintf(of," , ");
38: + }
39: + fprintf(of,"]");
40: + }else{
41: + for(i=0;i<ring_N;i++){
42: + if (exps[i]!=0){
43: + if (jk!=0) fprintf(of,"*");
44: + else jk=1;
45: + ring_putvar(of,i);
46: + if (exps[i]>1) fprintf(of,"^%d",exps[i]);
47: + }
48: }
49: }
50: }
51: @@ -309,17 +318,33 @@
52: **
53: */
54: void binomial_print(FILE *of, binomial b){
55: - if (b==0) fprintf(of,"(NULL)");
56: - else {
57: - if (b->ff==FACET) fprintf(of,"# ");
58: - else if (b->ff==NONFACET) fprintf(of,"! ");
59: - /*else if (b->ff==UNKNOWN) fprintf(of,"? ");*/
60: - print_monomial(of,b->exps1);
61: - if (b->bf==BINOMIAL){
62: - fprintf(of,"-");
63: - print_monomial(of,b->exps2);
64: - }
65: - }
66: + if (NT == 1) {
67: + if (b==0) fprintf(of,"[ ]");
68: + else {
69: + /* if (b->ff==FACET) fprintf(of,"# ");
70: + else if (b->ff==NONFACET) fprintf(of,"! "); */
71: + /*else if (b->ff==UNKNOWN) fprintf(of,"? ");*/
72: + fprintf(of,"[");
73: + print_monomial(of,b->exps1);
74: + if (b->bf==BINOMIAL){
75: + fprintf(of," , ");
76: + print_monomial(of,b->exps2);
77: + fprintf(of,"]");
78: + }
79: + }
80: + }else{
81: + if (b==0) fprintf(of,"(NULL)");
82: + else {
83: + if (b->ff==FACET) fprintf(of,"# ");
84: + else if (b->ff==NONFACET) fprintf(of,"! ");
85: + /*else if (b->ff==UNKNOWN) fprintf(of,"? ");*/
86: + print_monomial(of,b->exps1);
87: + if (b->bf==BINOMIAL){
88: + fprintf(of,"-");
89: + print_monomial(of,b->exps2);
90: + }
91: + }
92: + }
93: }
94:
95: /*
96: diff -urN TiGERS_0.9.orig/call.c TiGERS_0.9/call.c
97: --- TiGERS_0.9.orig/call.c Sat Jan 8 07:42:43 2000
98: +++ TiGERS_0.9/call.c Sat Jan 8 07:43:41 2000
99: @@ -15,6 +15,8 @@
100: #include "gset.h"
101: #include "matrices.h"
102:
103: +int NT = 1;
104: +
105: /*
106: ** write a description of program usage to stderr
107: */
108: @@ -87,7 +89,7 @@
109:
110: #define MATFOUND 1
111: #define GSETFOUND 2
112: -main(int argc, char **argv ){
113: +main2(int argc, char **argv ){
114: char *c,cc, *prog=argv[0], *ifname=0, *ofname=0;
115: int tmp,acnt,stat=0,counter;
116: gset G1=0,gset_toric_ideal();
117: @@ -205,6 +207,29 @@
118: }
119: }
120:
121: + if (NT == 1) {
122: +
123: + fprintf(outfile,"[\n");
124: + /* perform reverse search if desired*/
125: + if (root_only==FALSE){
126: + if (use_exsearch==FALSE){
127: + /* should double check we are at root */
128: + tt=clock();
129: + counter=rsearch(G1);
130: + tt=(clock()-tt)/CLOCKS_PER_SEC;
131: + fprintf(outfile,"\n");
132: + } else {
133: + tt=clock();
134: + counter=exsearch(G1);
135: + tt=(clock()-tt)/CLOCKS_PER_SEC;
136: + fprintf(outfile,"\n");
137: + }
138: + }
139: +
140: + fprintf(outfile,"]\n");
141: + goto epilogue ;
142: + }
143: + /* if NT != 1, then start the followings. */
144: /* output first GB if desired */
145: fprintf(outfile,"%% starting GB:\n");
146: fprintf(outfile,"R: %d\n",ring_N);
147: @@ -314,15 +339,119 @@
148: return 0;
149: }
150: }
151: +
152: + epilogue: ;
153: /* clean up */
154: LP_free_space();
155: if (G1!=0) gset_free(G1);
156: }
157:
158:
159: +/************************ NT ***************************/
160: +static int findNextToken(char *is, int start)
161: +{
162: + if (start == -1) goto endtext ;
163: + while ( is[start] <= ' ') {
164: + if (is[start] == '\0' ) goto endtext ;
165: + start++;
166: + }
167: + while ( is[start] > ' ') {
168: + if (is[start] == '\0') goto endtext ;
169: + start++;
170: + }
171: + while ( is[start] <= ' ') {
172: + if (is[start] == '\0' ) goto endtext ;
173: + start++;
174: + }
175: + return(start);
176: + endtext: ;
177: + fprintf(stderr,"findNextToken: end of the text.\n");
178: + return(-1);
179: +}
180: +int **imatrix_read_from_string(char *is,int *m, int *n) {
181: + char c;
182: + int i,j;
183: + int **M;
184: + int pt = 0;
185: +
186: + /* 2 3 :
187: + 1 1 1
188: + 0 1 2
189: + */
190: + /* read in matrix dimensions and initialize matrix */
191: + sscanf(is,"%d %d :",m,n);
192: + M=new_imatrix(*m,*n);
193: + pt = findNextToken(is,pt); /* n */
194: + pt = findNextToken(is,pt); /* : */
195: +
196: + /* read in matrix entrees */
197: + for(i=0;i<*m;i++){
198: + for(j=0;j<*n;j++){
199: + pt = findNextToken(is,pt);
200: + sscanf(&(is[pt]),"%d",&(IMref(M,i,j)));
201: + }
202: + }
203: +
204: + return M;
205: +}
206:
207: +tiger_executeString_M(char *is) {
208: + char *c,cc, *prog="tigers", *ifname=0, *ofname=0;
209: + int tmp,acnt,stat=0,counter;
210: + gset G1=0,gset_toric_ideal();
211: + int **M=0,Mn,Mm;
212: + double tt;
213:
214: + /* initialize parameters */
215: + root_only=FALSE;
216: + rsearch_cache=TRUE;
217: + print_tree=FALSE;
218: + print_init=FALSE;
219:
220: + if ((M=imatrix_read_from_string(is,&Mm,&Mn))==0){
221: + fprintf(stderr,"%s: imatrix_read() failed\n",prog);
222: + exit(1);
223: + }
224: + if (ring_N==0) ring_set(Mn);
225: + else if (ring_N!=Mn) {
226: + fprintf(stderr,"%s: Matrix collum and ring dimensions must agree\n",prog);
227: + exit(1);
228: + }
229: + stat=MATFOUND;
230:
231:
232: + /* ensure we have root */
233: + if (stat==MATFOUND){
234: + G1=gset_toric_ideal(M,Mm,Mn);
235: + }
236:
237: + fprintf(outfile,"[\n");
238: + /* perform reverse search if desired*/
239: + if (root_only==FALSE){
240: + if (use_exsearch==FALSE){
241: + /* should double check we are at root */
242: + tt=clock();
243: + counter=rsearch(G1);
244: + tt=(clock()-tt)/CLOCKS_PER_SEC;
245: + fprintf(outfile,"\n");
246: + } else {
247: + tt=clock();
248: + counter=exsearch(G1);
249: + tt=(clock()-tt)/CLOCKS_PER_SEC;
250: + fprintf(outfile,"\n");
251: + }
252: + }
253: +
254: + fprintf(outfile,"]\n");
255: + LP_free_space();
256: + if (G1!=0) gset_free(G1);
257: +}
258: +
259: +
1.2 ! takayama 260: +main(int argc, char *argv[]) { infile=stdin; outfile=stdout;
1.1 maekawa 261: + if (argc > 1) {
262: + tiger_executeString_M(argv[1]);
263: + }else{
264: + tiger_executeString_M("2 4 : 1 1 1 1 0 1 2 3");
265: + }
266: +}
267: diff -urN TiGERS_0.9.orig/gset.c TiGERS_0.9/gset.c
268: --- TiGERS_0.9.orig/gset.c Sat Jan 8 07:42:43 2000
269: +++ TiGERS_0.9/gset.c Sat Jan 8 07:43:41 2000
270: @@ -13,6 +13,7 @@
271: #include "gset.h"
272: #include "matrices.h"
273: #include "Rsimp.h"
274: +extern int NT;
275:
276: /* uncomment the following to cause use sainity checks (not fully tested)*/
277: /*
278: @@ -81,12 +82,21 @@
279: void gset_print(FILE *of,gset g){
280: binomial b;
281:
282: - fprintf(of,"{");
283: - for(b=g->bottom;b!=0;b=b->next){
284: - binomial_print(of,b);
285: - if (b->next!=0) fprintf(of,", ");
286: + if (NT == 1) {
287: + fprintf(of,"[");
288: + for(b=g->bottom;b!=0;b=b->next){
289: + binomial_print(of,b);
290: + if (b->next!=0) fprintf(of," , ");
291: + }
292: + fprintf(of,"]");
293: + }else{
294: + fprintf(of,"{");
295: + for(b=g->bottom;b!=0;b=b->next){
296: + binomial_print(of,b);
297: + if (b->next!=0) fprintf(of,", ");
298: + }
299: + fprintf(of,"}");
300: }
301: - fprintf(of,"}");
302: }
303:
304: /*
305: diff -urN TiGERS_0.9.orig/memo.txt TiGERS_0.9/memo.txt
306: --- TiGERS_0.9.orig/memo.txt Thu Jan 1 09:00:00 1970
307: +++ TiGERS_0.9/memo.txt Sat Jan 8 07:43:41 2000
308: @@ -0,0 +1,33 @@
309: +Open XM $B2=$O#2$H$*$j$NJ}K!$,$"$j(B. 1999, 6/26
310: +$B0l$D$O(B, $B=PNO$r%Q!<%5$GM}2r$9$kJ}K!!#(B
311: +$B$b$&$R$H$D$O$Q$C$A$7$F$7$^$&J}K!(B.
312: +
313: +int NT = 1 ;
314: +
315: +yama2:S/Ti $B$,:n6H%G%#%l%/%H%j(B.
316: +
317: +print_monomial (binomial.c) $B$r%j%9%H7A<0$KJQ99(B.
318: +$B:G=*E*$K$O(B fprintf $B$G$O$J$/(B, $B%j%9%H$r9=@.$7$FJV$9$h$&$KJQ99$G$-$k$H;W$&(B.
319: +$B$3$A$i$NJ}$,$$$$$+(B. $B$3$A$i$O(B NT = 2 $B$G$d$k$3$H$K$7$h$&(B.
320: +
321: +binomial_print
322: +
323: +gset_print (gset.c) Grobner basis $B$r%W%j%s%H$9$k(B.
324: +
325: +vertex_print (tiger.c) vertex $B$r%W%j%s%H$9$k(B.
326: +
327: +call.c $B$,(B top level. main $B$b$"$k$h(B.
328: +
329: +imatrix_read $B$r(B, string $B$h$jFI$`$h$&$K$+$($F(B,
330: +$B<!$N%3%^%s%I$r<B9T$G$-$k$h$&$K$7$?!#(B
331: +main(int argc, char *argv[]) {
332: + if (argc > 1) {
333: + tiger_executeString_M(argv[1]);
334: + }else{
335: + tiger_executeString_M("2 4 : 1 1 1 1 0 1 2 3");
336: + }
337: +}
338: +
339: +--- TiGER $B$N7P83$O(B, $B>.$5$$%=%U%H$r$$$+$K(B Open XM server $B2=$9$k$+$N(B
340: +--- $B$h$$7P83$K$J$k$H;W$&(B. $B$3$N7P83$r%W%m%0%i%`:nK!$H$7$F5-O?$9$k$N$O(B
341: +--- $BBg;v$G$"$m$&(B. $B$N$3$j$OF|K\$G$d$k(B. $B$"$H$O(B, $B5i?t2r$N9=@.%W%m%0%i%`(B.
342: diff -urN TiGERS_0.9.orig/tigers.c TiGERS_0.9/tigers.c
343: --- TiGERS_0.9.orig/tigers.c Sat Jan 8 07:42:43 2000
344: +++ TiGERS_0.9/tigers.c Sat Jan 8 07:43:41 2000
345: @@ -12,6 +12,7 @@
346: #include "utils.h"
347: #include "gset.h"
348: int rsearch_cache=TRUE;
349: +extern int NT;
350:
351: /*
352: ** Output initial ideals and numbers of facets at each stage.
353: @@ -32,27 +33,31 @@
354: #define max(a,b) (((a)>(b))?(a):(b))
355: #define min(a,b) (((a)<(b))?(a):(b))
356: void vertex_print(gset g1){
357: - stats_maxfacets=max(gset_nfacets(g1),stats_maxfacets);
358: - stats_maxelts=max(gset_nelts(g1),stats_maxelts);
359: - stats_maxdeg=max(gset_deg(g1),stats_maxdeg);
360: - if (stats_minfacets<0) stats_minfacets=gset_nfacets(g1);
361: - else stats_minfacets=min(stats_minfacets,gset_nfacets(g1));
362: - if (stats_minelts<0) stats_minelts=gset_nelts(g1);
363: - else stats_minelts=min(stats_minelts,gset_nelts(g1));
364: - if (stats_mindeg<0) stats_mindeg=gset_deg(g1);
365: - else stats_mindeg=min(stats_mindeg,gset_deg(g1));
366: - fprintf(outfile,"Vtx: %d (%d facets/%d binomials/degree %d)\n",
367: - gset_id(g1),gset_nfacets(g1),gset_nelts(g1),gset_deg(g1));
368: - if (print_init==TRUE){
369: - fprintf(outfile," Initial ideal:");gset_init_print(outfile,g1);
370: - fprintf(outfile,"\n Facet Binomials:");gset_facet_print(outfile,g1);
371: - }
372: - else gset_print(outfile,g1);
373: - if (print_tree==TRUE && rsearch_cache==TRUE && gset_cache_vtx(g1)!=0){
374: + if (NT == 1) {
375: + gset_print(outfile,g1); fprintf(outfile," ,\n");
376: + }else{
377: + stats_maxfacets=max(gset_nfacets(g1),stats_maxfacets);
378: + stats_maxelts=max(gset_nelts(g1),stats_maxelts);
379: + stats_maxdeg=max(gset_deg(g1),stats_maxdeg);
380: + if (stats_minfacets<0) stats_minfacets=gset_nfacets(g1);
381: + else stats_minfacets=min(stats_minfacets,gset_nfacets(g1));
382: + if (stats_minelts<0) stats_minelts=gset_nelts(g1);
383: + else stats_minelts=min(stats_minelts,gset_nelts(g1));
384: + if (stats_mindeg<0) stats_mindeg=gset_deg(g1);
385: + else stats_mindeg=min(stats_mindeg,gset_deg(g1));
386: + fprintf(outfile,"Vtx: %d (%d facets/%d binomials/degree %d)\n",
387: + gset_id(g1),gset_nfacets(g1),gset_nelts(g1),gset_deg(g1));
388: + if (print_init==TRUE){
389: + fprintf(outfile," Initial ideal:");gset_init_print(outfile,g1);
390: + fprintf(outfile,"\n Facet Binomials:");gset_facet_print(outfile,g1);
391: + }
392: + else gset_print(outfile,g1);
393: + if (print_tree==TRUE && rsearch_cache==TRUE && gset_cache_vtx(g1)!=0){
394: fprintf(outfile,"\n Reducing Edge: [%d,%d]",
395: gset_id(g1),gset_id(gset_cache_vtx(g1)));
396: - }
397: - fprintf(outfile,"\n");
398: + }
399: + fprintf(outfile,"\n");
400: + }
401: }
402:
403:
404: diff -urN TiGERS_0.9.orig/toric.c TiGERS_0.9/toric.c
405: --- TiGERS_0.9.orig/toric.c Sat Jan 8 07:42:43 2000
406: +++ TiGERS_0.9/toric.c Sat Jan 8 07:43:41 2000
407: @@ -15,7 +15,7 @@
408: #include "gset.h"
409: #include "matrices.h"
410: #include "Rsimp.h"
411: -
412: +extern int NT;
413:
414:
415:
416: @@ -34,7 +34,10 @@
417: int lold,jk;
418:
419: /* progress report */
420: - fprintf(stderr,"taking colon of J with %c:\n",'a'+lv);
421: + if (NT == 1) {
422: + }else{
423: + fprintf(stderr,"taking colon of J with %c:\n",'a'+lv);
424: + }
425:
426: /* set lex last variable to be lv */
427: lold=ring_lv;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>