[BACK]Return to switch.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Annotation of OpenXM/src/kan96xx/Kan/switch.c, Revision 1.1

1.1     ! maekawa     1: #include <stdio.h>
        !             2: #include "datatype.h"
        !             3: #include "extern2.h"
        !             4: #include "gradedset.h"
        !             5:
        !             6: /********** flags for switch status **************/
        !             7: char *F_mmLarger = "???";
        !             8: char *F_mpMult = "???";
        !             9: char *F_monomialAdd = "???";
        !            10: char *F_red = "???";
        !            11: char *F_sp = "???";
        !            12: char *F_groebner = "???";
        !            13: char *F_grade = "???";
        !            14: char *F_isSameComponent = "???";
        !            15:
        !            16:
        !            17: void print_switch_status(void) {
        !            18:   printf("------------------------------------\n");
        !            19:   printf("mmLarger [matrix,lexicographic,tower]          %s\n",F_mmLarger);
        !            20:   printf("mpMult   [poly,diff,difference]                %s\n",F_mpMult);
        !            21:   printf("monomialAdd [poly]                             %s\n",F_monomialAdd);
        !            22:   printf("red@      [standard,module1,module2,module1rev]\n");
        !            23:   printf("                                               %s\n",F_red);
        !            24:   printf("isSameComponent [x,xd]                         %s\n",F_isSameComponent);
        !            25:   printf("sp        [standard]                           %s\n",F_sp);
        !            26:   printf("grade     [standard,firstvec,module1,module1v] %s\n",F_grade);
        !            27:   printf("groebner  [standard,gm]                        %s\n",F_groebner);
        !            28: }
        !            29:
        !            30: /* called from stackmachine.c,
        !            31:    ex. $sp$ $so$ switch_function
        !            32:  or    (report) (function) switch_function value(string)
        !            33: */
        !            34: char *switch_function(fun,arg)
        !            35: char *fun;
        !            36: char *arg;
        !            37: {
        !            38:   char *ans = NULL;
        !            39:   if (strcmp(fun,"mmLarger")==0) {
        !            40:     switch_mmLarger(arg);
        !            41:   }else if (strcmp(fun,"mpMult")==0) {
        !            42:     switch_mpMult(arg);
        !            43:   }else if (strcmp(fun,"monomialAdd")==0) {
        !            44:     switch_monomialAdd(arg);
        !            45:   }else if (strcmp(fun,"red@")==0) {
        !            46:     switch_red(arg);
        !            47:   }else if (strcmp(fun,"sp")==0) {
        !            48:     switch_sp(arg);
        !            49:   }else if (strcmp(fun,"isSameComponent")==0) {
        !            50:     switch_isSameComponent(arg);
        !            51:   }else if (strcmp(fun,"groebner")==0) {
        !            52:     switch_groebner(arg);
        !            53:   }else if (strcmp(fun,"grade")==0) {
        !            54:     switch_grade(arg);
        !            55:   }else if (strcmp(fun,"report")==0) {
        !            56:     ans = (char *)sGC_malloc(128); /* 128 >= max(strlen(F_*))+1 */
        !            57:     ans[0] = '\0';
        !            58:     if (strcmp(arg,"mmLarger")==0) {
        !            59:       strcpy(ans,F_mmLarger);
        !            60:     }else if (strcmp(arg,"mpMult")==0) {
        !            61:       strcpy(ans,F_mpMult);
        !            62:     }else if (strcmp(arg,"monomialAdd")==0) {
        !            63:       strcpy(ans,F_monomialAdd);
        !            64:     }else if (strcmp(arg,"red@")==0) {
        !            65:       strcpy(ans,F_red);
        !            66:     }else if (strcmp(arg,"isSameComponent")==0) {
        !            67:       strcpy(ans,F_isSameComponent);
        !            68:     }else if (strcmp(arg,"sp")==0) {
        !            69:       strcpy(ans,F_sp);
        !            70:     }else if (strcmp(arg,"groebner")==0) {
        !            71:       strcpy(ans,F_groebner);
        !            72:     }else if (strcmp(arg,"grade")==0) {
        !            73:       strcpy(ans,F_grade);
        !            74:     }else {
        !            75:       fprintf(stderr,"Unknown argument for switch_function():report\n");
        !            76:     }
        !            77:   }else {
        !            78:     fprintf(stderr,"Unknown argument for switch_function()\n");
        !            79:   }
        !            80:   return(ans);
        !            81: }
        !            82:
        !            83: /* 1. called from KinitKan() (poly.c)
        !            84: */
        !            85: void switch_init(void) {
        !            86:   switch_mmLarger("matrix");
        !            87:   switch_mpMult("poly");
        !            88:   switch_monomialAdd("poly");
        !            89:   switch_red("standard");
        !            90:   switch_isSameComponent("x");
        !            91:   switch_sp("standard");
        !            92:   switch_groebner("standard");
        !            93:   switch_grade("standard");
        !            94: }
        !            95:
        !            96: /*
        !            97:   1. called from switch_init(), switch_function();
        !            98:   2. setOrderByMatrix().
        !            99: */
        !           100:
        !           101: void switch_mmLarger(arg)
        !           102: char *arg;
        !           103: {
        !           104:   if (strcmp(arg,"matrix") == 0) {
        !           105:     mmLarger = mmLarger_matrix;
        !           106:     F_mmLarger = "matrix";
        !           107:   } else if (strcmp(arg,"lexicographic") == 0) {
        !           108:     mmLarger = mmLarger_pureLexicographic;
        !           109:     F_mmLarger = "lexicographic";
        !           110:   } else if (strcmp(arg,"tower") == 0) {
        !           111:     mmLarger = mmLarger_tower;
        !           112:     F_mmLarger = "tower";
        !           113:   }else ;
        !           114: }
        !           115:
        !           116: /*
        !           117:   1. called from switch_init(), switch_function();
        !           118: */
        !           119:
        !           120: void switch_mpMult(arg)
        !           121: char *arg;
        !           122: {
        !           123:   if (strcmp(arg,"poly") == 0) {
        !           124:     mpMult = mpMult_poly;
        !           125:     F_mpMult = "poly";
        !           126:   } if (strcmp(arg,"diff") == 0 ) {
        !           127:     mpMult = mpMult_diff;
        !           128:     F_mpMult = "diff";
        !           129:   } if (strcmp(arg,"difference") == 0 ) {
        !           130:     mpMult = mpMult_difference;
        !           131:     F_mpMult = "difference";
        !           132:     /* cf. a dirty trick in mpMult_difference() in poly3.c. */
        !           133:   }else ;
        !           134: }
        !           135:
        !           136: /*
        !           137:   1. called from switch_init(), switch_function();
        !           138: */
        !           139:
        !           140: void switch_monomialAdd(arg)
        !           141: char *arg;
        !           142: {
        !           143:   if (strcmp(arg,"poly") == 0) {
        !           144:     monomialAdd = monomialAdd_poly;
        !           145:     F_monomialAdd = "poly";
        !           146:   }else ;
        !           147: }
        !           148:
        !           149: void switch_red(arg)
        !           150: char *arg;
        !           151: {
        !           152:   if (strcmp(arg,"standard") == 0) {
        !           153:     switch_sp("standard");
        !           154:     isReducible = isReducible_gen;
        !           155:     reduction1 = reduction1_gen;
        !           156:     reduction = reduction_gen;
        !           157:
        !           158:     isCdrReducible = isCdrReducible_gen;
        !           159:     reduction1Cdr = reduction1Cdr_gen;
        !           160:     reductionCdr = reductionCdr_gen;
        !           161:
        !           162:     lcm = lcm_gen;
        !           163:     switch_grade("standard");
        !           164:     F_red = "standard";
        !           165:   }else if (strcmp(arg,"module1") == 0) {
        !           166:     switch_sp("standard");
        !           167:     isReducible = isReducible_module;
        !           168:     reduction1 = reduction1_gen;
        !           169:     reduction = reduction_gen;
        !           170:
        !           171:     isCdrReducible = isCdrReducible_gen;
        !           172:     reduction1Cdr = reduction1Cdr_gen;
        !           173:     reductionCdr = reductionCdr_gen;
        !           174:
        !           175:     lcm = lcm_module;
        !           176:     switch_grade("module1");
        !           177:     F_red = "module1";
        !           178:   }else if (strcmp(arg,"module1rev") == 0) {
        !           179:     switch_sp("standard");
        !           180:     isReducible = isReducible_module;
        !           181:     reduction1 = reduction1_gen;
        !           182:     reduction = reduction_gen_rev;
        !           183:
        !           184:     isCdrReducible = isCdrReducible_gen;
        !           185:     reduction1Cdr = reduction1Cdr_gen;
        !           186:     reductionCdr = reductionCdr_gen;
        !           187:
        !           188:     lcm = lcm_module;
        !           189:     switch_grade("module1");
        !           190:     F_red = "module1rev";
        !           191:   }else if (strcmp(arg,"module2") == 0) {
        !           192:     switch_sp("standard");
        !           193:     isReducible = isReducible_module;
        !           194:     reduction1 = reduction1_gen;
        !           195:     reduction = reduction_gen;
        !           196:
        !           197:     isCdrReducible = isCdrReducible_gen;
        !           198:     reduction1Cdr = reduction1Cdr_gen;
        !           199:     reductionCdr = reductionCdr_gen;
        !           200:
        !           201:     lcm = lcm_module;
        !           202:     switch_grade("standard");
        !           203:     F_red = "module2";
        !           204:   }else if (strcmp(arg,"debug") == 0) {
        !           205:     reduction1 = reduction1_gen_debug;
        !           206:     F_red = "debug";
        !           207:   }else ;
        !           208: }
        !           209:
        !           210: void switch_groebner(arg)
        !           211: char *arg;
        !           212: {
        !           213:   if (strcmp(arg,"standard") == 0) {
        !           214:     groebner = groebner_gen;
        !           215:     F_groebner = "standard";
        !           216:   } else if (strcmp(arg,"gm") == 0) {
        !           217:     groebner = groebner_gm;
        !           218:     F_groebner = "gm";
        !           219:   } else ;
        !           220: }
        !           221:
        !           222: /* called from switch_init */
        !           223: void switch_isSameComponent(arg)
        !           224: char *arg;
        !           225: {
        !           226:   if (strcmp(arg,"x") == 0) {
        !           227:     isSameComponent = isSameComponent_x;
        !           228:     F_isSameComponent = "x";
        !           229:   } else if (strcmp(arg,"xd") == 0) {
        !           230:     isSameComponent = isSameComponent_xd;
        !           231:     F_isSameComponent = "xd";
        !           232:   } else ;
        !           233: }
        !           234:
        !           235: void switch_sp(arg)
        !           236: char *arg;
        !           237: {
        !           238:   if (strcmp(arg,"standard") == 0) {
        !           239:     sp = sp_gen;
        !           240:     F_sp = "standard";
        !           241:   } else ;
        !           242: }
        !           243:
        !           244:
        !           245: void switch_grade(arg)
        !           246: char *arg;
        !           247: {
        !           248:   if (strcmp(arg,"standard")==0) {
        !           249:     grade = grade_gen;
        !           250:     F_grade = "standard";
        !           251:   }else if (strcmp(arg,"firstvec")==0) {
        !           252:     grade = grade_firstvec;
        !           253:     F_grade = "firstvec";
        !           254:   }else if (strcmp(arg,"module1")==0) {
        !           255:     grade = grade_module1;
        !           256:     F_grade = "module1";
        !           257:   }else if (strcmp(arg,"module1v")==0) {
        !           258:     grade = grade_module1v;
        !           259:     F_grade = "module1v";
        !           260:   }else ;
        !           261:
        !           262: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>