Changeset 56c789 in git
- Timestamp:
- Oct 12, 2010, 3:03:05 PM (14 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- f86c483adff92eaa95fe133be87f5d14b7f57b61
- Parents:
- ec58bdfcf1e8339250d75b8fc0ce7fbbce505ddb
- Location:
- Singular
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/Makefile.in
rec58bd r56c789 381 381 ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${DEFS} -c $< 382 382 383 iparith.inc: ${OBJS} claptmpl.o iparith.cc \ 384 ipconv.cc tok.h mpsr_Tok.cc grammar.h mod2.h 385 ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} -DGENTABLE \ 386 -o gentable1 claptmpl.o iparith.cc tesths.cc mpsr_Tok.cc \ 387 ${OBJS} ${LDFLAGS} ${LIBS} ../kernel/mmalloc.o 383 iparith.inc: gentable.cc grammar.h tok.h table.h mod2.h 384 ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} gentable.cc \ 385 -o gentable1 ${LDFLAGS} ${LIBS} 388 386 ./gentable1 389 387 /bin/rm -f gentable1 gentable1.exe 390 388 391 mpsr_Tok.inc: ${OBJS} claptmpl.o iparith.cc \ 392 ipconv.cc tok.h mpsr_Tok.cc grammar.h mod2.h 393 ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} -DGENTABLE \ 394 -o gentable2 claptmpl.o iparith.cc tesths.cc mpsr_Tok.cc \ 395 ${OBJS} ${LDFLAGS} ${LIBS} ../kernel/mmalloc.o 389 mpsr_Tok.inc: gentable.cc grammar.h tok.h table.h mod2.h 390 ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${CXXTEMPLFLAGS} ${DEFS} gentable.cc \ 391 -o gentable2 ${LDFLAGS} ${LIBS} 396 392 ./gentable2 397 393 /bin/rm -f gentable2 gentable2.exe 398 399 394 400 395 svnver: -
Singular/gentable.cc
rec58bd r56c789 886 886 } 887 887 888 #ifdef HAVE_MPSR 889 #include <Singular/mpsr.h> 890 #include <Singular/mpsr_Tok.h> 891 #define MAX_COP 256 // there may be at most 256 cops 892 893 // this is the main data struct for storing the relation 894 // Singular token <-> (Dict, OP) 895 typedef struct mpsr_cmd 896 { 897 898 short tok; // The Singular token encoding 899 900 // The MP Dict tag in which this token is defined, 901 MP_DictTag_t dict; 902 903 // The MP operator corresponding to this token 904 MP_Common_t cop; // operator 905 } mpsr_cmd; 906 907 #define MAX_SR_DICT 5 908 909 // this provides a mapping from MP dict tags to more useful (small) 910 // array indicies 911 inline short mpdict2srdict(MP_DictTag_t dict) 912 { 913 if (dict == MP_SingularDict) return 0; 914 else if (dict == MP_BasicDict) return 1; 915 else if (dict == MP_PolyDict) return 2; 916 else if (dict == MP_MatrixDict) return 3; 917 else if (dict == MP_NumberDict) return 4; 918 else return MAX_SR_DICT; 919 } 920 921 // This is the array which holds all mpsr_cmds 922 // It is initialized in mpsr_tok.inc 923 static mpsr_cmd mpsr_cmds[MAX_TOK]; 924 925 // This is the array which stores the mapping from token to an mpsr_cmd 926 // A value is either an index into mpsr_cmds, or MAX_TOK 927 static short tok2mp[MAX_TOK]; 928 929 // This is the array which stores the mapping from (dict, cop) to a 930 // mpsr_cmd. First index mpdict2srdict(dict), second is cop 931 static short mp2tok[MAX_SR_DICT][MAX_COP]; 932 933 // This the list of all tokens which have an MP representation as a 934 // cop in the Singular dictionary 935 short sr_cmds[] = 936 { 937 OPTION_CMD, 938 NAMES_CMD, 939 ATTRIB_CMD, 940 CHARSTR_CMD, 941 CLOSE_CMD, 942 DEF_CMD, 943 DEGREE_CMD, 944 DEFINED_CMD, 945 E_CMD, 946 EXECUTE_CMD, 947 FREEMODULE_CMD, 948 INT_CMD, 949 INTERRED_CMD, 950 INTMAT_CMD, 951 INTVEC_CMD, 952 IS_RINGVAR, 953 KILLATTR_CMD, 954 MAP_CMD, 955 MEMORY_CMD, 956 MONITOR_CMD, 957 NAMEOF_CMD, 958 NUMBER_CMD, 959 NPARS_CMD, 960 NVARS_CMD, 961 OPEN_CMD, 962 ORDSTR_CMD, 963 PAR_CMD, 964 PARSTR_CMD, 965 PARDEG_CMD, 966 POLY_CMD, 967 PRINT_CMD, 968 READ_CMD, 969 SORTVEC_CMD, 970 STRING_CMD, 971 SYSTEM_CMD, 972 TYPEOF_CMD, 973 VECTOR_CMD, 974 VAR_CMD, 975 VARSTR_CMD, 976 WEIGHT_CMD, 977 '(', 978 COEF_CMD, 979 DELETE_CMD, 980 FETCH_CMD, 981 FIND_CMD, 982 IMAP_CMD, 983 INSERT_CMD, 984 SIMPLIFY_CMD, 985 SRES_CMD, 986 DBPRINT_CMD, 987 TEST_CMD, 988 PROC_CMD, 989 MSTD_CMD, 990 RESERVEDNAME_CMD, 991 WRITE_CMD, 992 QRING_CMD, 993 FGLM_CMD, 994 FGLMQUOT_CMD, 995 DUMP_CMD, 996 GETDUMP_CMD, 997 STATUS_CMD, 998 LIB_CMD, 999 PACKAGE_CMD 1000 }; 1001 1002 // struct used for specifying the cmd <-> cop relations 1003 typedef struct cmd_cop 1004 { 1005 short cmd; 1006 MP_Common_t cop; 1007 } cmd_op; 1008 1009 typedef struct cmd_dictcop 1010 { 1011 MP_DictTag_t dict; 1012 cmd_op cmd_ops[255]; 1013 } cmd_dictcop; 1014 1015 cmd_dictcop cmd_dictcops[] = 1016 { 1017 { 1018 MP_PolyDict, 1019 // This is the list of all tokens which have an MP representation as a 1020 // cop in the Poly dictionary 1021 { 1022 {BETTI_CMD, MP_CopPolyBetti}, 1023 {CHARACTERISTIC_CMD, MP_CopPolyChar}, 1024 {CHAR_SERIES_CMD, MP_CopPolyCharSeries}, 1025 {CONTENT_CMD, MP_CopPolyClearDenom }, 1026 {DEG_CMD, MP_CopPolyDeg}, 1027 {DIM_CMD, MP_CopPolyDim}, 1028 {FAC_CMD, MP_CopPolyFactorize}, 1029 {FACSTD_CMD, MP_CopPolyFacStd}, 1030 {HILBERT_CMD, MP_CopPolyHilb}, 1031 {HOMOG_CMD, MP_CopPolyHomog}, 1032 {INDEPSET_CMD, MP_CopPolyInDepSet}, 1033 {IDEAL_CMD, MP_CopPolyIdeal}, 1034 {KBASE_CMD, MP_CopPolyKbase}, 1035 {LEAD_CMD, MP_CopPolyLead}, 1036 {LEADCOEF_CMD, MP_CopPolyLeadCoef}, 1037 {LEADEXP_CMD, MP_CopPolyLeadExp}, 1038 {MAXID_CMD, MP_CopPolyMaxIdeal}, 1039 {MINBASE_CMD, MP_CopPolyMinBase}, 1040 {MINRES_CMD, MP_CopPolyMinRes}, 1041 {MODUL_CMD, MP_CopPolyModule}, 1042 {MULTIPLICITY_CMD, MP_CopPolyMultiplicity}, 1043 {ORD_CMD, MP_CopPolyOrder}, 1044 {PRUNE_CMD, MP_CopPolyPrune}, 1045 {QHWEIGHT_CMD, MP_CopPolyQHWeight}, 1046 {REGULARITY_CMD, MP_CopPolyRegularity}, 1047 {RESULTANT_CMD, MP_CopPolyResultant}, 1048 {STD_CMD, MP_CopPolyStd}, 1049 {SYZYGY_CMD, MP_CopPolySyz}, 1050 {VDIM_CMD, MP_CopPolyVdim}, 1051 {COEFFS_CMD, MP_CopPolyCoeffs}, 1052 {CONTRACT_CMD, MP_CopPolyContract}, 1053 {ELIMINATION_CMD, MP_CopPolyEliminate}, 1054 {JET_CMD, MP_CopPolyJet}, 1055 {LIFT_CMD, MP_CopPolyLift}, 1056 {LIFTSTD_CMD, MP_CopPolyLiftstd}, 1057 {MODULO_CMD, MP_CopPolyModulo}, 1058 {MRES_CMD, MP_CopPolyMres}, 1059 {QUOTIENT_CMD, MP_CopPolyQuotient}, 1060 {REDUCE_CMD, MP_CopPolyReduce}, 1061 {PREIMAGE_CMD, MP_CopPolyPreimage}, 1062 {RES_CMD, MP_CopPolyRes}, 1063 {RING_CMD, MP_CopPolyRing}, 1064 {MAX_TOK, 0} 1065 } 1066 }, 1067 { 1068 MP_NumberDict, 1069 // This is the list of all tokens which have an MP representation as a 1070 // cop in the Number dictionary 1071 { 1072 {PRIME_CMD, MP_CopNumberPrime}, 1073 {EXTGCD_CMD, MP_CopNumberExtGcd}, 1074 {GCD_CMD, MP_CopNumberGcd}, 1075 {RANDOM_CMD, MP_CopNumberRandom}, 1076 {MAX_TOK, 0} 1077 } 1078 }, 1079 { 1080 MP_MatrixDict, 1081 // This is the list of all tokens which have an MP representation as a 1082 // cop in the Matrix dictionary 1083 { 1084 {BAREISS_CMD, MP_CopMatrixBareiss}, 1085 {COLS_CMD, MP_CopMatrixCols}, 1086 {DET_CMD, MP_CopMatrixDet}, 1087 {JACOB_CMD, MP_CopMatrixJacobi}, 1088 {MATRIX_CMD, MP_CopMatrixDenseMatrix}, 1089 {ROWS_CMD, MP_CopMatrixRows}, 1090 {TRACE_CMD, MP_CopMatrixTrace}, 1091 {TRANSPOSE_CMD, MP_CopMatrixTranspose}, 1092 {KOSZUL_CMD, MP_CopMatrixKoszul}, 1093 {MINOR_CMD, MP_CopMatrixMinor}, 1094 {WEDGE_CMD, MP_CopMatrixWedge}, 1095 {MAX_TOK, 0} 1096 } 1097 }, 1098 { 1099 MP_BasicDict, 1100 // This is the list of all tokens which have an MP representation as a 1101 // cop in the MP Basic dictionary 1102 { 1103 {PLUSPLUS, MP_CopBasicInc}, 1104 {MINUSMINUS, MP_CopBasicDec}, 1105 {COUNT_CMD, MP_CopBasicSize}, 1106 {LIST_CMD, MP_CopBasicList}, 1107 {'+', MP_CopBasicAdd}, 1108 {'-', MP_CopBasicMinus}, 1109 {'*', MP_CopBasicMult}, 1110 {'/', MP_CopBasicDiv}, 1111 {'%', MP_CopBasicMod}, 1112 {'^', MP_CopBasicPow}, 1113 {GE, MP_CopBasicGreaterEqual}, 1114 {'<', MP_CopBasicGreater}, 1115 {LE, MP_CopBasicLessEqual}, 1116 {'>', MP_CopBasicLess}, 1117 {'&', MP_CopBasicAnd}, 1118 {'|', MP_CopBasicOr}, 1119 {'=', MP_CopBasicAssign}, 1120 {EQUAL_EQUAL, MP_CopBasicEqual}, 1121 {NOTEQUAL, MP_CopBasicNotEqual}, 1122 {DOTDOT, MP_CopBasicRange}, 1123 {'[', MP_CopBasicIndex}, 1124 {DIFF_CMD, MP_CopBasicDiff}, 1125 {INTERSECT_CMD, MP_CopBasicInterSect}, 1126 {SUBST_CMD, MP_CopBasicSubst}, 1127 {NOT, MP_CopBasicNot}, 1128 {COLONCOLON, MP_CopBasicPackage}, 1129 {MAX_TOK, 0} 1130 } 1131 } 1132 }; 1133 1134 1135 // Given a Singular token, find matching (dict,op): Return 1 if one is 1136 // found, 0, otherwise 1137 static short GetMPDictTok(short tok, MP_DictTag_t *dict, MP_Common_t *cop) 1138 { 1139 short i, l, j; 1140 cmd_op *cmd_ops; 1141 1142 // first, look through Singular specific commands 1143 l = sizeof(sr_cmds)/sizeof(short); 1144 if (l > MAX_COP) 1145 { 1146 fprintf(stderr, 1147 "Error: There are more than 256 entries in MP_SingularDict\n"); 1148 exit(1); 1149 } 1150 for (i=0; i<l; i++) 1151 if (sr_cmds[i] == tok) 1152 { 1153 *dict = MP_SingularDict; 1154 *cop = i; 1155 return 1; 1156 } 1157 1158 // look through all the other dicts 1159 for (j=0; j<MAX_SR_DICT-1; j++) 1160 { 1161 cmd_ops = cmd_dictcops[j].cmd_ops; 1162 for (i=0; (cmd_ops[i]).cmd != MAX_TOK; i++) 1163 { 1164 if (i > MAX_COP) 1165 { 1166 fprintf(stderr, 1167 "Error: There are more than 256 entries in dict %d's\n",j); 1168 exit(1); 1169 } 1170 if (cmd_ops[i].cmd == tok) 1171 { 1172 *dict = cmd_dictcops[j].dict; 1173 *cop = cmd_ops[i].cop; 1174 return 1; 1175 } 1176 } 1177 } 1178 return 0; 1179 } 1180 1181 1182 // This actually generates the tables of mpsr_tok.inc 1183 char *mpsr_Tok_inc; 1184 void mpsr_ttGen() 1185 { 1186 mpsr_cmd mpsrcmds[MAX_TOK]; 1187 short tok2mp[MAX_TOK]; 1188 short mp2tok[MAX_SR_DICT][MAX_COP]; 1189 short max_cmd = 0, i, j; 1190 MP_Common_t cop; 1191 FILE *outfile; 1192 MP_DictTag_t dict; 1193 1194 1195 // init all arrays 1196 for (i=0; i<MAX_TOK; i++) 1197 { 1198 mpsrcmds[i].tok = MAX_TOK; 1199 tok2mp[i] = MAX_TOK; 1200 } 1201 for (i=0; i<MAX_SR_DICT; i++) 1202 for (j=0; j<MAX_COP; j++) 1203 mp2tok[i][j] = MAX_TOK; 1204 1205 // Now go through all the token and test them 1206 for (i=0; i<MAX_TOK; i++) 1207 { 1208 if (IsCmdToken(i)) 1209 { 1210 if (GetMPDictTok(i, &dict, &cop)) 1211 { 1212 mpsrcmds[max_cmd].tok = i; 1213 mpsrcmds[max_cmd].dict = dict; 1214 mpsrcmds[max_cmd].cop = cop; 1215 tok2mp[i] = max_cmd; 1216 mp2tok[mpdict2srdict(dict)][cop] = i; 1217 max_cmd++; 1218 } 1219 //else 1220 //{ 1221 // fprintf(stderr, "Warning: mpsr_ttGen: Unknown Cmd Token: %d(%s)\n", 1222 // i, iiTwoOps(i)); 1223 // } 1224 } 1225 } 1226 1227 // Generate the template file 1228 mpsr_Tok_inc=strdup("mpsr_Tok.xxxxxxxx"); 1229 int pid=getpid(); 1230 mpsr_Tok_inc[8]=(pid %10)+'0'; pid/=10; 1231 mpsr_Tok_inc[9]=(pid %10)+'0'; pid/=10; 1232 mpsr_Tok_inc[10]=(pid %10)+'0'; pid/=10; 1233 mpsr_Tok_inc[11]=(pid %10)+'0'; pid/=10; 1234 mpsr_Tok_inc[12]=(pid %10)+'0'; pid/=10; 1235 mpsr_Tok_inc[13]=(pid %10)+'0'; 1236 1237 outfile = myfopen(mpsr_Tok_inc, "w"); 1238 if (outfile == NULL) 1239 { 1240 fprintf(stderr, "Error: mpsr_ttGen: Cannot open file mpsr_Tok.inc\n"); 1241 exit(1); 1242 } 1243 1244 // header 1245 fprintf(outfile, 1246 "/***************************************************************\n" 1247 "*\n" 1248 "* File: mpsr_tok.inc\n" 1249 "* Purpose: tables for mapping Singular cmds to/from MP (dict, op)\n" 1250 "*\n" 1251 "* THIS FILE WAS AUTOMATICALLY GENERATED BY mpsr_ttGen(). DO NOT EDIT!\n" 1252 "*\n" 1253 "***************************************************************/\n" 1254 "#ifndef MPSR_STRING_TABLES\n" 1255 "mpsr_cmd mpsr_cmds[] =\n" 1256 "{\n" 1257 " { %d,\t %d,\t %d }", mpsrcmds[0].tok, mpsrcmds[0].dict, mpsrcmds[0].cop); 1258 1259 // mpsrcmds 1260 for (i=1; i<max_cmd; i++) 1261 { 1262 fprintf(outfile, ",\n { %d,\t %d,\t %d }", 1263 mpsrcmds[i].tok, mpsrcmds[i].dict, mpsrcmds[i].cop); 1264 } 1265 fprintf(outfile,"\n};\n\n"); 1266 1267 // tok2mp 1268 fprintf(outfile, "short tok2mp[] = { %d", tok2mp[0]); 1269 for (i=1; i<MAX_TOK; i++) 1270 fprintf(outfile, ", %d", tok2mp[i]); 1271 fprintf(outfile, "};\n\n"); 1272 1273 // mp2tok 1274 fprintf(outfile, "short mp2tok[MAX_SR_DICT][MAX_COP] = \n{"); 1275 for (i=0; i<MAX_SR_DICT; i++) 1276 { 1277 fprintf(outfile, "\n{\n"); 1278 for (j=0; j<MAX_COP; j++) 1279 { 1280 fprintf(outfile, " %d",mp2tok[i][j]); 1281 if (j!=MAX_COP-1) fprintf(outfile, ","); 1282 } 1283 if (i!=MAX_SR_DICT-1) fprintf(outfile, "},"); 1284 else fprintf(outfile, "}"); 1285 } 1286 fprintf(outfile,"\n};\n\n"); 1287 1288 fprintf(outfile, "#else /* MPSR_STRING_TABLE */\n" 1289 "mpsr_cmd mpsr_cmds[] =\n" 1290 "{\n" 1291 "{ \"%s\",\t %d,\t %d }", 1292 iiTwoOps(mpsrcmds[0].tok), mpsrcmds[0].dict, mpsrcmds[0].cop); 1293 1294 for (i=1; i<max_cmd; i++) 1295 { 1296 fprintf(outfile, ",\n { \"%s\",\t %d,\t %d }", 1297 iiTwoOps(mpsrcmds[i].tok), mpsrcmds[i].dict, mpsrcmds[i].cop); 1298 } 1299 fprintf(outfile, ",\n { NULL, \t 0, \t 0}"); 1300 fprintf(outfile,"\n};\n\n#endif /* ! MPSR_STRING_TABLE */"); 1301 1302 fclose(outfile); 1303 } // That's all 1304 1305 #else 1306 void mpsr_ttGen() 1307 { 1308 system("touch mpsr_Tok.xx"); 1309 } 1310 #endif 1311 888 1312 int main() 889 1313 { 890 //mpsr_ttGen();1314 mpsr_ttGen(); 891 1315 ttGen4(); 892 1316 ttGen1(); -
Singular/iparith.cc
rec58bd r56c789 65 65 # include <kernel/fglm.h> 66 66 #endif /* HAVE_FACTORY */ 67 #define HAVE_INTERPOLATION 68 #ifdef HAVE_INTERPOLATION 69 # include <Singular/interpolation.h> 70 #endif 67 #include <Singular/interpolation.h> 71 68 72 69 #include <Singular/ipshell.h> … … 118 115 119 116 120 /* ifdef GENTABLE: definitions are in ipshell.h */121 #ifndef GENTABLE122 117 typedef char * (*Proc1)(char *); 123 118 struct sValCmd1 … … 160 155 short valid_for; 161 156 }; 162 #endif /* GENTABLE */163 157 164 158 typedef struct 165 159 { 166 160 cmdnames *sCmds; /**< array of existing commands */ 167 #ifndef GENTABLE168 161 struct sValCmd1 *psValCmd1; 169 162 struct sValCmd2 *psValCmd2; 170 163 struct sValCmd3 *psValCmd3; 171 164 struct sValCmdM *psValCmdM; 172 #endif /* GENTABLE */173 165 int nCmdUsed; /**< number of commands used */ 174 166 int nCmdAllocated; /**< number of commands-slots allocated */ … … 211 203 212 204 int iiOp; /* the current operation*/ 213 214 #ifdef GENTABLE215 cmdnames cmds[] =216 { // name-string alias tokval toktype217 { "$INVALID$", 0, -1, 0},218 #ifdef HAVE_FANS219 { "addadj", 0, ADDADJ_CMD, CMD_M},220 { "addmaxcone", 0, ADDMCONE_CMD, CMD_2},221 { "adj", 0, ADJACENCY_CMD, CMD_13},222 #endif /* HAVE_FANS */223 { "alias", 0, ALIAS_CMD , PARAMETER},224 { "and", 0, '&' , LOGIC_OP},225 { "attrib", 0, ATTRIB_CMD , CMD_123},226 { "bareiss", 0, BAREISS_CMD , CMD_123},227 { "betti", 0, BETTI_CMD , CMD_12},228 { "bigint", 0, BIGINT_CMD , ROOT_DECL},229 #ifdef HAVE_PLURAL230 { "bracket", 0, BRACKET_CMD , CMD_2},231 #endif232 { "break", 0, BREAK_CMD , BREAK_CMD},233 { "breakpoint", 0, BREAKPOINT_CMD , CMD_M},234 { "char", 0, CHARACTERISTIC_CMD ,CMD_1},235 { "char_series", 0, CHAR_SERIES_CMD , CMD_1},236 { "charstr", 0, CHARSTR_CMD , CMD_1},237 { "chinrem", 0, CHINREM_CMD , CMD_2},238 { "cleardenom", 0, CONTENT_CMD , CMD_1},239 { "close", 0, CLOSE_CMD , CMD_1},240 { "coef", 0, COEF_CMD , CMD_M},241 { "coeffs", 0, COEFFS_CMD , CMD_23},242 #ifdef HAVE_FANS243 { "cone", 0, CONE_CMD, ROOT_DECL},244 #endif /* HAVE_FANS */245 { "continue", 0, CONTINUE_CMD , CONTINUE_CMD},246 { "contract", 0, CONTRACT_CMD , CMD_2},247 { "convhull", 0, NEWTONPOLY_CMD, CMD_1},248 { "dbprint", 0, DBPRINT_CMD , CMD_M},249 { "def", 0, DEF_CMD , ROOT_DECL},250 { "defined", 0, DEFINED_CMD , CMD_1},251 { "deg", 0, DEG_CMD , CMD_12},252 { "degree", 0, DEGREE_CMD , CMD_1},253 { "delete", 0, DELETE_CMD , CMD_2},254 #ifdef HAVE_FANS255 { "delmaxcone", 0, DELMCONE_CMD, CMD_12},256 #endif /* HAVE_FANS */257 { "det", 0, DET_CMD , CMD_1},258 { "diff", 0, DIFF_CMD , CMD_2},259 { "dim", 0, DIM_CMD , CMD_1},260 { "div", 0, INTDIV_CMD , MULDIV_OP},261 { "division", 0, DIVISION_CMD , CMD_M},262 { "dump", 0, DUMP_CMD, CMD_1},263 { "extgcd", 0, EXTGCD_CMD , CMD_2},264 { "ERROR", 0, ERROR_CMD , CMD_1},265 { "eliminate", 0, ELIMINATION_CMD, CMD_23},266 { "else", 0, ELSE_CMD , ELSE_CMD},267 #ifdef HAVE_PLURAL268 { "envelope", 0, ENVELOPE_CMD , CMD_1},269 #endif270 { "eval", 0, EVAL , EVAL},271 { "example", 0, EXAMPLE_CMD , EXAMPLE_CMD},272 { "execute", 0, EXECUTE_CMD , CMD_1},273 { "export", 0, EXPORT_CMD , EXPORT_CMD},274 { "exportto", 0, EXPORTTO_CMD , CMD_2},275 #ifdef HAVE_FANS276 { "facetnormals",0, FACETNS_CMD, CMD_1},277 #endif /* HAVE_FANS */278 { "factorize", 0, FAC_CMD , CMD_12},279 #ifdef HAVE_FANS280 { "fan", 0, FAN_CMD, ROOT_DECL},281 #endif /* HAVE_FANS */282 { "farey", 0, FAREY_CMD , CMD_2},283 { "fetch", 0, FETCH_CMD , CMD_2},284 { "fglm", 0, FGLM_CMD , CMD_2},285 { "fglmquot", 0, FGLMQUOT_CMD, CMD_2},286 { "find", 0, FIND_CMD , CMD_23},287 { "finduni", 0, FINDUNI_CMD, CMD_1},288 { "forif", 0, IF_CMD , IF_CMD},289 { "freemodule", 0, FREEMODULE_CMD , CMD_1},290 { "facstd", 0, FACSTD_CMD , CMD_12},291 { "frwalk", 0, FWALK_CMD , CMD_23},292 { "gen", 0, E_CMD , CMD_1},293 { "getdump", 0, GETDUMP_CMD, CMD_1},294 #ifdef HAVE_FANS295 { "getprop", 0, GETPROP_CMD, CMD_2},296 #endif /* HAVE_FANS */297 { "gcd", 0, GCD_CMD , CMD_2},298 { "GCD", 2, GCD_CMD , CMD_2},299 { "hilb", 0, HILBERT_CMD , CMD_123},300 { "highcorner", 0, HIGHCORNER_CMD, CMD_1},301 { "homog", 0, HOMOG_CMD , CMD_123},302 { "hres", 0, HRES_CMD , CMD_2},303 { "ideal", 0, IDEAL_CMD , IDEAL_CMD},304 { "if", 0, IF_CMD , IF_CMD},305 { "imap", 0, IMAP_CMD , CMD_2},306 { "impart", 0, IMPART_CMD , CMD_1},307 { "importfrom", 0, IMPORTFROM_CMD , CMD_2},308 { "indepSet", 0, INDEPSET_CMD , CMD_12},309 { "insert", 0, INSERT_CMD , CMD_23},310 { "int", 0, INT_CMD , ROOT_DECL},311 #ifdef HAVE_INTERPOLATION312 { "interpolation",0,INTERPOLATE_CMD , CMD_2},313 #endif314 { "interred", 0, INTERRED_CMD , CMD_1},315 { "intersect", 0, INTERSECT_CMD , CMD_M},316 { "intmat", 0, INTMAT_CMD , INTMAT_CMD},317 { "intvec", 0, INTVEC_CMD , ROOT_DECL_LIST},318 { "jacob", 0, JACOB_CMD , CMD_1},319 { "janet", 0, JANET_CMD , CMD_12},320 { "jet", 0, JET_CMD , CMD_M},321 { "kbase", 0, KBASE_CMD , CMD_12},322 { "keepring", 0, KEEPRING_CMD , KEEPRING_CMD},323 { "kernel", 0, KERNEL_CMD , CMD_2},324 { "kill", 0, KILL_CMD , KILL_CMD},325 { "killattrib", 0, KILLATTR_CMD , CMD_12},326 { "koszul", 0, KOSZUL_CMD , CMD_23},327 { "kres", 0, KRES_CMD , CMD_2},328 { "laguerre", 0, LAGSOLVE_CMD, CMD_3},329 { "lead", 0, LEAD_CMD , CMD_1},330 { "leadcoef", 0, LEADCOEF_CMD , CMD_1},331 { "leadexp", 0, LEADEXP_CMD , CMD_1},332 { "leadmonom", 0, LEADMONOM_CMD , CMD_1},333 { "LIB", 0, LIB_CMD , SYSVAR},334 { "lift", 0, LIFT_CMD , CMD_23},335 { "liftstd", 0, LIFTSTD_CMD , CMD_23},336 { "link", 0, LINK_CMD , ROOT_DECL},337 #ifdef HAVE_FANS338 { "linspace", 0, LINSPACE_CMD, CMD_1},339 #endif /* HAVE_FANS */340 { "listvar", 0, LISTVAR_CMD , LISTVAR_CMD},341 { "list", 0, LIST_CMD , ROOT_DECL_LIST},342 { "load", 0, LOAD_CMD , CMD_12},343 { "lres", 0, LRES_CMD , CMD_2},344 { "ludecomp", 0, LU_CMD , CMD_1},345 { "luinverse", 0, LUI_CMD , CMD_M},346 { "lusolve", 0, LUS_CMD , CMD_M},347 { "map", 0, MAP_CMD , RING_DECL},348 { "matrix", 0, MATRIX_CMD , MATRIX_CMD},349 { "maxideal", 0, MAXID_CMD , CMD_1},350 #ifdef HAVE_FANS351 { "maxcone", 0, MAXCONE_CMD, CMD_12},352 { "maxrays", 0, MAXRAYS_CMD, CMD_1},353 #endif /* HAVE_FANS */354 { "memory", 0, MEMORY_CMD , CMD_1},355 { "minbase", 0, MINBASE_CMD , CMD_1},356 { "minor", 0, MINOR_CMD , CMD_M},357 { "minres", 0, MINRES_CMD , CMD_1},358 { "mod", 0, INTMOD_CMD , MULDIV_OP},359 { "module", 0, MODUL_CMD , MODUL_CMD},360 { "modulo", 0, MODULO_CMD , CMD_2},361 { "monitor", 0, MONITOR_CMD , CMD_12},362 { "monomial", 0, MONOM_CMD , CMD_1},363 { "mpresmat", 0, MPRES_CMD, CMD_2},364 { "mult", 0, MULTIPLICITY_CMD , CMD_1},365 #ifdef OLD_RES366 { "mres", 0, MRES_CMD , CMD_23},367 #else368 { "mres", 0, MRES_CMD , CMD_2},369 #endif370 { "mstd", 0, MSTD_CMD , CMD_1},371 { "nameof", 0, NAMEOF_CMD , CMD_1},372 { "names", 0, NAMES_CMD , CMD_M},373 #ifdef HAVE_PLURAL374 { "ncalgebra", 2, NCALGEBRA_CMD , CMD_2},375 { "nc_algebra", 0, NC_ALGEBRA_CMD , CMD_2},376 #endif377 { "ncols", 0, COLS_CMD , CMD_1},378 { "not", 0, NOT , NOT},379 { "npars", 0, NPARS_CMD , CMD_1},380 #ifdef OLD_RES381 { "nres", 0, RES_CMD , CMD_23},382 #else383 { "nres", 0, RES_CMD , CMD_2},384 #endif385 { "nrows", 0, ROWS_CMD , CMD_1},386 { "number", 0, NUMBER_CMD , RING_DECL},387 { "nvars", 0, NVARS_CMD , CMD_1},388 { "open", 0, OPEN_CMD , CMD_1},389 #ifdef HAVE_PLURAL390 { "oppose", 0, OPPOSE_CMD , CMD_2},391 { "opposite", 0, OPPOSITE_CMD , CMD_1},392 #endif393 { "option", 0, OPTION_CMD , CMD_M},394 { "or", 0, '|' , LOGIC_OP},395 { "ord", 0, ORD_CMD , CMD_1},396 { "ordstr", 0, ORDSTR_CMD , CMD_1},397 { "package", 0, PACKAGE_CMD , ROOT_DECL},398 { "par", 0, PAR_CMD , CMD_1},399 { "parameter", 0, PARAMETER , PARAMETER},400 { "pardeg", 0, PARDEG_CMD , CMD_1},401 { "parstr", 0, PARSTR_CMD , CMD_12},402 { "poly", 0, POLY_CMD , RING_DECL},403 { "preimage", 0, PREIMAGE_CMD , CMD_13},404 { "prime", 0, PRIME_CMD , CMD_1},405 { "primefactors",0, PFAC_CMD , CMD_12},406 { "print", 0, PRINT_CMD , CMD_12},407 { "prune", 0, PRUNE_CMD , CMD_1},408 { "proc", 0, PROC_CMD , PROC_CMD},409 { "qhweight", 0, QHWEIGHT_CMD , CMD_1},410 { "qring", 0, QRING_CMD , ROOT_DECL},411 { "quote", 0, QUOTE , QUOTE},412 { "quotient", 0, QUOTIENT_CMD , CMD_2},413 { "random", 0, RANDOM_CMD , CMD_23},414 { "rank", 0, RANK_CMD , CMD_12},415 { "read", 0, READ_CMD , CMD_12},416 { "reduce", 0, REDUCE_CMD , CMD_M},417 { "regularity", 0, REGULARITY_CMD , CMD_1},418 { "repart", 0, REPART_CMD , CMD_1},419 { "reservedName",0, RESERVEDNAME_CMD , CMD_M},420 { "resolution", 0, RESOLUTION_CMD , RING_DECL},421 { "resultant", 0, RESULTANT_CMD, CMD_3},422 { "return", 0, RETURN , RETURN},423 { "RETURN", 0, END_GRAMMAR , RETURN},424 { "ring", 0, RING_CMD , RING_CMD},425 { "ringlist", 0, RINGLIST_CMD , CMD_1},426 { "rvar", 0, IS_RINGVAR , CMD_1},427 #ifdef HAVE_FANS428 { "setprop", 0, SETPROP_CMD, CMD_3},429 #endif /* HAVE_FANS */430 { "setring", 0, SETRING_CMD , SETRING_CMD},431 { "simplex", 0, SIMPLEX_CMD, CMD_M},432 { "simplify", 0, SIMPLIFY_CMD , CMD_2},433 { "size", 0, COUNT_CMD , CMD_1},434 { "slimgb", 0, SLIM_GB_CMD , CMD_1},435 { "sortvec", 0, SORTVEC_CMD , CMD_1},436 { "sqrfree", 0, SQR_FREE_CMD , CMD_1},437 #ifdef OLD_RES438 { "sres", 0, SRES_CMD , CMD_23},439 #else /* OLD_RES */440 { "sres", 0, SRES_CMD , CMD_2},441 #endif /* OLD_RES */442 { "status", 0, STATUS_CMD, CMD_M},443 { "std", 0, STD_CMD , CMD_M},444 { "string", 0, STRING_CMD , ROOT_DECL_LIST},445 { "subst", 0, SUBST_CMD , CMD_M},446 { "system", 0, SYSTEM_CMD, CMD_M},447 { "syz", 0, SYZYGY_CMD , CMD_1},448 { "test", 0, TEST_CMD , CMD_M},449 { "trace", 0, TRACE_CMD , CMD_1},450 { "transpose", 0, TRANSPOSE_CMD , CMD_1},451 #ifdef HAVE_PLURAL452 { "twostd", 0, TWOSTD_CMD , CMD_1},453 #endif /* HAVE_PLURAL */454 { "type", 0, TYPE_CMD , TYPE_CMD},455 { "typeof", 0, TYPEOF_CMD , CMD_1},456 { "univariate", 0, UNIVARIATE_CMD, CMD_1},457 { "uressolve", 0, URSOLVE_CMD, CMD_M},458 { "vandermonde", 0, VANDER_CMD, CMD_3},459 { "var", 0, VAR_CMD , CMD_1},460 { "variables", 0, VARIABLES_CMD, CMD_1},461 { "varstr", 0, VARSTR_CMD , CMD_12},462 { "vdim", 0, VDIM_CMD , CMD_1},463 { "vector", 0, VECTOR_CMD , RING_DECL},464 { "wedge", 0, WEDGE_CMD , CMD_2},465 { "weight", 0, WEIGHT_CMD , CMD_1},466 { "whileif", 0, IF_CMD , IF_CMD},467 { "write", 0, WRITE_CMD , CMD_M},468 /* delete for next version:*/469 { "IN", 1, LEAD_CMD , CMD_1},470 { "NF", 1, REDUCE_CMD , CMD_M},471 { "multiplicity",1, MULTIPLICITY_CMD , CMD_1},472 { "verbose", 2, OPTION_CMD , CMD_M},473 // { "rank", 1, ROWS_CMD , CMD_1},474 // { "Current", 0, -1 , SYSVAR},475 // { "Top", 0, -1 , SYSVAR},476 // { "Up", 0, -1 , SYSVAR},477 478 /* set sys vars*/479 { "degBound", 0, VMAXDEG , SYSVAR},480 { "echo", 0, VECHO , SYSVAR},481 { "minpoly", 0, VMINPOLY , SYSVAR},482 { "multBound", 0, VMAXMULT , SYSVAR},483 { "noether", 0, VNOETHER , SYSVAR},484 { "pagewidth", 0, VCOLMAX , SYSVAR},485 { "printlevel", 0, VPRINTLEVEL , SYSVAR},486 { "short", 0, VSHORTOUT , SYSVAR},487 { "timer", 0, VTIMER , SYSVAR},488 { "rtimer", 0, VRTIMER, SYSVAR},489 { "TRACE", 0, TRACE , SYSVAR},490 { "voice", 0, VOICE , SYSVAR},491 492 /* other reserved words:scanner.l */493 { "pause", 2, -1 , 0},494 { "while", 0, -1 , 0},495 { "for", 0, -1 , 0},496 { "help", 0, -1 , 0},497 { "newline", 0, -1 , 0},498 { "exit", 0, -1 , 0},499 { "quit", 0, -1 , 0},500 /* end of list marker */501 { NULL, 0, 0, 0}502 };503 #endif /* GENTABLE */504 205 505 206 /*=================== operations with 2 args.: static proc =================*/ … … 3654 3355 } 3655 3356 3656 /*=================== operations with 2 args.: table =================*/3657 3658 struct sValCmd2 dArith2[]=3659 {3660 // operations:3661 // proc cmd res arg1 arg2 plural3662 {jjCOLCOL, COLONCOLON, ANY_TYPE, DEF_CMD, DEF_CMD, ALLOW_PLURAL | ALLOW_RING}3663 ,{jjPLUS_I, '+', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3664 ,{jjPLUS_BI, '+', BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3665 ,{jjPLUS_N, '+', NUMBER_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3666 ,{jjPLUS_P, '+', POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3667 ,{jjPLUS_P, '+', VECTOR_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3668 ,{jjPLUS_ID, '+', IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3669 ,{jjPLUS_ID, '+', MODUL_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3670 ,{jjPLUS_P_MA, '+', MATRIX_CMD, POLY_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3671 ,{jjPLUS_MA_P, '+', MATRIX_CMD, MATRIX_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3672 ,{jjPLUS_MA, '+', MATRIX_CMD, MATRIX_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3673 ,{jjPLUS_S, '+', STRING_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3674 ,{jjOP_IV_I, '+', INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3675 ,{jjOP_I_IV, '+', INTVEC_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3676 ,{jjOP_IM_I, '+', INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3677 ,{jjOP_I_IM, '+', INTMAT_CMD, INT_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3678 ,{jjPLUS_IV, '+', INTVEC_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3679 ,{jjPLUS_IV, '+', INTMAT_CMD, INTMAT_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3680 ,{lAdd, '+', LIST_CMD, LIST_CMD, LIST_CMD, ALLOW_PLURAL | ALLOW_RING}3681 ,{jjRSUM, '+', RING_CMD, RING_CMD, RING_CMD, ALLOW_PLURAL | ALLOW_RING}3682 ,{jjRSUM, '+', QRING_CMD, QRING_CMD, RING_CMD, ALLOW_PLURAL | ALLOW_RING}3683 ,{jjRSUM, '+', QRING_CMD, RING_CMD, QRING_CMD, ALLOW_PLURAL | ALLOW_RING}3684 ,{jjRSUM, '+', QRING_CMD, QRING_CMD, QRING_CMD, ALLOW_PLURAL | ALLOW_RING}3685 ,{jjMINUS_I, '-', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3686 ,{jjMINUS_BI, '-', BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3687 ,{jjMINUS_N, '-', NUMBER_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3688 ,{jjMINUS_P, '-', POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3689 ,{jjMINUS_P, '-', VECTOR_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3690 ,{jjPLUS_MA_P, '-', MATRIX_CMD, MATRIX_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3691 ,{jjMINUS_MA, '-', MATRIX_CMD, MATRIX_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3692 ,{jjOP_IV_I, '-', INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3693 ,{jjOP_IM_I, '-', INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3694 ,{jjMINUS_IV, '-', INTVEC_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3695 ,{jjMINUS_IV, '-', INTMAT_CMD, INTMAT_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3696 ,{jjWRONG2, '-', NONE, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3697 ,{jjWRONG2, '-', NONE, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3698 ,{jjTIMES_I, '*', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3699 ,{jjTIMES_BI, '*', BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3700 ,{jjTIMES_N, '*', NUMBER_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3701 ,{jjTIMES_P, '*', POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3702 ,{jjTIMES_P, '*', VECTOR_CMD, POLY_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3703 ,{jjTIMES_P, '*', VECTOR_CMD, VECTOR_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3704 ,{jjTIMES_MA_P1,'*', IDEAL_CMD, IDEAL_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3705 ,{jjTIMES_MA_P2,'*', IDEAL_CMD, POLY_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3706 ,{jjTIMES_MA_P1,'*', MODUL_CMD, MODUL_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3707 ,{jjTIMES_MA_P2,'*', MODUL_CMD, POLY_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3708 ,{jjTIMES_ID, '*', IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3709 ,{jjTIMES_MA_P1,'*', MODUL_CMD, IDEAL_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3710 ,{jjTIMES_MA_P2,'*', MODUL_CMD, VECTOR_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3711 ,{jjTIMES_ID, '*', MODUL_CMD, IDEAL_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3712 ,{jjTIMES_ID, '*', MODUL_CMD, MODUL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3713 ,{jjTIMES_MA_P1,'*', MATRIX_CMD, MATRIX_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3714 ,{jjTIMES_MA_P2,'*', MATRIX_CMD, POLY_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3715 ,{jjTIMES_MA_N1,'*', MATRIX_CMD, MATRIX_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3716 ,{jjTIMES_MA_N2,'*', MATRIX_CMD, NUMBER_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3717 ,{jjTIMES_MA_I1,'*', MATRIX_CMD, MATRIX_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3718 ,{jjTIMES_MA_I2,'*', MATRIX_CMD, INT_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3719 ,{jjTIMES_MA, '*', MATRIX_CMD, MATRIX_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3720 ,{jjTIMES_MA_BI1,'*', MATRIX_CMD, MATRIX_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3721 ,{jjTIMES_MA_BI2,'*', MATRIX_CMD, BIGINT_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3722 ,{jjOP_IV_I, '*', INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3723 ,{jjOP_I_IV, '*', INTVEC_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3724 ,{jjOP_IV_I, '*', INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3725 ,{jjOP_I_IV, '*', INTMAT_CMD, INT_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3726 ,{jjTIMES_IV, '*', INTVEC_CMD, INTMAT_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3727 ,{jjTIMES_IV, '*', INTMAT_CMD, INTMAT_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3728 ,{jjTIMES_IV, '*', INTMAT_CMD, INTVEC_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3729 ,{jjDIV_N, '/', NUMBER_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3730 ,{jjDIV_P, '/', POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3731 ,{jjDIV_P, '/', VECTOR_CMD, VECTOR_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3732 ,{jjDIV_Ma, '/', MATRIX_CMD, MATRIX_CMD, POLY_CMD, ALLOW_PLURAL | NO_RING}3733 ,{jjDIVMOD_I, '/', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3734 ,{jjDIV_BI, '/', BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3735 ,{jjOP_IV_I, '/', INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3736 ,{jjOP_IV_I, '/', INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3737 ,{jjDIVMOD_I, INTDIV_CMD, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3738 ,{jjDIV_BI, INTDIV_CMD, BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3739 ,{jjOP_IV_I, INTDIV_CMD, INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3740 ,{jjOP_IV_I, INTDIV_CMD, INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3741 ,{jjDIVMOD_I, '%', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3742 ,{jjMOD_BI, '%', BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3743 ,{jjOP_IV_I, '%', INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3744 ,{jjOP_IV_I, '%', INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3745 ,{jjMOD_N, '%', NUMBER_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3746 ,{jjDIVMOD_I, INTMOD_CMD, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3747 ,{jjMOD_BI, INTMOD_CMD, BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3748 ,{jjOP_IV_I, INTMOD_CMD, INTVEC_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3749 ,{jjOP_IV_I, INTMOD_CMD, INTMAT_CMD, INTMAT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3750 ,{jjMOD_N, INTMOD_CMD, NUMBER_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3751 ,{jjPOWER_I, '^', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3752 ,{jjPOWER_BI, '^', BIGINT_CMD, BIGINT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3753 ,{jjPOWER_N, '^', NUMBER_CMD, NUMBER_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3754 ,{jjPOWER_P, '^', POLY_CMD, POLY_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3755 ,{jjPOWER_ID, '^', IDEAL_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3756 ,{jjLE_I, LE, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3757 ,{jjLE_BI, LE, INT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3758 ,{jjLE_N, LE, INT_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3759 ,{jjCOMPARE_S, LE, INT_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3760 ,{jjCOMPARE_IV_I,LE, INT_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3761 ,{jjCOMPARE_IV,LE, INT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3762 ,{jjCOMPARE_P, LE, INT_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3763 ,{jjCOMPARE_P, LE, INT_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3764 ,{jjLT_I, '<', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3765 ,{jjLT_BI, '<', INT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3766 ,{jjLT_N, '<', INT_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3767 ,{jjCOMPARE_IV_I,'<', INT_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3768 ,{jjCOMPARE_IV,'<', INT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3769 ,{jjCOMPARE_S, '<', INT_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3770 ,{jjCOMPARE_P, '<', INT_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3771 ,{jjCOMPARE_P, '<', INT_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3772 ,{jjGE_I, GE, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3773 ,{jjGE_BI, GE, INT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3774 ,{jjGE_N, GE, INT_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3775 ,{jjCOMPARE_S, GE, INT_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3776 ,{jjCOMPARE_IV_I,GE, INT_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3777 ,{jjCOMPARE_IV,GE, INT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3778 ,{jjCOMPARE_P, GE, INT_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3779 ,{jjCOMPARE_P, GE, INT_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3780 ,{jjGT_I, '>', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3781 ,{jjGT_BI, '>', INT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3782 ,{jjGT_N, '>', INT_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3783 ,{jjCOMPARE_S, '>', INT_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3784 ,{jjCOMPARE_IV_I,'>', INT_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3785 ,{jjCOMPARE_IV,'>', INT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3786 ,{jjCOMPARE_P, '>', INT_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3787 ,{jjCOMPARE_P, '>', INT_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3788 ,{jjAND_I, '&', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3789 ,{jjOR_I, '|', INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3790 ,{jjEQUAL_I, EQUAL_EQUAL, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3791 ,{jjEQUAL_BI, EQUAL_EQUAL, INT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3792 ,{jjEQUAL_N, EQUAL_EQUAL, INT_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3793 ,{jjCOMPARE_S, EQUAL_EQUAL, INT_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3794 ,{jjEQUAL_P, EQUAL_EQUAL, INT_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3795 ,{jjEQUAL_P, EQUAL_EQUAL, INT_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3796 ,{jjCOMPARE_IV_I,EQUAL_EQUAL, INT_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3797 ,{jjCOMPARE_IV,EQUAL_EQUAL, INT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3798 ,{jjCOMPARE_IV,EQUAL_EQUAL, INT_CMD, INTMAT_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3799 ,{jjEQUAL_Ma, EQUAL_EQUAL, INT_CMD, MATRIX_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3800 ,{jjWRONG2, EQUAL_EQUAL, 0, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3801 ,{jjWRONG2, EQUAL_EQUAL, 0, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3802 ,{jjWRONG2, EQUAL_EQUAL, 0, IDEAL_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3803 ,{jjWRONG2, EQUAL_EQUAL, 0, MODUL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3804 ,{jjEQUAL_I, NOTEQUAL, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3805 ,{jjEQUAL_BI, NOTEQUAL, INT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL | ALLOW_RING}3806 ,{jjEQUAL_N, NOTEQUAL, INT_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL | ALLOW_RING}3807 ,{jjCOMPARE_S, NOTEQUAL, INT_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3808 ,{jjEQUAL_P, NOTEQUAL, INT_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | ALLOW_RING}3809 ,{jjEQUAL_P, NOTEQUAL, INT_CMD, VECTOR_CMD, VECTOR_CMD, ALLOW_PLURAL | ALLOW_RING}3810 ,{jjCOMPARE_IV,NOTEQUAL, INT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3811 ,{jjCOMPARE_IV,NOTEQUAL, INT_CMD, INTMAT_CMD, INTMAT_CMD, ALLOW_PLURAL | ALLOW_RING}3812 ,{jjEQUAL_Ma, NOTEQUAL, INT_CMD, MATRIX_CMD, MATRIX_CMD, ALLOW_PLURAL | ALLOW_RING}3813 ,{jjWRONG2, NOTEQUAL, 0, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3814 ,{jjWRONG2, NOTEQUAL, 0, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3815 ,{jjWRONG2, NOTEQUAL, 0, IDEAL_CMD, MODUL_CMD, ALLOW_PLURAL | ALLOW_RING}3816 ,{jjWRONG2, NOTEQUAL, 0, MODUL_CMD, IDEAL_CMD, ALLOW_PLURAL | ALLOW_RING}3817 ,{jjDOTDOT, DOTDOT, INTVEC_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3818 ,{jjINDEX_I, '[', INT_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3819 ,{jjINDEX_IV, '[', INT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3820 ,{jjINDEX_I, '[', POLY_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3821 ,{jjINDEX_I, '[', POLY_CMD, MAP_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3822 ,{jjINDEX_IV, '[', POLY_CMD, IDEAL_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3823 ,{jjINDEX_I, '[', VECTOR_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3824 ,{jjINDEX_IV, '[', VECTOR_CMD, MODUL_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3825 ,{jjINDEX_I, '[', STRING_CMD, STRING_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3826 ,{jjINDEX_IV, '[', STRING_CMD, STRING_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3827 ,{jjINDEX_I, '[', ANY_TYPE/*set by p*/,LIST_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3828 ,{jjINDEX_IV, '[', ANY_TYPE/*set by p*/,LIST_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3829 ,{jjINDEX_P, '[', POLY_CMD, POLY_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3830 ,{jjINDEX_P_IV,'[', POLY_CMD, POLY_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3831 ,{jjINDEX_V, '[', POLY_CMD, VECTOR_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3832 ,{jjINDEX_V_IV,'[', VECTOR_CMD, VECTOR_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3833 ,{jjPROC, '(', ANY_TYPE/*set by p*/,PROC_CMD, DEF_CMD, ALLOW_PLURAL | ALLOW_RING}3834 ,{jjMAP, '(', ANY_TYPE/*set by p*/,MAP_CMD, DEF_CMD, ALLOW_PLURAL | ALLOW_RING}3835 ,{jjKLAMMER, '(', ANY_TYPE/*set by p*/,ANY_TYPE, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3836 ,{jjKLAMMER_IV,'(', ANY_TYPE/*set by p*/,ANY_TYPE, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}3837 ,{jjCOLON, ':', INTVEC_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3838 // and the procedures with 2 arguments:3839 ,{atATTRIB2, ATTRIB_CMD, NONE/*set by p*/,DEF_CMD, STRING_CMD, ALLOW_PLURAL | ALLOW_RING}3840 ,{jjWRONG2, BAREISS_CMD, 0, DEF_CMD, DEF_CMD, ALLOW_PLURAL | ALLOW_RING}3841 ,{jjBETTI2, BETTI_CMD, INTMAT_CMD, LIST_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3842 ,{syBetti2, BETTI_CMD, INTMAT_CMD, RESOLUTION_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3843 ,{jjBETTI2_ID, BETTI_CMD, INTMAT_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3844 ,{jjBETTI2_ID, BETTI_CMD, INTMAT_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}3845 #ifdef HAVE_PLURAL3846 ,{jjBRACKET, BRACKET_CMD, POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL | NO_RING}3847 #endif3848 #ifdef HAVE_FACTORY3849 ,{jjCHINREM_BI,CHINREM_CMD, BIGINT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3850 //,{jjCHINREM_P, CHINREM_CMD, POLY_CMD, LIST_CMD, INTVEC_CMD, ALLOW_PLURAL}3851 ,{jjCHINREM_ID,CHINREM_CMD, ANY_TYPE/*set by p*/,LIST_CMD,INTVEC_CMD, ALLOW_PLURAL |NO_RING}3852 ,{jjCHINREM_ID,CHINREM_CMD, ANY_TYPE/*set by p*/,LIST_CMD,LIST_CMD, ALLOW_PLURAL |NO_RING}3853 #else3854 ,{jjWRONG2, CHINREM_CMD, BIGINT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3855 #endif3856 ,{jjCOEF, COEF_CMD, MATRIX_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3857 ,{jjCOEFFS_Id, COEFFS_CMD, MATRIX_CMD, IDEAL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3858 ,{jjCOEFFS_Id, COEFFS_CMD, MATRIX_CMD, MODUL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3859 ,{jjCOEFFS2_KB,COEFFS_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3860 ,{jjCOEFFS2_KB,COEFFS_CMD, MATRIX_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3861 ,{jjCONTRACT, CONTRACT_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3862 ,{jjDEG_IV, DEG_CMD, INT_CMD, POLY_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3863 ,{jjDEG_IV, DEG_CMD, INT_CMD, VECTOR_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3864 ,{jjDEG_M_IV, DEG_CMD, INT_CMD, MATRIX_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3865 ,{lDelete, DELETE_CMD, LIST_CMD, LIST_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3866 ,{jjDIFF_P, DIFF_CMD, POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3867 ,{jjDIFF_P, DIFF_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3868 ,{jjDIFF_ID, DIFF_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3869 ,{jjDIFF_ID_ID,DIFF_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3870 ,{jjDIFF_ID, DIFF_CMD, MODUL_CMD, MODUL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3871 ,{jjDIFF_ID, DIFF_CMD, MATRIX_CMD, MATRIX_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3872 ,{jjDIM2, DIM_CMD, INT_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |NO_RING}3873 ,{jjDIM2, DIM_CMD, INT_CMD, MODUL_CMD, IDEAL_CMD, ALLOW_PLURAL |NO_RING}3874 ,{jjDIVISION, DIVISION_CMD, LIST_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3875 ,{jjDIVISION, DIVISION_CMD, LIST_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3876 ,{jjELIMIN, ELIMINATION_CMD,IDEAL_CMD, IDEAL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3877 ,{jjELIMIN, ELIMINATION_CMD,MODUL_CMD, MODUL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3878 ,{jjELIMIN_IV, ELIMINATION_CMD,IDEAL_CMD, IDEAL_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3879 ,{jjELIMIN_IV, ELIMINATION_CMD,MODUL_CMD, MODUL_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3880 ,{jjEXPORTTO, EXPORTTO_CMD, NONE, PACKAGE_CMD, IDHDL, ALLOW_PLURAL |ALLOW_RING}3881 ,{jjEXTGCD_I, EXTGCD_CMD, LIST_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3882 #ifdef HAVE_FACTORY3883 ,{jjEXTGCD_P, EXTGCD_CMD, LIST_CMD, POLY_CMD, POLY_CMD, NO_PLURAL |NO_RING}3884 ,{jjFAC_P2, FAC_CMD, IDEAL_CMD, POLY_CMD, INT_CMD, NO_PLURAL |NO_RING}3885 ,{jjFACSTD2, FACSTD_CMD, LIST_CMD, IDEAL_CMD, IDEAL_CMD, NO_PLURAL |NO_RING}3886 #else3887 ,{jjWRONG2, EXTGCD_CMD, LIST_CMD, POLY_CMD, POLY_CMD, NO_PLURAL |NO_RING}3888 ,{jjWRONG2, FAC_CMD, IDEAL_CMD, POLY_CMD, INT_CMD, NO_PLURAL |NO_RING}3889 ,{jjWRONG2, FACSTD_CMD, LIST_CMD, IDEAL_CMD, IDEAL_CMD, NO_PLURAL |NO_RING}3890 #endif3891 ,{jjFAREY_BI, FAREY_CMD, NUMBER_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL |NO_RING}3892 ,{jjFAREY_ID, FAREY_CMD, ANY_TYPE/*set by p*/,IDEAL_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}3893 ,{jjFAREY_ID, FAREY_CMD, ANY_TYPE/*set by p*/,MODUL_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}3894 ,{jjFAREY_ID, FAREY_CMD, ANY_TYPE/*set by p*/,MATRIX_CMD,BIGINT_CMD, ALLOW_PLURAL |NO_RING}3895 ,{jjFETCH, FETCH_CMD, ANY_TYPE/*set by p*/,RING_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}3896 ,{jjFETCH, FETCH_CMD, ANY_TYPE/*set by p*/,QRING_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}3897 #ifdef HAVE_FACTORY3898 ,{fglmProc, FGLM_CMD, IDEAL_CMD, RING_CMD, DEF_CMD, NO_PLURAL |NO_RING}3899 ,{fglmProc, FGLM_CMD, IDEAL_CMD, QRING_CMD, DEF_CMD, NO_PLURAL |NO_RING}3900 ,{fglmQuotProc,FGLMQUOT_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, NO_PLURAL |NO_RING}3901 #else3902 ,{jjWRONG2, FGLM_CMD, IDEAL_CMD, RING_CMD, DEF_CMD, NO_PLURAL |NO_RING}3903 ,{jjWRONG2, FGLM_CMD, IDEAL_CMD, QRING_CMD, DEF_CMD, NO_PLURAL |NO_RING}3904 ,{jjWRONG2, FGLMQUOT_CMD, IDEAL_CMD, POLY_CMD, IDEAL_CMD, NO_PLURAL |NO_RING}3905 #endif3906 ,{jjFIND2, FIND_CMD, INT_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}3907 ,{jjFWALK, FWALK_CMD, IDEAL_CMD, RING_CMD, DEF_CMD, NO_PLURAL |NO_RING}3908 ,{jjGCD_I, GCD_CMD, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3909 ,{jjGCD_N, GCD_CMD, NUMBER_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL |ALLOW_RING}3910 ,{jjGCD_BI, GCD_CMD, BIGINT_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL |ALLOW_RING}3911 #if defined(HAVE_FACTORY)3912 ,{jjGCD_P, GCD_CMD, POLY_CMD, POLY_CMD, POLY_CMD, NO_PLURAL |NO_RING}3913 #else3914 ,{jjWRONG2, GCD_CMD, POLY_CMD, POLY_CMD, POLY_CMD, NO_PLURAL |NO_RING}3915 #endif3916 ,{jjHILBERT2, HILBERT_CMD, INTVEC_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}3917 ,{jjHILBERT2, HILBERT_CMD, INTVEC_CMD, MODUL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}3918 ,{jjHOMOG1_W, HOMOG_CMD, INT_CMD, IDEAL_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3919 ,{jjHOMOG1_W, HOMOG_CMD, INT_CMD, MODUL_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}3920 ,{jjHOMOG_P, HOMOG_CMD, POLY_CMD, POLY_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3921 ,{jjHOMOG_P, HOMOG_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3922 ,{jjHOMOG_ID, HOMOG_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3923 ,{jjHOMOG_ID, HOMOG_CMD, MODUL_CMD, MODUL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}3924 ,{jjRES, HRES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |NO_RING}3925 ,{jjCALL2MANY, IDEAL_CMD, IDEAL_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}3926 ,{jjFETCH, IMAP_CMD, ANY_TYPE/*set by p*/,RING_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}3927 ,{jjFETCH, IMAP_CMD, ANY_TYPE/*set by p*/,QRING_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}3928 ,{jjIMPORTFROM,IMPORTFROM_CMD, NONE, PACKAGE_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}3929 ,{jjINDEPSET2, INDEPSET_CMD, LIST_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |NO_RING}3930 ,{lInsert, INSERT_CMD, LIST_CMD, LIST_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}3931 #ifdef HAVE_INTERPOLATION3932 ,{jjINTERPOLATION,INTERPOLATE_CMD,IDEAL_CMD, LIST_CMD, INTVEC_CMD, NO_PLURAL |NO_RING}3933 #endif3934 ,{jjINTERSECT, INTERSECT_CMD, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3935 ,{jjINTERSECT, INTERSECT_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3936 ,{jjJanetBasis2, JANET_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |NO_RING}3937 ,{jjJET_P, JET_CMD, POLY_CMD, POLY_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3938 ,{jjJET_ID, JET_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3939 ,{jjJET_P, JET_CMD, VECTOR_CMD, VECTOR_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3940 ,{jjJET_ID, JET_CMD, MODUL_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3941 ,{jjJET_ID, JET_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3942 ,{jjKBASE2, KBASE_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3943 ,{jjKBASE2, KBASE_CMD, MODUL_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3944 ,{jjKERNEL, KERNEL_CMD, IDEAL_CMD, RING_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}3945 ,{jjKERNEL, KERNEL_CMD, IDEAL_CMD, QRING_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}3946 ,{atKILLATTR2, KILLATTR_CMD, NONE, IDHDL, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}3947 ,{jjKoszul, KOSZUL_CMD, MATRIX_CMD, INT_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}3948 ,{jjKoszul_Id, KOSZUL_CMD, MATRIX_CMD, INT_CMD, IDEAL_CMD, NO_PLURAL |ALLOW_RING}3949 ,{jjRES, KRES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |NO_RING}3950 ,{jjLIFT, LIFT_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3951 ,{jjLIFT, LIFT_CMD, MATRIX_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3952 ,{jjLIFTSTD, LIFTSTD_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}3953 ,{jjLIFTSTD, LIFTSTD_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}3954 ,{jjCALL2MANY, LIST_CMD, LIST_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}3955 ,{jjLOAD_E, LOAD_CMD, NONE, STRING_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}3956 ,{jjRES, LRES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |NO_RING}3957 ,{jjCALL2MANY, MODUL_CMD, MODUL_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}3958 ,{jjMODULO, MODULO_CMD, MODUL_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3959 ,{jjMODULO, MODULO_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3960 ,{jjMONITOR2, MONITOR_CMD, NONE, LINK_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}3961 //,{jjRES, MRES_CMD, LIST_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}3962 //,{jjRES, MRES_CMD, LIST_CMD, MODUL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}3963 ,{nuMPResMat, MPRES_CMD, MODUL_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |NO_RING}3964 ,{jjRES, MRES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3965 ,{jjRES, MRES_CMD, RESOLUTION_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3966 //,{nuMPResMat, MPRES_CMD, MODUL_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}3967 ,{jjPFAC2, PFAC_CMD, LIST_CMD, BIGINT_CMD, BIGINT_CMD, ALLOW_PLURAL |ALLOW_RING}3968 ,{jjPFAC2, PFAC_CMD, LIST_CMD, NUMBER_CMD, BIGINT_CMD, ALLOW_PLURAL |ALLOW_RING}3969 ,{jjPFAC2, PFAC_CMD, LIST_CMD, BIGINT_CMD, NUMBER_CMD, ALLOW_PLURAL |ALLOW_RING}3970 ,{jjPFAC2, PFAC_CMD, LIST_CMD, NUMBER_CMD, NUMBER_CMD, ALLOW_PLURAL |ALLOW_RING}3971 #ifdef HAVE_PLURAL3972 ,{jjPlural_num_poly, NCALGEBRA_CMD,NONE, POLY_CMD, POLY_CMD , NO_PLURAL |NO_RING}3973 ,{jjPlural_num_mat, NCALGEBRA_CMD,NONE, POLY_CMD, MATRIX_CMD, NO_PLURAL |NO_RING}3974 ,{jjPlural_mat_poly, NCALGEBRA_CMD,NONE, MATRIX_CMD, POLY_CMD , NO_PLURAL |NO_RING}3975 ,{jjPlural_mat_mat, NCALGEBRA_CMD,NONE, MATRIX_CMD, MATRIX_CMD, NO_PLURAL |NO_RING}3976 ,{jjPlural_num_poly, NC_ALGEBRA_CMD,RING_CMD, POLY_CMD, POLY_CMD , NO_PLURAL |NO_RING}3977 ,{jjPlural_num_mat, NC_ALGEBRA_CMD,RING_CMD, POLY_CMD, MATRIX_CMD, NO_PLURAL |NO_RING}3978 ,{jjPlural_mat_poly, NC_ALGEBRA_CMD,RING_CMD, MATRIX_CMD, POLY_CMD , NO_PLURAL |NO_RING}3979 ,{jjPlural_mat_mat, NC_ALGEBRA_CMD,RING_CMD, MATRIX_CMD, MATRIX_CMD, NO_PLURAL |NO_RING}3980 #endif3981 #ifdef HAVE_PLURAL3982 ,{jjOPPOSE, OPPOSE_CMD, ANY_TYPE/*set by p*/, RING_CMD, DEF_CMD, ALLOW_PLURAL |NO_RING}3983 ,{jjOPPOSE, OPPOSE_CMD, ANY_TYPE/*set by p*/, QRING_CMD, DEF_CMD, ALLOW_PLURAL |NO_RING}3984 #endif3985 ,{jjPARSTR2, PARSTR_CMD, STRING_CMD, RING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3986 ,{jjPARSTR2, PARSTR_CMD, STRING_CMD, QRING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3987 ,{jjPRINT_FORMAT, PRINT_CMD, ANY_TYPE, DEF_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}3988 ,{jjQUOT, QUOTIENT_CMD, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3989 ,{jjQUOT, QUOTIENT_CMD, MODUL_CMD, MODUL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3990 ,{jjQUOT, QUOTIENT_CMD, IDEAL_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3991 ,{jjRANDOM, RANDOM_CMD, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3992 ,{jjRANK2, RANK_CMD, INT_CMD, MATRIX_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}3993 ,{jjREAD2, READ_CMD, STRING_CMD, LINK_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}3994 ,{jjREDUCE_P, REDUCE_CMD, POLY_CMD, POLY_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3995 ,{jjREDUCE_P, REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3996 ,{jjREDUCE_P, REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3997 ,{jjREDUCE_ID, REDUCE_CMD, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}3998 ,{jjREDUCE_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}3999 ,{jjREDUCE_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}4000 //,{jjRES, RES_CMD, LIST_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}4001 //,{jjRES, RES_CMD, LIST_CMD, MODUL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}4002 ,{jjRES, RES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4003 ,{jjRES, RES_CMD, RESOLUTION_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4004 ,{jjSTATUS2, STATUS_CMD, STRING_CMD, LINK_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}4005 ,{jjSTATUS2L, STATUS_CMD, INT_CMD, LIST_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4006 ,{jjSIMPL_P, SIMPLIFY_CMD, POLY_CMD, POLY_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4007 ,{jjSIMPL_P, SIMPLIFY_CMD, VECTOR_CMD, VECTOR_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4008 ,{jjSIMPL_ID, SIMPLIFY_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4009 ,{jjSIMPL_ID, SIMPLIFY_CMD, MODUL_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4010 //,{jjRES, SRES_CMD, LIST_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}4011 //,{jjRES, SRES_CMD, LIST_CMD, MODUL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}4012 ,{jjRES, SRES_CMD, RESOLUTION_CMD, IDEAL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}4013 ,{jjRES, SRES_CMD, RESOLUTION_CMD, MODUL_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}4014 ,{jjCALL2MANY, SYSTEM_CMD, ANY_TYPE/*set by p*/,STRING_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}4015 ,{jjSTD_1, STD_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}4016 ,{jjSTD_1, STD_CMD, MODUL_CMD, MODUL_CMD, VECTOR_CMD, ALLOW_PLURAL |ALLOW_RING}4017 ,{jjSTD_1, STD_CMD, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}4018 ,{jjSTD_1, STD_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}4019 ,{jjSTD_HILB, STD_CMD, IDEAL_CMD, IDEAL_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}4020 ,{jjSTD_HILB, STD_CMD, MODUL_CMD, MODUL_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}4021 ,{jjVARSTR2, VARSTR_CMD, STRING_CMD, RING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4022 ,{jjVARSTR2, VARSTR_CMD, STRING_CMD, QRING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4023 ,{jjWEDGE, WEDGE_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}4024 #ifdef HAVE_FANS4025 ,{jjADDMCONE1, ADDMCONE_CMD, NONE, FAN_CMD, CONE_CMD, ALLOW_PLURAL | ALLOW_RING}4026 ,{jjADDMCONE2, ADDMCONE_CMD, NONE, FAN_CMD, LIST_CMD, ALLOW_PLURAL | ALLOW_RING}4027 ,{jjDELMCONE2, DELMCONE_CMD, NONE, FAN_CMD, INT_CMD, ALLOW_PLURAL | ALLOW_RING}4028 ,{jjDELMCONE3, DELMCONE_CMD, NONE, FAN_CMD, INTVEC_CMD, ALLOW_PLURAL | ALLOW_RING}4029 ,{jjMAXCONE2, MAXCONE_CMD, CONE_CMD, FAN_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}4030 ,{jjGETPROP1, GETPROP_CMD, INT_CMD, FAN_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}4031 ,{jjGETPROP2, GETPROP_CMD, INT_CMD, CONE_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}4032 #endif /* HAVE_FANS */4033 ,{NULL, 0, 0, 0, 0, NO_PLURAL |NO_RING}4034 };4035 3357 /*=================== operations with 1 arg.: static proc =================*/ 4036 3358 static BOOLEAN jjDUMMY(leftv res, leftv u) … … 5576 4898 return TRUE; 5577 4899 } 5578 5579 /*=================== operations with 1 arg.: table =================*/5580 4900 5581 4901 #ifdef INIT_BUG … … 5796 5116 return FALSE; 5797 5117 } 5798 struct sValCmd1 dArith1[]=5799 {5800 // operations:5801 // proc cmd res arg plural5802 {jjPLUSPLUS, PLUSPLUS, NONE, IDHDL , ALLOW_PLURAL |ALLOW_RING}5803 ,{jjPLUSPLUS, MINUSMINUS, NONE, IDHDL , ALLOW_PLURAL |ALLOW_RING}5804 ,{jjUMINUS_I, '-', INT_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5805 ,{jjUMINUS_BI, '-', BIGINT_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING}5806 ,{jjUMINUS_N, '-', NUMBER_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5807 ,{jjUMINUS_P, '-', POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5808 ,{jjUMINUS_P, '-', VECTOR_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5809 ,{jjUMINUS_MA, '-', MATRIX_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}5810 ,{jjUMINUS_IV, '-', INTVEC_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}5811 ,{jjUMINUS_IV, '-', INTMAT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}5812 ,{jjPROC1, '(', ANY_TYPE/*set by p*/,PROC_CMD , ALLOW_PLURAL |ALLOW_RING}5813 ,{jjLOAD1, '(', NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}5814 // and the procedures with 1 argument:5815 ,{atATTRIB1, ATTRIB_CMD, NONE, DEF_CMD , ALLOW_PLURAL |ALLOW_RING}5816 //,{jjBAREISS_IM, BAREISS_CMD, INTMAT_CMD, INTMAT_CMD , NO_PLURAL |ALLOW_RING}5817 ,{jjBAREISS, BAREISS_CMD, LIST_CMD, MODUL_CMD , NO_PLURAL |ALLOW_RING}5818 ,{jjBETTI, BETTI_CMD, INTMAT_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING}5819 ,{syBetti1, BETTI_CMD, INTMAT_CMD, RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING}5820 ,{jjBETTI, BETTI_CMD, INTMAT_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5821 ,{jjBETTI, BETTI_CMD, INTMAT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5822 ,{jjDUMMY, BIGINT_CMD, BIGINT_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING}5823 ,{jjN2BI, BIGINT_CMD, BIGINT_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5824 ,{jjP2BI, BIGINT_CMD, BIGINT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5825 ,{jjCHAR, CHARACTERISTIC_CMD, INT_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}5826 ,{jjCHAR, CHARACTERISTIC_CMD, INT_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5827 #ifdef HAVE_FACTORY5828 ,{jjCHARSERIES, CHAR_SERIES_CMD, MATRIX_CMD, IDEAL_CMD , NO_PLURAL |NO_RING}5829 #else5830 ,{jjWRONG, CHAR_SERIES_CMD, MATRIX_CMD, IDEAL_CMD , NO_PLURAL |NO_RING}5831 #endif5832 ,{jjrCharStr, CHARSTR_CMD, XS(STRING_CMD), RING_CMD , ALLOW_PLURAL |ALLOW_RING}5833 ,{jjrCharStr, CHARSTR_CMD, XS(STRING_CMD), QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5834 ,{jjOpenClose, CLOSE_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING}5835 //,{jjWRONG, COLS_CMD, 0, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5836 ,{jjCOLS, COLS_CMD, INT_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}5837 ,{jjCOLS, COLS_CMD, INT_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5838 ,{jjCOLS, COLS_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5839 ,{jjCOLS_IV, COLS_CMD, INT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}5840 ,{jjWRONG, COLS_CMD, 0, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}5841 ,{jjCONTENT, CONTENT_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5842 ,{jjCONTENT, CONTENT_CMD, VECTOR_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5843 ,{jjCOUNT_BI, COUNT_CMD, INT_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING}5844 ,{jjCOUNT_N, COUNT_CMD, INT_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5845 ,{jjCOUNT_RES, COUNT_CMD, XS(INT_CMD), RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING}5846 ,{jjstrlen, COUNT_CMD, XS(INT_CMD), STRING_CMD , ALLOW_PLURAL |ALLOW_RING}5847 ,{jjpLength, COUNT_CMD, XS(INT_CMD), POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5848 ,{jjpLength, COUNT_CMD, XS(INT_CMD), VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5849 ,{jjidElem, COUNT_CMD, XS(INT_CMD), IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5850 ,{jjidElem, COUNT_CMD, XS(INT_CMD), MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5851 ,{jjCOUNT_M, COUNT_CMD, INT_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}5852 ,{jjCOUNT_IV, COUNT_CMD, INT_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}5853 ,{jjCOUNT_IV, COUNT_CMD, INT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}5854 ,{jjCOUNT_L, COUNT_CMD, INT_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING}5855 ,{jjCOUNT_RG, COUNT_CMD, INT_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}5856 ,{jjNULL, DEF_CMD, DEF_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5857 ,{jjWRONG, DEF_CMD, 0, ANY_TYPE , ALLOW_PLURAL |ALLOW_RING}5858 ,{jjDEG, DEG_CMD, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5859 ,{jjDEG, DEG_CMD, INT_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5860 ,{jjDEG_M, DEG_CMD, INT_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}5861 ,{jjDEGREE, DEGREE_CMD, NONE, IDEAL_CMD , NO_PLURAL |ALLOW_RING}5862 ,{jjDEGREE, DEGREE_CMD, NONE, MODUL_CMD , NO_PLURAL |ALLOW_RING}5863 ,{jjDEFINED, DEFINED_CMD, INT_CMD, DEF_CMD , ALLOW_PLURAL |ALLOW_RING}5864 #ifdef HAVE_FACTORY5865 ,{jjDET_I, DET_CMD, INT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}5866 ,{jjDET, DET_CMD, POLY_CMD, MATRIX_CMD , NO_PLURAL |NO_RING}5867 ,{jjDET_S, DET_CMD, POLY_CMD, MODUL_CMD , NO_PLURAL |NO_RING}5868 #else5869 ,{jjWRONG, DET_CMD, INT_CMD, INTMAT_CMD , ALLOW_PLURAL |NO_RING}5870 ,{jjmpDetBareiss,DET_CMD, XS(POLY_CMD), MATRIX_CMD , NO_PLURAL |ALLOW_RING}5871 #endif5872 ,{jjDIM, DIM_CMD, INT_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5873 ,{jjDIM, DIM_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5874 ,{jjDIM_R, DIM_CMD, XS(INT_CMD), RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING}5875 ,{jjDUMP, DUMP_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING}5876 ,{jjE, E_CMD, VECTOR_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5877 ,{jjEXECUTE, EXECUTE_CMD, NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}5878 ,{jjERROR, ERROR_CMD, NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}5879 #ifdef HAVE_FACTORY5880 ,{jjFAC_P, FAC_CMD, LIST_CMD, POLY_CMD , NO_PLURAL |NO_RING}5881 #else5882 ,{jjWRONG, FAC_CMD, LIST_CMD, POLY_CMD , NO_PLURAL |NO_RING}5883 #endif5884 #ifdef HAVE_FACTORY5885 ,{findUniProc, FINDUNI_CMD, IDEAL_CMD, IDEAL_CMD , NO_PLURAL |NO_RING}5886 #else5887 ,{jjWRONG, FINDUNI_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5888 #endif5889 ,{jjidFreeModule,FREEMODULE_CMD, XS(MODUL_CMD), INT_CMD , ALLOW_PLURAL |ALLOW_RING}5890 #ifdef HAVE_FACTORY5891 ,{jjFACSTD, FACSTD_CMD, LIST_CMD, IDEAL_CMD , NO_PLURAL |NO_RING}5892 #else5893 ,{jjWRONG, FACSTD_CMD, LIST_CMD, IDEAL_CMD , NO_PLURAL |NO_RING}5894 #endif5895 ,{jjGETDUMP, GETDUMP_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING}5896 ,{jjHIGHCORNER, HIGHCORNER_CMD, POLY_CMD, IDEAL_CMD , NO_PLURAL |ALLOW_RING}5897 ,{jjHIGHCORNER_M, HIGHCORNER_CMD,VECTOR_CMD, MODUL_CMD , NO_PLURAL |ALLOW_RING}5898 ,{jjHILBERT, HILBERT_CMD, NONE, IDEAL_CMD , NO_PLURAL |ALLOW_RING}5899 ,{jjHILBERT, HILBERT_CMD, NONE, MODUL_CMD , NO_PLURAL |ALLOW_RING}5900 ,{jjHILBERT_IV, HILBERT_CMD, INTVEC_CMD, INTVEC_CMD , NO_PLURAL |ALLOW_RING}5901 ,{jjHOMOG1, HOMOG_CMD, INT_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5902 ,{jjHOMOG1, HOMOG_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5903 ,{jjDUMMY, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5904 ,{jjidVec2Ideal,IDEAL_CMD, XS(IDEAL_CMD), VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5905 ,{jjIDEAL_Ma, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}5906 ,{jjIDEAL_R, IDEAL_CMD, IDEAL_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5907 ,{jjIDEAL_R, IDEAL_CMD, IDEAL_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}5908 ,{jjIDEAL_Map, IDEAL_CMD, IDEAL_CMD, MAP_CMD , ALLOW_PLURAL |ALLOW_RING}5909 ,{jjIMPART, IMPART_CMD, NUMBER_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5910 ,{jjINDEPSET, INDEPSET_CMD, INTVEC_CMD, IDEAL_CMD , NO_PLURAL |NO_RING}5911 ,{jjDUMMY, INT_CMD, INT_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5912 ,{jjnlInt, INT_CMD, INT_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING}5913 ,{jjnInt, INT_CMD, INT_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5914 ,{jjP2I, INT_CMD, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5915 ,{jjINTERRED, INTERRED_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5916 ,{jjINTERRED, INTERRED_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5917 ,{jjDUMMY, INTMAT_CMD, INTMAT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}5918 ,{jjIm2Iv, INTVEC_CMD, INTVEC_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}5919 ,{jjDUMMY, INTVEC_CMD, INTVEC_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}5920 ,{jjIS_RINGVAR_P, IS_RINGVAR, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5921 ,{jjIS_RINGVAR_S, IS_RINGVAR, INT_CMD, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}5922 ,{jjIS_RINGVAR0,IS_RINGVAR, INT_CMD, ANY_TYPE , ALLOW_PLURAL |ALLOW_RING}5923 ,{jjJACOB_P, JACOB_CMD, IDEAL_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5924 ,{mpJacobi, JACOB_CMD, MATRIX_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5925 ,{jjJACOB_M, JACOB_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5926 ,{jjJanetBasis, JANET_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |NO_RING}5927 ,{jjKBASE, KBASE_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5928 ,{jjKBASE, KBASE_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5929 ,{jjLU_DECOMP, LU_CMD, LIST_CMD, MATRIX_CMD , NO_PLURAL |NO_RING}5930 ,{jjPFAC1, PFAC_CMD, LIST_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING}5931 ,{jjPFAC1, PFAC_CMD, LIST_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5932 ,{atKILLATTR1, KILLATTR_CMD, NONE, IDHDL , ALLOW_PLURAL |ALLOW_RING}5933 #ifdef MDEBUG5934 ,{jjpHead, LEAD_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5935 #else5936 ,{jjpHead, LEAD_CMD, XS(POLY_CMD), POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5937 #endif5938 ,{jjidHead, LEAD_CMD, XS(IDEAL_CMD), IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5939 #ifdef MDEBUG5940 ,{jjpHead, LEAD_CMD, VECTOR_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5941 #else5942 ,{jjpHead, LEAD_CMD, XS(VECTOR_CMD), VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5943 #endif5944 ,{jjidHead, LEAD_CMD, XS(MODUL_CMD), MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5945 ,{jjLEADCOEF, LEADCOEF_CMD, NUMBER_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5946 ,{jjLEADCOEF, LEADCOEF_CMD, NUMBER_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5947 ,{jjLEADEXP, LEADEXP_CMD, INTVEC_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5948 ,{jjLEADEXP, LEADEXP_CMD, INTVEC_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5949 ,{jjLEADMONOM, LEADMONOM_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5950 ,{jjLEADMONOM, LEADMONOM_CMD, VECTOR_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5951 ,{jjLOAD1, LIB_CMD, NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}5952 ,{jjDUMMY, LINK_CMD, LINK_CMD, LINK_CMD , ALLOW_PLURAL |ALLOW_RING}5953 ,{jjCALL1MANY, LIST_CMD, LIST_CMD, DEF_CMD , ALLOW_PLURAL |ALLOW_RING}5954 ,{jjWRONG, MAP_CMD, 0, ANY_TYPE , ALLOW_PLURAL |ALLOW_RING}5955 ,{jjDUMMY, MATRIX_CMD, MATRIX_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}5956 ,{jjidMaxIdeal, MAXID_CMD, XS(IDEAL_CMD), INT_CMD , ALLOW_PLURAL |ALLOW_RING}5957 ,{jjMEMORY, MEMORY_CMD, BIGINT_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5958 ,{jjidMinBase, MINBASE_CMD, XS(IDEAL_CMD), IDEAL_CMD , NO_PLURAL |ALLOW_RING}5959 ,{jjidMinBase, MINBASE_CMD, XS(MODUL_CMD), MODUL_CMD , NO_PLURAL |ALLOW_RING}5960 ,{jjMINRES, MINRES_CMD, LIST_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING}5961 ,{jjMINRES_R, MINRES_CMD, RESOLUTION_CMD, RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING}5962 ,{jjDUMMY, MODUL_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5963 ,{jjMONITOR1, MONITOR_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING}5964 ,{jjMONOM, MONOM_CMD, POLY_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}5965 ,{jjMULT, MULTIPLICITY_CMD, INT_CMD, IDEAL_CMD , NO_PLURAL |ALLOW_RING}5966 ,{jjMULT, MULTIPLICITY_CMD, INT_CMD, MODUL_CMD , NO_PLURAL |ALLOW_RING}5967 ,{jjMSTD, MSTD_CMD, LIST_CMD, IDEAL_CMD , NO_PLURAL |ALLOW_RING}5968 ,{jjMSTD, MSTD_CMD, LIST_CMD, MODUL_CMD , NO_PLURAL |ALLOW_RING}5969 ,{jjNAMEOF, NAMEOF_CMD, STRING_CMD, ANY_TYPE , ALLOW_PLURAL |ALLOW_RING}5970 ,{jjNAMES, NAMES_CMD, LIST_CMD, PACKAGE_CMD , ALLOW_PLURAL |ALLOW_RING}5971 ,{jjNAMES, NAMES_CMD, LIST_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}5972 ,{jjNAMES, NAMES_CMD, LIST_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5973 ,{jjDUMMY, NUMBER_CMD, NUMBER_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5974 ,{jjP2N, NUMBER_CMD, NUMBER_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5975 ,{jjBI2N, NUMBER_CMD, NUMBER_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING}5976 ,{jjRPAR, NPARS_CMD, INT_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}5977 ,{jjRPAR, NPARS_CMD, INT_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5978 ,{jjNVARS, NVARS_CMD, INT_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}5979 ,{jjNVARS, NVARS_CMD, INT_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5980 ,{jjOpenClose, OPEN_CMD, NONE, LINK_CMD , ALLOW_PLURAL |ALLOW_RING}5981 ,{jjORD, ORD_CMD, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5982 ,{jjORD, ORD_CMD, INT_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}5983 ,{jjrOrdStr, ORDSTR_CMD, XS(STRING_CMD), RING_CMD , ALLOW_PLURAL |ALLOW_RING}5984 ,{jjrOrdStr, ORDSTR_CMD, XS(STRING_CMD), QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5985 ,{jjPAR1, PAR_CMD, NUMBER_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5986 ,{jjPARDEG, PARDEG_CMD, INT_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}5987 ,{jjPARSTR1, PARSTR_CMD, STRING_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5988 ,{jjrParStr, PARSTR_CMD, XS(STRING_CMD), RING_CMD , ALLOW_PLURAL |ALLOW_RING}5989 ,{jjrParStr, PARSTR_CMD, XS(STRING_CMD), QRING_CMD , ALLOW_PLURAL |ALLOW_RING}5990 ,{jjDUMMY, POLY_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}5991 ,{jjBI2P, POLY_CMD, POLY_CMD, BIGINT_CMD , ALLOW_PLURAL |ALLOW_RING}5992 ,{jjPREIMAGE_R, PREIMAGE_CMD, RING_CMD, MAP_CMD , NO_PLURAL |ALLOW_RING}5993 ,{jjPRIME, PRIME_CMD, INT_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}5994 ,{jjPRINT, PRINT_CMD, NONE, LIST_CMD , ALLOW_PLURAL |ALLOW_RING}5995 ,{jjPRINT, PRINT_CMD, NONE, DEF_CMD , ALLOW_PLURAL |ALLOW_RING}5996 ,{jjPRUNE, PRUNE_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5997 ,{kQHWeight, QHWEIGHT_CMD, INTVEC_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}5998 ,{kQHWeight, QHWEIGHT_CMD, INTVEC_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}5999 ,{jjWRONG, QRING_CMD, 0, ANY_TYPE , ALLOW_PLURAL |ALLOW_RING}6000 ,{jjRANK1, RANK_CMD, INT_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}6001 ,{jjREAD, READ_CMD, STRING_CMD, LINK_CMD , ALLOW_PLURAL |ALLOW_RING}6002 ,{jjREGULARITY, REGULARITY_CMD, INT_CMD, LIST_CMD , NO_PLURAL |ALLOW_RING}6003 ,{jjREPART, REPART_CMD, NUMBER_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}6004 ,{jjRESERVEDNAME,RESERVEDNAME_CMD, INT_CMD, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}6005 ,{jjL2R, RESOLUTION_CMD, RESOLUTION_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING}6006 ,{jjDUMMY, RESOLUTION_CMD, RESOLUTION_CMD, RESOLUTION_CMD, ALLOW_PLURAL |ALLOW_RING}6007 ,{jjRINGLIST, RINGLIST_CMD, LIST_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}6008 ,{jjRINGLIST, RINGLIST_CMD, LIST_CMD, QRING_CMD , ALLOW_PLURAL |ALLOW_RING}6009 ,{jjDUMMY, RING_CMD, RING_CMD, RING_CMD , ALLOW_PLURAL |ALLOW_RING}6010 ,{jjLISTRING, RING_CMD, RING_CMD, LIST_CMD , ALLOW_PLURAL |ALLOW_RING}6011 //,{jjWRONG, ROWS_CMD, 0, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}6012 ,{jjpMaxComp, ROWS_CMD, XS(INT_CMD), VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}6013 ,{jjROWS, ROWS_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}6014 ,{jjROWS, ROWS_CMD, INT_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}6015 ,{jjROWS_IV, ROWS_CMD, INT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}6016 ,{jjCOUNT_IV, ROWS_CMD, INT_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}6017 ,{jjSLIM_GB, SLIM_GB_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL }6018 ,{jjSLIM_GB, SLIM_GB_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL }6019 ,{jjSort_Id, SORTVEC_CMD, INTVEC_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6020 ,{jjSort_Id, SORTVEC_CMD, INTVEC_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}6021 #ifdef HAVE_FACTORY6022 ,{jjSQR_FREE, SQR_FREE_CMD, IDEAL_CMD, POLY_CMD , NO_PLURAL |ALLOW_RING}6023 #else6024 ,{jjWRONG, SQR_FREE_CMD, IDEAL_CMD, POLY_CMD , NO_PLURAL |ALLOW_RING}6025 #endif6026 ,{jjSTD, STD_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6027 ,{jjSTD, STD_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}6028 ,{jjDUMMY, STRING_CMD, STRING_CMD, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}6029 ,{jjSYSTEM, SYSTEM_CMD, NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}6030 ,{jjSYZYGY, SYZYGY_CMD, MODUL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6031 ,{jjSYZYGY, SYZYGY_CMD, MODUL_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}6032 #ifdef HAVE_PLURAL6033 ,{jjENVELOPE, ENVELOPE_CMD, RING_CMD, RING_CMD , ALLOW_PLURAL |NO_RING}6034 ,{jjENVELOPE, ENVELOPE_CMD, QRING_CMD, QRING_CMD , ALLOW_PLURAL |NO_RING}6035 ,{jjOPPOSITE, OPPOSITE_CMD, RING_CMD, RING_CMD , ALLOW_PLURAL |NO_RING}6036 ,{jjOPPOSITE, OPPOSITE_CMD, QRING_CMD, QRING_CMD , ALLOW_PLURAL |NO_RING}6037 ,{jjTWOSTD, TWOSTD_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |NO_RING}6038 #endif6039 ,{jjWRONG, TRACE_CMD, 0, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}6040 ,{jjWRONG, TRACE_CMD, 0, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6041 ,{jjTRACE_IV, TRACE_CMD, INT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}6042 ,{jjmpTrace, TRACE_CMD, XS(POLY_CMD), MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}6043 ,{jjTRANSP_IV, TRANSPOSE_CMD, INTMAT_CMD, INTVEC_CMD , ALLOW_PLURAL |ALLOW_RING}6044 ,{jjTRANSP_IV, TRANSPOSE_CMD, INTMAT_CMD, INTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}6045 ,{jjmpTransp, TRANSPOSE_CMD, XS(MATRIX_CMD), MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}6046 ,{jjidTransp, TRANSPOSE_CMD, XS(MODUL_CMD), MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}6047 ,{jjTYPEOF, TYPEOF_CMD, STRING_CMD, ANY_TYPE , ALLOW_PLURAL |ALLOW_RING}6048 ,{jjUNIVARIATE, UNIVARIATE_CMD, INT_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}6049 ,{jjVARIABLES_P,VARIABLES_CMD, IDEAL_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}6050 ,{jjVARIABLES_ID,VARIABLES_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6051 ,{jjVARIABLES_ID,VARIABLES_CMD, IDEAL_CMD, MATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}6052 ,{jjDUMMY, VECTOR_CMD, VECTOR_CMD, VECTOR_CMD , ALLOW_PLURAL |ALLOW_RING}6053 ,{jjVDIM, VDIM_CMD, INT_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6054 ,{jjVDIM, VDIM_CMD, INT_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}6055 ,{jjVAR1, VAR_CMD, POLY_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}6056 ,{jjVARSTR1, VARSTR_CMD, STRING_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}6057 ,{jjrVarStr, VARSTR_CMD, XS(STRING_CMD), RING_CMD , ALLOW_PLURAL |ALLOW_RING}6058 ,{jjrVarStr, VARSTR_CMD, XS(STRING_CMD), QRING_CMD , ALLOW_PLURAL |ALLOW_RING}6059 ,{kWeight, WEIGHT_CMD, INTVEC_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6060 ,{kWeight, WEIGHT_CMD, INTVEC_CMD, MODUL_CMD , ALLOW_PLURAL |ALLOW_RING}6061 ,{jjLOAD1, LOAD_CMD, NONE, STRING_CMD , ALLOW_PLURAL |ALLOW_RING}6062 ,{loNewtonP, NEWTONPOLY_CMD, IDEAL_CMD, IDEAL_CMD , ALLOW_PLURAL |ALLOW_RING}6063 #ifdef HAVE_FANS6064 ,{jjDELMCONE1, DELMCONE_CMD, NONE, FAN_CMD , ALLOW_PLURAL |ALLOW_RING}6065 ,{jjMAXRAYS1, MAXRAYS_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING}6066 ,{jjMAXRAYS2, MAXRAYS_CMD, INTMAT_CMD, CONE_CMD , ALLOW_PLURAL |ALLOW_RING}6067 ,{jjFACETNS1, FACETNS_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING}6068 ,{jjFACETNS2, FACETNS_CMD, INTMAT_CMD, CONE_CMD , ALLOW_PLURAL |ALLOW_RING}6069 ,{jjLINSPACE, LINSPACE_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING}6070 ,{jjMAXCONE1, MAXCONE_CMD, LIST_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING}6071 ,{jjADJACENCY1, ADJACENCY_CMD, INTMAT_CMD, FAN_CMD , ALLOW_PLURAL |ALLOW_RING}6072 #endif /* HAVE_FANS */6073 ,{NULL, 0, 0, 0 , NO_PLURAL |NO_RING}6074 };6075 5118 /*=================== operations with 3 args.: static proc =================*/ 6076 5119 static BOOLEAN jjBRACK_S(leftv res, leftv u, leftv v,leftv w) … … 7225 6268 } 7226 6269 7227 /*=================== operations with 3 args.: table =================*/7228 struct sValCmd3 dArith3[]=7229 {7230 // operations:7231 // proc cmd res arg1 arg2 arg3 plural7232 {jjBRACK_S, '[', STRING_CMD, STRING_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7233 ,{jjBRACK_Im, '[', INT_CMD, INTMAT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7234 ,{jjBRACK_Ma_I_IV, '[', INT_CMD, INTMAT_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7235 ,{jjBRACK_Ma_IV_I, '[', INT_CMD, INTMAT_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7236 ,{jjBRACK_Ma_IV_IV, '[', INT_CMD, INTMAT_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7237 ,{jjBRACK_Ma, '[', POLY_CMD, MATRIX_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7238 ,{jjBRACK_Ma_I_IV, '[', POLY_CMD, MATRIX_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7239 ,{jjBRACK_Ma_IV_I, '[', POLY_CMD, MATRIX_CMD, INTVEC_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7240 ,{jjBRACK_Ma_IV_IV, '[', POLY_CMD, MATRIX_CMD, INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7241 ,{jjPROC3, '(', ANY_TYPE, PROC_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7242 ,{atATTRIB3, ATTRIB_CMD, NONE, IDHDL, STRING_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7243 ,{jjBAREISS3, BAREISS_CMD,LIST_CMD, MODUL_CMD, INT_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}7244 ,{jjCOEFFS3_P, COEFFS_CMD, MATRIX_CMD, POLY_CMD, POLY_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7245 ,{jjCOEFFS3_P, COEFFS_CMD, MATRIX_CMD, VECTOR_CMD, POLY_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7246 ,{jjCOEFFS3_Id, COEFFS_CMD, MATRIX_CMD, IDEAL_CMD, POLY_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7247 ,{jjCOEFFS3_Id, COEFFS_CMD, MATRIX_CMD, MODUL_CMD, POLY_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7248 ,{jjCOEFFS3_KB, COEFFS_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}7249 ,{jjCOEFFS3_KB, COEFFS_CMD, MATRIX_CMD, MODUL_CMD, MODUL_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}7250 ,{jjELIMIN_HILB, ELIMINATION_CMD,IDEAL_CMD, IDEAL_CMD, POLY_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}7251 ,{jjELIMIN_HILB, ELIMINATION_CMD,MODUL_CMD, MODUL_CMD, POLY_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}7252 ,{jjFIND3, FIND_CMD, INT_CMD, STRING_CMD, STRING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7253 ,{jjFWALK3, FWALK_CMD, IDEAL_CMD, RING_CMD, DEF_CMD, INT_CMD, NO_PLURAL |ALLOW_RING}7254 ,{jjHILBERT3, HILBERT_CMD,INTVEC_CMD, IDEAL_CMD, INT_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}7255 ,{jjHILBERT3, HILBERT_CMD,INTVEC_CMD, MODUL_CMD, INT_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}7256 ,{jjHOMOG_P_W, HOMOG_CMD, POLY_CMD, POLY_CMD, POLY_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7257 ,{jjHOMOG_P_W, HOMOG_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7258 ,{jjHOMOG_ID_W, HOMOG_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7259 ,{jjHOMOG_ID_W, HOMOG_CMD, MODUL_CMD, MODUL_CMD, POLY_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7260 ,{jjCALL3MANY, IDEAL_CMD, IDEAL_CMD, DEF_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7261 ,{lInsert3, INSERT_CMD, LIST_CMD, LIST_CMD, DEF_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7262 //,{jjCALL3MANY, INTERSECT_CMD, NONE, DEF_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7263 ,{jjINTMAT3, INTMAT_CMD, INTMAT_CMD, INTMAT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7264 ,{jjCALL3MANY, INTVEC_CMD, INTVEC_CMD, DEF_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7265 ,{jjJET_P_IV, JET_CMD, POLY_CMD, POLY_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7266 ,{jjJET_ID_IV, JET_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7267 ,{jjJET_P_IV, JET_CMD, VECTOR_CMD, VECTOR_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7268 ,{jjJET_ID_IV, JET_CMD, MODUL_CMD, MODUL_CMD, INT_CMD, INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}7269 ,{jjJET_P_P, JET_CMD, POLY_CMD, POLY_CMD, POLY_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7270 ,{jjJET_P_P, JET_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7271 ,{jjJET_ID_M, JET_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7272 ,{jjJET_ID_M, JET_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7273 ,{jjWRONG3, JET_CMD, POLY_CMD, POLY_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7274 ,{mpKoszul, KOSZUL_CMD, MATRIX_CMD, INT_CMD, INT_CMD, IDEAL_CMD, NO_PLURAL |NO_RING}7275 ,{jjLIFTSTD3, LIFTSTD_CMD,IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}7276 ,{jjLIFTSTD3, LIFTSTD_CMD,MODUL_CMD, MODUL_CMD, MATRIX_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}7277 ,{jjCALL3MANY, LIST_CMD, LIST_CMD, DEF_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7278 ,{jjMATRIX_Id, MATRIX_CMD, MATRIX_CMD, IDEAL_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7279 ,{jjMATRIX_Mo, MATRIX_CMD, MATRIX_CMD, MODUL_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7280 ,{jjMATRIX_Ma, MATRIX_CMD, MATRIX_CMD, MATRIX_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7281 ,{jjCALL3MANY, MODUL_CMD, MODUL_CMD, DEF_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7282 #ifdef OLD_RES7283 ,{jjRES3, MRES_CMD, NONE, IDEAL_CMD, INT_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}7284 ,{jjRES3, MRES_CMD, NONE, MODUL_CMD, INT_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}7285 #endif7286 ,{jjLIFT3, LIFT_CMD, MATRIX_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7287 ,{jjLIFT3, LIFT_CMD, MATRIX_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7288 ,{jjPREIMAGE, PREIMAGE_CMD, IDEAL_CMD, RING_CMD, ANY_TYPE, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}7289 ,{jjPREIMAGE, PREIMAGE_CMD, IDEAL_CMD, QRING_CMD, ANY_TYPE, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}7290 ,{jjRANDOM_Im, RANDOM_CMD, INTMAT_CMD, INT_CMD, INT_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7291 ,{jjREDUCE3_P, REDUCE_CMD, POLY_CMD, POLY_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7292 ,{jjREDUCE3_P, REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7293 ,{jjREDUCE3_P, REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7294 ,{jjREDUCE3_ID, REDUCE_CMD, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7295 ,{jjREDUCE3_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7296 ,{jjREDUCE3_ID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, IDEAL_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}7297 ,{jjREDUCE3_CP, REDUCE_CMD, POLY_CMD, POLY_CMD, POLY_CMD, IDEAL_CMD, ALLOW_PLURAL |ALLOW_RING}7298 ,{jjREDUCE3_CP, REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, MODUL_CMD, ALLOW_PLURAL |ALLOW_RING}7299 ,{jjREDUCE3_CID, REDUCE_CMD, IDEAL_CMD, IDEAL_CMD, IDEAL_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7300 ,{jjREDUCE3_CID, REDUCE_CMD, MODUL_CMD, MODUL_CMD, MODUL_CMD, MATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}7301 #ifdef OLD_RES7302 ,{jjRES3, RES_CMD, NONE, IDEAL_CMD, INT_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}7303 ,{jjRES3, RES_CMD, NONE, MODUL_CMD, INT_CMD, ANY_TYPE, ALLOW_PLURAL |ALLOW_RING}7304 #endif7305 #ifdef HAVE_FACTORY7306 ,{jjRESULTANT, RESULTANT_CMD, POLY_CMD,POLY_CMD, POLY_CMD, POLY_CMD, NO_PLURAL |ALLOW_RING}7307 #else7308 ,{jjWRONG3, RESULTANT_CMD, POLY_CMD,POLY_CMD, POLY_CMD, POLY_CMD, NO_PLURAL |ALLOW_RING}7309 #endif7310 ,{jjRING3, RING_CMD, RING_CMD, DEF_CMD, DEF_CMD, DEF_CMD, ALLOW_PLURAL |ALLOW_RING}7311 #ifdef OLD_RES7312 ,{jjRES3, SRES_CMD, NONE, IDEAL_CMD, INT_CMD, ANY_TYPE, NO_PLURAL |ALLOW_RING}7313 ,{jjRES3, SRES_CMD, NONE, MODUL_CMD, INT_CMD, ANY_TYPE, NO_PLURAL |ALLOW_RING}7314 #endif7315 ,{jjSTATUS3, STATUS_CMD, INT_CMD, LINK_CMD, STRING_CMD, STRING_CMD, ALLOW_PLURAL |ALLOW_RING}7316 ,{jjSTD_HILB_W, STD_CMD, IDEAL_CMD, IDEAL_CMD, INTVEC_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}7317 ,{jjSTD_HILB_W, STD_CMD, MODUL_CMD, MODUL_CMD, INTVEC_CMD, INTVEC_CMD, NO_PLURAL |ALLOW_RING}7318 ,{jjSUBST_P, SUBST_CMD, POLY_CMD, POLY_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}7319 ,{jjSUBST_P, SUBST_CMD, POLY_CMD, POLY_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}7320 ,{jjSUBST_P, SUBST_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}7321 ,{jjSUBST_Id, SUBST_CMD, IDEAL_CMD, IDEAL_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}7322 ,{jjSUBST_Id, SUBST_CMD, MODUL_CMD, MODUL_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}7323 ,{jjSUBST_Id, SUBST_CMD, MATRIX_CMD, MATRIX_CMD, POLY_CMD, POLY_CMD , ALLOW_PLURAL |ALLOW_RING}7324 ,{jjSUBST_Id_I, SUBST_CMD, MATRIX_CMD, MATRIX_CMD, POLY_CMD, INT_CMD , ALLOW_PLURAL |ALLOW_RING}7325 ,{jjSUBST_Id_N, SUBST_CMD, MATRIX_CMD, MATRIX_CMD, POLY_CMD, NUMBER_CMD , ALLOW_PLURAL |ALLOW_RING}7326 ,{jjCALL3MANY, SYSTEM_CMD, NONE, STRING_CMD, DEF_CMD, DEF_CMD , ALLOW_PLURAL |ALLOW_RING}7327 ,{nuLagSolve, LAGSOLVE_CMD,LIST_CMD, POLY_CMD, INT_CMD, INT_CMD , NO_PLURAL |NO_RING}7328 ,{nuVanderSys, VANDER_CMD, POLY_CMD, IDEAL_CMD, IDEAL_CMD, INT_CMD , NO_PLURAL |NO_RING}7329 #ifdef HAVE_FANS7330 ,{jjSETPROP1, SETPROP_CMD,NONE, FAN_CMD, STRING_CMD, INT_CMD , NO_PLURAL |NO_RING}7331 ,{jjSETPROP2, SETPROP_CMD,NONE, CONE_CMD, STRING_CMD, INT_CMD , NO_PLURAL |NO_RING}7332 ,{jjADJACENCY2, ADJACENCY_CMD,CONE_CMD, FAN_CMD, INT_CMD, INT_CMD , NO_PLURAL |NO_RING}7333 #endif /* HAVE_FANS */7334 ,{NULL, 0, 0, 0, 0, 0 , NO_PLURAL |NO_RING}7335 };7336 6270 /*=================== operations with many arg.: static proc =================*/ 7337 6271 static BOOLEAN jjBREAK0(leftv res, leftv v) … … 8393 7327 8394 7328 8395 /*=================== operations with many arg.: table =================*/8396 /* number_of_args: -1: any, -2: any >0, .. */8397 struct sValCmdM dArithM[]=8398 {8399 // operations:8400 // proc cmd res number_of_args plural8401 {jjKLAMMER_PL, '(', ANY_TYPE, -2 , ALLOW_PLURAL |ALLOW_RING}8402 ,{jjBREAK0, BREAKPOINT_CMD, NONE, 0 , ALLOW_PLURAL |ALLOW_RING}8403 ,{jjBREAK1, BREAKPOINT_CMD, NONE, -2 , ALLOW_PLURAL |ALLOW_RING}8404 ,{jjCALL2ARG, COEF_CMD, MATRIX_CMD, 2 , ALLOW_PLURAL |ALLOW_RING}8405 ,{jjCOEF_M, COEF_CMD, NONE, 4 , ALLOW_PLURAL |ALLOW_RING}8406 ,{jjCALL2ARG, DIVISION_CMD, ANY_TYPE/*or set by p*/,2 , ALLOW_PLURAL |ALLOW_RING}8407 ,{jjDIVISION4, DIVISION_CMD, ANY_TYPE/*or set by p*/,3 , NO_PLURAL |NO_RING}8408 ,{jjDIVISION4, DIVISION_CMD, ANY_TYPE/*or set by p*/,4 , NO_PLURAL |NO_RING}8409 ,{jjDBPRINT, DBPRINT_CMD, NONE, -2 , ALLOW_PLURAL |ALLOW_RING}8410 //,{jjEXPORTTO_M, EXPORTTO_CMD, NONE, -2 , ALLOW_PLURAL |ALLOW_RING}8411 ,{jjCALL1ARG, IDEAL_CMD, IDEAL_CMD, 1 , ALLOW_PLURAL |ALLOW_RING}8412 ,{jjIDEAL_PL, IDEAL_CMD, IDEAL_CMD, -1 , ALLOW_PLURAL |ALLOW_RING}8413 ,{jjCALL2ARG, INTERSECT_CMD, IDEAL_CMD, 2 , ALLOW_PLURAL |ALLOW_RING}8414 ,{jjINTERSECT_PL,INTERSECT_CMD, IDEAL_CMD, -2 , ALLOW_PLURAL |ALLOW_RING}8415 ,{jjCALL1ARG, INTVEC_CMD, INTVEC_CMD, 1 , ALLOW_PLURAL |ALLOW_RING}8416 ,{jjINTVEC_PL, INTVEC_CMD, INTVEC_CMD, -2 , ALLOW_PLURAL |ALLOW_RING}8417 ,{jjCALL2ARG, JET_CMD, POLY_CMD,/*or set by p*/ 2 , ALLOW_PLURAL |ALLOW_RING}8418 ,{jjCALL3ARG, JET_CMD, POLY_CMD,/*or set by p*/ 3 , ALLOW_PLURAL |ALLOW_RING}8419 ,{jjJET4, JET_CMD, POLY_CMD,/*or set by p*/ 4 , ALLOW_PLURAL |ALLOW_RING}8420 ,{jjLIST_PL, LIST_CMD, LIST_CMD, -1 , ALLOW_PLURAL |ALLOW_RING}8421 ,{jjLU_INVERSE,LUI_CMD, LIST_CMD, -2 , NO_PLURAL |NO_RING}8422 ,{jjLU_SOLVE, LUS_CMD, LIST_CMD, -2 , NO_PLURAL |NO_RING}8423 ,{jjWRONG, MINOR_CMD, NONE, 1 , ALLOW_PLURAL |ALLOW_RING}8424 ,{jjMINOR_M, MINOR_CMD, IDEAL_CMD, -2 , ALLOW_PLURAL |ALLOW_RING}8425 ,{jjCALL1ARG, MODUL_CMD, MODUL_CMD, 1 , ALLOW_PLURAL |ALLOW_RING}8426 ,{jjIDEAL_PL, MODUL_CMD, MODUL_CMD, -1 , ALLOW_PLURAL |ALLOW_RING}8427 ,{jjCALL1ARG, NAMES_CMD, LIST_CMD, 1 , ALLOW_PLURAL |ALLOW_RING}8428 ,{jjNAMES0, NAMES_CMD, LIST_CMD, 0 , ALLOW_PLURAL |ALLOW_RING}8429 ,{jjOPTION_PL, OPTION_CMD, STRING_CMD/*or set by p*/,-1, ALLOW_PLURAL |ALLOW_RING}8430 ,{jjCALL2ARG, REDUCE_CMD, IDEAL_CMD/*or set by p*/, 2, ALLOW_PLURAL |ALLOW_RING}8431 ,{jjCALL3ARG, REDUCE_CMD, IDEAL_CMD/*or set by p*/, 3, ALLOW_PLURAL |ALLOW_RING}8432 ,{jjREDUCE4, REDUCE_CMD, IDEAL_CMD/*or set by p*/, 4, ALLOW_PLURAL |ALLOW_RING}8433 ,{jjREDUCE5, REDUCE_CMD, IDEAL_CMD/*or set by p*/, 5, ALLOW_PLURAL |ALLOW_RING}8434 ,{jjCALL1ARG, RESERVEDNAME_CMD, INT_CMD, 1 , ALLOW_PLURAL |ALLOW_RING}8435 ,{jjRESERVED0, RESERVEDNAME_CMD, NONE, 0 , ALLOW_PLURAL |ALLOW_RING}8436 ,{jjSTRING_PL, STRING_CMD, STRING_CMD, -1 , ALLOW_PLURAL |ALLOW_RING}8437 ,{jjCALL3ARG, SUBST_CMD, NONE/*set by p*/, 3 , ALLOW_PLURAL |ALLOW_RING}8438 ,{jjSUBST_M, SUBST_CMD, NONE/*set by p*/, -2 , ALLOW_PLURAL |ALLOW_RING}8439 ,{jjSYSTEM, SYSTEM_CMD, NONE/*or set by p*/,-2 , ALLOW_PLURAL |ALLOW_RING}8440 ,{jjTEST, TEST_CMD, NONE, -2 , ALLOW_PLURAL |ALLOW_RING}8441 ,{iiWRITE, WRITE_CMD, NONE, -2 , ALLOW_PLURAL |ALLOW_RING}8442 ,{jjCALL2ARG, STATUS_CMD, STRING_CMD, 2 , ALLOW_PLURAL |ALLOW_RING}8443 ,{jjCALL3ARG, STATUS_CMD, INT_CMD, 3 , ALLOW_PLURAL |ALLOW_RING}8444 ,{jjSTATUS_M, STATUS_CMD, INT_CMD, 4 , ALLOW_PLURAL |ALLOW_RING}8445 ,{loSimplex, SIMPLEX_CMD, LIST_CMD, 6 , NO_PLURAL |NO_RING}8446 ,{nuUResSolve, URSOLVE_CMD, LIST_CMD, 4 , NO_PLURAL |NO_RING}8447 ,{jjCALL1ARG, STD_CMD, IDEAL_CMD, 1 , ALLOW_PLURAL |ALLOW_RING}8448 ,{jjCALL2ARG, STD_CMD, IDEAL_CMD, 2 , ALLOW_PLURAL |ALLOW_RING}8449 ,{jjCALL3ARG, STD_CMD, IDEAL_CMD, 3 , NO_PLURAL |ALLOW_RING}8450 ,{jjSTD_HILB_WP, STD_CMD, IDEAL_CMD, 4 , NO_PLURAL |ALLOW_RING}8451 #ifdef HAVE_FANS8452 ,{jjADDADJ, ADDADJ_CMD, NONE, -2 , NO_PLURAL |NO_RING}8453 #endif /* HAVE_FANS */8454 ,{NULL, 0, 0, 0 , NO_PLURAL |NO_RING}8455 };8456 7329 #ifdef MDEBUG 8457 7330 static Subexpr jjDBMakeSub(leftv e,const char *f,const int l) … … 8465 7338 return r; 8466 7339 } 8467 8468 /*================ generating tables ============================*/ 8469 #ifdef GENTABLE 8470 extern struct sValAssign dAssign[]; 8471 struct sValCmdTab dArithTab1[]={ {0,0}}; 8472 #define JJTAB1LEN 0 8473 struct sValCmdTab dArithTab2[]={ {0,0}}; 8474 #define JJTAB2LEN 0 8475 8476 char *iparith_inc; 8477 void ttGen1() 8478 { 8479 iparith_inc=omStrDup("iparith.xxxxxx"); 8480 int pid=getpid(); 8481 iparith_inc[8]=(pid %10)+'0'; pid/=10; 8482 iparith_inc[9]=(pid %10)+'0'; pid/=10; 8483 iparith_inc[10]=(pid %10)+'0'; pid/=10; 8484 iparith_inc[11]=(pid %10)+'0'; pid/=10; 8485 iparith_inc[12]=(pid %10)+'0'; pid/=10; 8486 iparith_inc[13]=(pid %10)+'0'; 8487 FILE *outfile = myfopen(iparith_inc,"w"); 8488 int i,j,l1=0,l2=0; 8489 currRing=(ring)omAllocBin(sip_sring_bin); 8490 fprintf(outfile, 8491 "/****************************************\n" 8492 "* Computer Algebra System SINGULAR *\n" 8493 "****************************************/\n\n"); 8494 /*-------------------------------------------------------------------*/ 8495 fprintf(outfile,"// syntax table for Singular\n//\n"); 8496 fprintf(outfile,"// - search for an exact match of the argument types\n"); 8497 fprintf(outfile,"// - otherwise search for the first possibility\n"); 8498 fprintf(outfile,"// with converted types of the arguments\n"); 8499 fprintf(outfile,"// - otherwise report an error\n//\n"); 8500 8501 int op; 8502 i=0; 8503 while ((op=dArith1[i].cmd)!=0) 8504 { 8505 if (dArith1[i].p==jjWRONG) 8506 fprintf(outfile,"// DUMMY "); 8507 const char *s = iiTwoOps(op); 8508 fprintf(outfile,"// operation: %s (%s) -> %s\n", 8509 s, 8510 Tok2Cmdname(dArith1[i].arg), 8511 Tok2Cmdname(ABS(dArith1[i].res))); 8512 i++; 8513 } 8514 fprintf(outfile,"/*---------------------------------------------*/\n"); 8515 i=0; 8516 while ((op=dArith2[i].cmd)!=0) 8517 { 8518 if (dArith2[i].p==jjWRONG2) 8519 fprintf(outfile,"// DUMMY "); 8520 const char *s = iiTwoOps(op); 8521 fprintf(outfile,"// operation: %s (%s, %s) -> %s\n", 8522 s, 8523 Tok2Cmdname(dArith2[i].arg1), 8524 Tok2Cmdname(dArith2[i].arg2), 8525 Tok2Cmdname(dArith2[i].res)); 8526 i++; 8527 } 8528 fprintf(outfile,"/*---------------------------------------------*/\n"); 8529 i=0; 8530 while ((op=dArith3[i].cmd)!=0) 8531 { 8532 const char *s = iiTwoOps(op); 8533 if (dArith3[i].p==jjWRONG3) 8534 fprintf(outfile,"// DUMMY "); 8535 fprintf(outfile,"// operation: %s (%s, %s, %s) -> %s\n", 8536 s, 8537 Tok2Cmdname(dArith3[i].arg1), 8538 Tok2Cmdname(dArith3[i].arg2), 8539 Tok2Cmdname(dArith3[i].arg3), 8540 Tok2Cmdname(dArith3[i].res)); 8541 i++; 8542 } 8543 fprintf(outfile,"/*---------------------------------------------*/\n"); 8544 i=0; 8545 while ((op=dArithM[i].cmd)!=0) 8546 { 8547 const char *s = iiTwoOps(op); 8548 fprintf(outfile,"// operation: %s (...) -> %s", 8549 s, 8550 Tok2Cmdname(dArithM[i].res)); 8551 switch(dArithM[i].number_of_args) 8552 { 8553 case -2: 8554 fprintf(outfile," ( number of arguments >0 )\n"); 8555 break; 8556 case -1: 8557 fprintf(outfile," ( any number of arguments )\n"); 8558 break; 8559 default: 8560 fprintf(outfile," ( %d arguments )\n",dArithM[i].number_of_args); 8561 break; 8562 } 8563 i++; 8564 } 8565 fprintf(outfile,"/*---------------------------------------------*/\n"); 8566 i=0; 8567 while ((op=dAssign[i].res)!=0) 8568 { 8569 fprintf(outfile,"// assign: %s = %s\n", 8570 Tok2Cmdname(op/*dAssign[i].res*/), 8571 Tok2Cmdname(dAssign[i].arg)); 8572 i++; 8573 } 8574 /*-------------------------------------------------------------------*/ 8575 fprintf(outfile,"/*---------------------------------------------*/\n"); 8576 for (j=257;j<=MAX_TOK+1;j++) 8577 { 8578 for(i=257;i<=MAX_TOK+1;i++) 8579 { 8580 if ((i!=j) && (j!=IDHDL) && (j!=DEF_CMD) && (j!=ANY_TYPE) 8581 && iiTestConvert(i,j)) 8582 { 8583 fprintf(outfile,"// convert %s -> %s\n", 8584 Tok2Cmdname(i), Tok2Cmdname(j)); 8585 if (j==ANY_TYPE) break; 8586 } 8587 } 8588 } 8589 fprintf(outfile,"/*---------------------------------------------*/\n"); 8590 char ops[]="=><+*/[.^,%(;"; 8591 for(i=0;ops[i]!='\0';i++) 8592 fprintf(outfile,"// token %d : %c\n", (int)ops[i], ops[i]); 8593 for (i=257;i<=MAX_TOK;i++) 8594 { 8595 const char *s=iiTwoOps(i); 8596 if (s[0]!='$') 8597 { 8598 fprintf(outfile,"// token %d : %s\n", i, s); 8599 } 8600 } 8601 /*-------------------------------------------------------------------*/ 8602 fprintf(outfile,"/*--max. token: %d, gr: %d --*/\n",MAX_TOK,UMINUS); 8603 /*-------------------------------------------------------------------*/ 8604 fprintf(outfile,"/*---------------------------------------------*/\n"); 8605 fprintf(outfile, 8606 "struct sValCmdTab dArithTab1[]=\n" 8607 "{\n"); 8608 for (j=1;j<=MAX_TOK+1;j++) 8609 { 8610 for(i=0;dArith1[i].cmd!=0;i++) 8611 { 8612 if (dArith1[i].cmd==j) 8613 { 8614 fprintf(outfile," { %d,%d },\n",j,i); 8615 l1++; 8616 break; 8617 } 8618 } 8619 } 8620 fprintf(outfile," { 10000,0 }\n};\n"); 8621 fprintf(outfile,"#define JJTAB1LEN %d\n",l1); 8622 /*-------------------------------------------------------------------*/ 8623 fprintf(outfile, 8624 "struct sValCmdTab dArithTab2[]=\n" 8625 "{\n"); 8626 for (j=1;j<=MAX_TOK+1;j++) 8627 { 8628 for(i=0;dArith2[i].cmd!=0;i++) 8629 { 8630 if (dArith2[i].cmd==j) 8631 { 8632 fprintf(outfile," { %d,%d },\n",j,i); 8633 l2++; 8634 break; 8635 } 8636 } 8637 } 8638 fprintf(outfile," { 10000,0 }\n};\n"); 8639 fprintf(outfile,"#define JJTAB2LEN %d\n",l2); 8640 fclose(outfile); 8641 } 8642 /*-------------------------------------------------------------------*/ 8643 #if 0 8644 void ttGen2() 8645 { 8646 FILE *outfile = myfopen(iparith_inc,"a"); 8647 fprintf(outfile, 8648 "/****************************************\n" 8649 "* Computer Algebra System SINGULAR *\n" 8650 "****************************************/\n\n"); 8651 /*-------------------------------------------------------------------*/ 8652 fprintf(outfile,"// identifier table for Singular\n//\n"); 8653 8654 fprintf(outfile, 8655 "cmdnames OLDcmds[] =\n" 8656 "{ // name-string alias tokval toktype\n" 8657 "{ \"$INVALID$\", 0, -1, 0},\n"); 8658 int i=1; 8659 int m=-1; 8660 int id_nr=0; 8661 BOOLEAN f=FALSE; 8662 loop 8663 { 8664 while (cmds[i].tokval!=0) 8665 { 8666 if ((cmds[i].tokval!=-1)&&(cmds[i].name!=NULL)) 8667 { 8668 if(m==-1) 8669 { 8670 m=i; 8671 f=TRUE; 8672 } 8673 else if(strcmp(cmds[m].name,cmds[i].name)>0) 8674 { 8675 m=i; 8676 f=TRUE; 8677 } 8678 } 8679 i++; 8680 } 8681 if(f) 8682 { 8683 id_nr++; 8684 if(cmds[m].tokval==VRTIMER) fprintf(outfile,"#ifdef HAVE_RTIMER\n"); 8685 fprintf(outfile," {\"%s\", %*d, %3d, ",cmds[m].name, 8686 20-strlen(cmds[m].name), 8687 cmds[m].alias, 8688 cmds[m].tokval); 8689 switch(cmds[m].toktype) 8690 { 8691 case CMD_1: fprintf(outfile,"CMD_1 },\n"); break; 8692 case CMD_2: fprintf(outfile,"CMD_2 },\n"); break; 8693 case CMD_3: fprintf(outfile,"CMD_3 },\n"); break; 8694 case CMD_12: fprintf(outfile,"CMD_12 },\n"); break; 8695 case CMD_123 : fprintf(outfile,"CMD_123 },\n"); break; 8696 case CMD_23: fprintf(outfile,"CMD_23 },\n"); break; 8697 case CMD_M: fprintf(outfile,"CMD_M },\n"); break; 8698 case SYSVAR: fprintf(outfile,"SYSVAR },\n"); break; 8699 case ROOT_DECL: fprintf(outfile,"ROOT_DECL },\n"); break; 8700 case ROOT_DECL_LIST: fprintf(outfile,"ROOT_DECL_LIST },\n"); break; 8701 case RING_DECL: fprintf(outfile,"RING_DECL },\n"); break; 8702 case NONE: fprintf(outfile,"NONE },\n"); break; 8703 default: if((cmds[m].toktype>' ') 8704 &&(cmds[m].toktype<127)) 8705 { 8706 fprintf(outfile,"'%c' },\n",cmds[m].toktype); 8707 } 8708 else 8709 { 8710 fprintf(outfile,"%d },\n",cmds[m].toktype); 8711 } 8712 break; 8713 } 8714 if(cmds[m].tokval==VRTIMER) fprintf(outfile,"#endif\n"); 8715 cmds[m].name=NULL; 8716 m=-1; 8717 i=1; 8718 f=FALSE; 8719 } 8720 else break; 8721 } 8722 fprintf(outfile, 8723 "/* list of scanner identifiers/only for feread/reservedName */\n"); 8724 f=FALSE; 8725 i=1;m=-1; 8726 loop 8727 { 8728 while (cmds[i].tokval!=0) 8729 { 8730 if (cmds[i].name!=NULL) 8731 { 8732 if(m==-1) 8733 { 8734 m=i; 8735 f=TRUE; 8736 } 8737 else if(strcmp(cmds[m].name,cmds[i].name)>0) 8738 { 8739 m=i; 8740 f=TRUE; 8741 } 8742 } 8743 i++; 8744 } 8745 if(f) 8746 { 8747 fprintf(outfile," {\"%s\", %*d, -1, 0 },\n",cmds[m].name, 8748 20-strlen(cmds[m].name), 8749 0/*cmds[m].alias*/ 8750 /*-1 cmds[m].tokval*/ 8751 /*0 cmds[m].toktype*/); 8752 cmds[m].name=NULL; 8753 m=-1; 8754 i=1; 8755 f=FALSE; 8756 } 8757 else break; 8758 } 8759 fprintf(outfile, 8760 "/* end of list marker */\n" 8761 " { NULL, 0, 0, 0}\n" 8762 "};\n" 8763 "#ifdef HAVE_RTIMER\n" 8764 "#define LAST_IDENTIFIER %d\n" 8765 "#else\n" 8766 "#define LAST_IDENTIFIER %d\n" 8767 "#endif\n",id_nr,id_nr-1); 8768 fclose(outfile); 8769 } 8770 #endif 8771 /*---------------------------------------------------------------------*/ 8772 /** 8773 * @brief generate cmds initialisation 8774 **/ 8775 /*---------------------------------------------------------------------*/ 8776 8777 void ttGen2b() 8778 { 8779 int cmd_size = (sizeof(cmds)/sizeof(cmdnames))-1; 8780 8781 FILE *outfile = myfopen(iparith_inc,"a"); 8782 fprintf(outfile, 8783 "/****************************************\n" 8784 "* Computer Algebra System SINGULAR *\n" 8785 "****************************************/\n\n"); 8786 /*-------------------------------------------------------------------*/ 8787 fprintf(outfile,"// identifier table for Singular\n//\n"); 8788 8789 fprintf( 8790 outfile, 8791 "#ifdef MODULE_GENERATOR\n" 8792 "#define omAlloc0(A) malloc(A)\n" 8793 "#endif\n" 8794 "void iiInitCmdName()\n{\n" 8795 " sArithBase.nCmdUsed = 0;\n" 8796 " sArithBase.nCmdAllocated = %d;\n" 8797 " sArithBase.sCmds = (cmdnames*)omAlloc0(sArithBase.nCmdAllocated*sizeof(cmdnames));\n" 8798 "\n" 8799 " // name-string alias tokval toktype index\n", 8800 cmd_size); 8801 int m=0; 8802 int id_nr=0; 8803 8804 qsort(&cmds, cmd_size, sizeof(cmdnames), (&_gentable_sort_cmds)); 8805 8806 for(m=0; m<cmd_size; m++) 8807 { 8808 if(cmds[m].tokval>0) id_nr++; 8809 if(cmds[m].tokval==VRTIMER) fprintf(outfile,"#ifdef HAVE_RTIMER\n"); 8810 fprintf(outfile," iiArithAddCmd(\"%s\", %*d, %3d, ",cmds[m].name, 8811 20-strlen(cmds[m].name), 8812 cmds[m].alias, 8813 cmds[m].tokval); 8814 switch(cmds[m].toktype) 8815 { 8816 case CMD_1: fprintf(outfile,"CMD_1"); break; 8817 case CMD_2: fprintf(outfile,"CMD_2"); break; 8818 case CMD_3: fprintf(outfile,"CMD_3"); break; 8819 case CMD_12: fprintf(outfile,"CMD_12"); break; 8820 case CMD_123 : fprintf(outfile,"CMD_123"); break; 8821 case CMD_23: fprintf(outfile,"CMD_23"); break; 8822 case CMD_M: fprintf(outfile,"CMD_M"); break; 8823 case SYSVAR: fprintf(outfile,"SYSVAR"); break; 8824 case ROOT_DECL: fprintf(outfile,"ROOT_DECL"); break; 8825 case ROOT_DECL_LIST: fprintf(outfile,"ROOT_DECL_LIST"); break; 8826 case RING_DECL: fprintf(outfile,"RING_DECL"); break; 8827 case NONE: fprintf(outfile,"NONE"); break; 8828 default: 8829 if((cmds[m].toktype>' ') &&(cmds[m].toktype<127)) 8830 { 8831 fprintf(outfile,"'%c'",cmds[m].toktype); 8832 } 8833 else 8834 { 8835 fprintf(outfile,"%d",cmds[m].toktype); 8836 } 8837 break; 8838 #if 0 8839 fprintf(outfile," iiArithAddCmd(\"%s\", %*d, -1, 0 );\n", 8840 cmds[m].name, 20-strlen(cmds[m].name), 8841 0/*cmds[m].alias*/ 8842 /*-1 cmds[m].tokval*/ 8843 /*0 cmds[m].toktype*/); 8844 #endif 8845 } 8846 fprintf(outfile,", %d);\n", m); 8847 if(cmds[m].tokval==VRTIMER) fprintf(outfile,"#endif\n"); 8848 } 8849 fprintf(outfile, "/* end of list marker */\n"); 8850 fprintf(outfile, 8851 "#ifdef HAVE_RTIMER\n" 8852 " sArithBase.nLastIdentifier = %d;\n" 8853 "#else /* HAVE_RTIMER */\n" 8854 " sArithBase.nLastIdentifier = %d;\n" 8855 "#endif /* HAVE_RTIMER */\n", 8856 id_nr,id_nr-1); 8857 8858 8859 fprintf(outfile, 8860 "}\n" 8861 "#ifdef HAVE_RTIMER\n" 8862 "#define LAST_IDENTIFIER %d\n" 8863 "#else\n" 8864 "#define LAST_IDENTIFIER %d\n" 8865 "#endif\n",id_nr,id_nr-1); 8866 fclose(outfile); 8867 } 8868 /*-------------------------------------------------------------------*/ 8869 #if 0 8870 void ttGen3() 8871 { 8872 FILE *outfile = myfopen("mpsr_tok.inc","w"); 8873 fprintf(outfile, 8874 "/****************************************\n" 8875 "* Computer Algebra System SINGULAR *\n" 8876 "****************************************/\n\n"); 8877 /*-------------------------------------------------------------------*/ 8878 fprintf(outfile,"// token table for Singular\n//\n"); 8879 8880 fprintf(outfile, 8881 "short vtok[] =\n" 8882 "{\n"); 8883 // operations with 1 arg: =========================================== 8884 int i=0; 8885 while (dArith1[i].cmd!=0) 8886 { 8887 if ((dArith1[i].p!=jjWRONG) 8888 &&((i==0)||(dArith1[i].cmd!=dArith1[i-1].cmd))) 8889 { 8890 fprintf(outfile," %d,\n",dArith1[i].cmd); 8891 } 8892 i++; 8893 } 8894 // operations with 2 args: =========================================== 8895 i=0; 8896 while (dArith2[i].cmd!=0) 8897 { 8898 if ((dArith2[i].p!=jjWRONG2) 8899 &&((i==0)||(dArith2[i].cmd!=dArith2[i-1].cmd))) 8900 { 8901 fprintf(outfile," %d,\n",dArith2[i].cmd); 8902 } 8903 i++; 8904 } 8905 // operations with 3 args: =========================================== 8906 i=0; 8907 while (dArith3[i].cmd!=0) 8908 { 8909 if ( 8910 ((i==0)||(dArith3[i].cmd!=dArith3[i-1].cmd))) 8911 { 8912 fprintf(outfile," %d,\n",dArith3[i].cmd); 8913 } 8914 i++; 8915 } 8916 // operations with many args: =========================================== 8917 i=0; 8918 while (dArithM[i].cmd!=0) 8919 { 8920 if ( 8921 ((i==0)||(dArithM[i].cmd!=dArithM[i-1].cmd))) 8922 { 8923 fprintf(outfile," %d,\n",dArithM[i].cmd); 8924 } 8925 i++; 8926 } 8927 // ==================================================================== 8928 fprintf(outfile, 8929 "/* end of list marker */\n" 8930 " %d };\n",MAX_TOK); 8931 fclose(outfile); 8932 } 8933 #endif 8934 void ttGen4() 8935 { 8936 FILE *outfile = myfopen("plural_cmd.xx","w"); 8937 int i; 8938 const char *old_s=""; 8939 fprintf(outfile, 8940 "@c *****************************************\n" 8941 "@c * Computer Algebra System SINGULAR *\n" 8942 "@c *****************************************\n\n"); 8943 /*-------------------------------------------------------------------*/ 8944 fprintf(outfile,"@multicolumn .45 .45\n"); 8945 int op; 8946 i=0; 8947 while ((op=dArith1[i].cmd)!=0) 8948 { 8949 if (dArith1[i].p!=jjWRONG) 8950 { 8951 const char *s = iiTwoOps(op); 8952 if ((s!=NULL) && (isalpha(s[0])) && (strcmp(s,old_s)!=0)) 8953 { 8954 old_s=s; 8955 #ifdef HAVE_PLURAL 8956 switch (dArith1[i].valid_for & PLURAL_MASK) 8957 { 8958 case NO_PLURAL: 8959 fprintf(outfile,"@item @ref{%s} @tab @code{---}\n",s); 8960 break; 8961 case ALLOW_PLURAL: 8962 fprintf(outfile,"@item @ref{%s} @tab @ref{%s (plural)}\n",s,s); 8963 break; 8964 case COMM_PLURAL: 8965 fprintf(outfile,"@item @ref{%s} @tab %s\n",s,s); 8966 break; 8967 } 8968 #endif 8969 #ifdef HAVE_RINGS 8970 #endif 8971 } 8972 } 8973 i++; 8974 } 8975 fprintf(outfile,"@c ---------------------------------------------\n"); 8976 i=0; 8977 while ((op=dArith2[i].cmd)!=0) 8978 { 8979 if (dArith2[i].p!=jjWRONG2) 8980 { 8981 const char *s = iiTwoOps(op); 8982 if ((s!=NULL) && (isalpha(s[0])) && (strcmp(s,old_s)!=0)) 8983 { 8984 old_s=s; 8985 #ifdef HAVE_PLURAL 8986 switch (dArith2[i].valid_for & PLURAL_MASK) 8987 { 8988 case NO_PLURAL: 8989 fprintf(outfile,"@item @ref{%s} @tab @code{---}\n",s); 8990 break; 8991 case ALLOW_PLURAL: 8992 fprintf(outfile,"@item @ref{%s} @tab @ref{%s (plural)}\n",s,s); 8993 break; 8994 case COMM_PLURAL: 8995 fprintf(outfile,"@item @ref{%s} @tab %s\n",s,s); 8996 break; 8997 } 8998 #endif 8999 #ifdef HAVE_RINGS 9000 #endif 9001 } 9002 } 9003 i++; 9004 } 9005 fprintf(outfile,"@c ---------------------------------------------\n"); 9006 i=0; 9007 while ((op=dArith3[i].cmd)!=0) 9008 { 9009 const char *s = iiTwoOps(op); 9010 if (dArith3[i].p!=jjWRONG3) 9011 { 9012 if ((s!=NULL) && (isalpha(s[0])) && (strcmp(s,old_s)!=0)) 9013 { 9014 old_s=s; 9015 #ifdef HAVE_PLURAL 9016 switch (dArith3[i].valid_for & PLURAL_MASK) 9017 { 9018 case NO_PLURAL: 9019 fprintf(outfile,"@item @ref{%s} @tab @code{---}\n",s); 9020 break; 9021 case ALLOW_PLURAL: 9022 fprintf(outfile,"@item @ref{%s} @tab @ref{%s (plural)}\n",s,s); 9023 break; 9024 case COMM_PLURAL: 9025 fprintf(outfile,"@item @ref{%s} @tab %s\n",s,s); 9026 break; 9027 } 9028 #endif 9029 #ifdef HAVE_RINGS 9030 #endif 9031 } 9032 } 9033 i++; 9034 } 9035 fprintf(outfile,"@c ---------------------------------------------\n"); 9036 i=0; 9037 while ((op=dArithM[i].cmd)!=0) 9038 { 9039 const char *s = iiTwoOps(op); 9040 if ((s!=NULL) && (isalpha(s[0])) && (strcmp(s,old_s)!=0)) 9041 { 9042 old_s=s; 9043 #ifdef HAVE_PLURAL 9044 switch (dArithM[i].valid_for & PLURAL_MASK) 9045 { 9046 case NO_PLURAL: 9047 fprintf(outfile,"@item @ref{%s} @tab @code{---}\n",s); 9048 break; 9049 case ALLOW_PLURAL: 9050 fprintf(outfile,"@item @ref{%s} @tab @ref{%s (plural)}\n",s,s); 9051 break; 9052 case COMM_PLURAL: 9053 fprintf(outfile,"@item @ref{%s} @tab %s\n",s,s); 9054 break; 9055 } 9056 #endif 9057 #ifdef HAVE_RINGS 9058 #endif 9059 } 9060 i++; 9061 } 9062 fprintf(outfile,"@c ---------------------------------------------\n"); 9063 fprintf(outfile,"@end table\n"); 9064 fclose(outfile); 9065 } 9066 /*-------------------------------------------------------------------*/ 9067 #else 7340 #define D(A) (A) 7341 #define IPARITH 7342 #include "table.h" 7343 9068 7344 #include <iparith.inc> 9069 #endif9070 7345 9071 7346 /*=================== operations with 2 args. ============================*/ … … 9073 7348 BOOLEAN iiExprArith2(leftv res, leftv a, int op, leftv b, BOOLEAN proccall) 9074 7349 { 9075 #ifndef GENTABLE9076 7350 memset(res,0,sizeof(sleftv)); 9077 7351 BOOLEAN call_failed=FALSE; … … 9280 7554 a->CleanUp(); 9281 7555 b->CleanUp(); 9282 #endif9283 7556 return TRUE; 9284 7557 } … … 9288 7561 BOOLEAN iiExprArith1(leftv res, leftv a, int op) 9289 7562 { 9290 #ifndef GENTABLE9291 7563 memset(res,0,sizeof(sleftv)); 9292 7564 BOOLEAN call_failed=FALSE; … … 9475 7747 } 9476 7748 a->CleanUp(); 9477 #endif9478 7749 return TRUE; 9479 7750 } … … 9483 7754 BOOLEAN iiExprArith3(leftv res, int op, leftv a, leftv b, leftv c) 9484 7755 { 9485 #ifndef GENTABLE9486 7756 memset(res,0,sizeof(sleftv)); 9487 7757 BOOLEAN call_failed=FALSE; … … 9690 7960 c->CleanUp(); 9691 7961 //Print("op: %d,result typ:%d\n",op,res->rtyp); 9692 #endif9693 7962 return TRUE; 9694 7963 } … … 9712 7981 BOOLEAN iiExprArithM(leftv res, leftv a, int op) 9713 7982 { 9714 #ifndef GENTABLE9715 7983 memset(res,0,sizeof(sleftv)); 9716 7984 … … 9830 8098 if (a!=NULL) a->CleanUp(); 9831 8099 //Print("op: %d,result typ:%d\n",op,res->rtyp); 9832 #endif9833 8100 return TRUE; 9834 8101 } … … 9837 8104 int IsCmd(const char *n, int & tok) 9838 8105 { 9839 #ifndef GENTABLE9840 8106 int i; 9841 8107 int an=1; … … 9930 8196 } 9931 8197 return sArithBase.sCmds[i].toktype; 9932 #else9933 return 0;9934 #endif9935 8198 } 9936 8199 static int iiTabIndex(const jjValCmdTab dArithTab, const int len, const int op) 9937 8200 { 9938 #ifndef GENTABLE9939 8201 int a=0; 9940 8202 int e=len; … … 9949 8211 while ( a <= e); 9950 8212 9951 #endif9952 8213 assume(0); 9953 8214 return 0; 9954 8215 } 9955 8216 9956 #ifdef GENTABLE9957 const char * Tok2Cmdname(int tok)9958 {9959 int i = 0;9960 if (tok < 0)9961 {9962 return cmds[0].name;9963 }9964 if (tok==COMMAND) return "command";9965 if (tok==ANY_TYPE) return "any_type";9966 if (tok==NONE) return "nothing";9967 //if (tok==IFBREAK) return "if_break";9968 //if (tok==VECTOR_FROM_POLYS) return "vector_from_polys";9969 //if (tok==ORDER_VECTOR) return "ordering";9970 //if (tok==REF_VAR) return "ref";9971 //if (tok==OBJECT) return "object";9972 //if (tok==PRINT_EXPR) return "print_expr";9973 if (tok==IDHDL) return "identifier";9974 while (cmds[i].tokval!=0)9975 {9976 if ((cmds[i].tokval == tok)&&(cmds[i].alias==0))9977 {9978 return cmds[i].name;9979 }9980 i++;9981 }9982 return cmds[0].name;9983 }9984 #else /* GENTABLE */9985 8217 const char * Tok2Cmdname(int tok) 9986 8218 { … … 10011 8243 return sArithBase.sCmds[0].name; 10012 8244 } 10013 #endif /* GENTABLE */10014 8245 10015 8246 … … 10065 8296 int i; 10066 8297 //printf("iiInitArithmetic()\n"); 10067 #ifndef GENTABLE10068 8298 memset(&sArithBase, 0, sizeof(sArithBase)); 10069 8299 iiInitCmdName(); … … 10095 8325 //iiArithRemoveCmd("mygcd"); 10096 8326 //iiArithAddCmd("kkk", 1, 1234, CMD_1); 10097 #endif /* !GENTABLE */10098 8327 return 0; 10099 8328 } … … 10145 8374 int iiArithFindCmd(const char *szName) 10146 8375 { 10147 #ifndef GENTABLE10148 8376 int an=0; 10149 8377 int i = 0,v = 0; … … 10202 8430 //Print("RET-2\n"); 10203 8431 return -2; 10204 #else10205 return 0;10206 #endif10207 8432 } 10208 8433 … … 10300 8525 return 0; 10301 8526 } 10302 10303 #ifdef GENTABLE10304 // some special cmds which do not fit in with the others, and10305 // nevertheless need to be transmitted10306 short ExtraCmds[] =10307 {10308 OPTION_CMD,10309 NAMES_CMD,10310 // RESERVEDNAME_CMD,10311 PROC_CMD,10312 MAP_CMD,10313 PACKAGE_CMD,10314 '=',10315 010316 };10317 10318 // This returns 1 if tok is a token which can appear in a Singular10319 // (quoted) command, and 0 otherwise10320 short IsCmdToken(short tok)10321 {10322 int i = 0;10323 // cmds with one arg10324 while (dArith1[i].cmd != 0)10325 if (dArith1[i].cmd == tok) return 1;10326 else i++;10327 10328 // cmds with two args10329 i=0;10330 while (dArith2[i].cmd != 0)10331 if (dArith2[i].cmd == tok) return 1;10332 else i++;10333 10334 // cmds with three args10335 i=0;10336 while (dArith3[i].cmd != 0)10337 if (dArith3[i].cmd == tok) return 1;10338 else i++;10339 10340 // cmds with many args10341 i=0;10342 while (dArithM[i].cmd != 0)10343 if (dArithM[i].cmd == tok) return 1;10344 else i++;10345 10346 // cmds which are somewhat special (like those having 0 args)10347 i=0;10348 while (ExtraCmds[i] != 0)10349 if (ExtraCmds[i] == tok) return 1;10350 else i++;10351 10352 return 0;10353 }10354 #endif -
Singular/ipassign.cc
rec58bd r56c789 704 704 } 705 705 /*=================== table =================*/ 706 struct sValAssign dAssign[]= 707 { 708 // proc res arg 709 {jiA_IDEAL, IDEAL_CMD, IDEAL_CMD } 710 ,{jiA_IDEAL_M, IDEAL_CMD, MATRIX_CMD } 711 ,{jiA_RESOLUTION,RESOLUTION_CMD,RESOLUTION_CMD } 712 ,{jiA_INT, INT_CMD, INT_CMD } 713 ,{jiA_1x1INTMAT, INT_CMD, INTMAT_CMD } 714 ,{jiA_IDEAL, MATRIX_CMD, MATRIX_CMD } 715 ,{jiA_MAP_ID, MAP_CMD, IDEAL_CMD } 716 ,{jiA_MAP, MAP_CMD, MAP_CMD } 717 ,{jiA_IDEAL, MODUL_CMD, MODUL_CMD } 718 ,{jiA_MODUL_P, MODUL_CMD, POLY_CMD } 719 ,{jiA_POLY, POLY_CMD, POLY_CMD } 720 ,{jiA_1x1MATRIX,POLY_CMD, MATRIX_CMD } 721 ,{jiA_QRING, QRING_CMD, IDEAL_CMD } 722 ,{jiA_RING, RING_CMD, RING_CMD } 723 ,{jiA_RING, QRING_CMD, QRING_CMD } 724 ,{jiA_STRING, STRING_CMD, STRING_CMD } 725 ,{jiA_PROC, PROC_CMD, STRING_CMD } 726 ,{jiA_PROC, PROC_CMD, PROC_CMD } 727 ,{jiA_POLY, VECTOR_CMD, VECTOR_CMD } 728 ,{jiA_INTVEC, INTVEC_CMD, INTVEC_CMD } 729 ,{jiA_INTVEC, INTMAT_CMD, INTMAT_CMD } 730 //,{jiA_INTVEC, INTMAT_CMD, INTVEC_CMD } 731 ,{jiA_NUMBER, NUMBER_CMD, NUMBER_CMD } 732 ,{jiA_BIGINT, BIGINT_CMD, BIGINT_CMD } 733 ,{jiA_LIST_RES, LIST_CMD, RESOLUTION_CMD } 734 ,{jiA_LIST, LIST_CMD, LIST_CMD } 735 ,{jiA_LINK, LINK_CMD, STRING_CMD } 736 ,{jiA_LINK, LINK_CMD, LINK_CMD } 737 #ifdef HAVE_FANS 738 ,{jiA_FAN, FAN_CMD, FAN_CMD } 739 ,{jiA_CONE, CONE_CMD, CONE_CMD } 740 #endif /* HAVE_FANS */ 741 ,{jiA_PACKAGE, PACKAGE_CMD, PACKAGE_CMD } 742 ,{NULL, 0, 0 } 743 }; 744 struct sValAssign_sys dAssign_sys[]= 745 { 746 // sysvars: 747 {jjECHO, VECHO, INT_CMD } 748 ,{jjPRINTLEVEL, VPRINTLEVEL, INT_CMD } 749 ,{jjCOLMAX, VCOLMAX, INT_CMD } 750 ,{jjTIMER, VTIMER, INT_CMD } 751 #ifdef HAVE_RTIMER 752 ,{jjRTIMER, VRTIMER, INT_CMD } 753 #endif 754 ,{jjMAXDEG, VMAXDEG, INT_CMD } 755 ,{jjMAXMULT, VMAXMULT, INT_CMD } 756 ,{jjTRACE, TRACE, INT_CMD } 757 ,{jjSHORTOUT, VSHORTOUT, INT_CMD } 758 ,{jjMINPOLY, VMINPOLY, NUMBER_CMD } 759 ,{jjNOETHER, VNOETHER, POLY_CMD } 760 ,{NULL, 0, 0 } 761 }; 706 #define IPASSIGN 707 #define D(A) A 708 #include <Singular/table.h> 762 709 /*=================== operations ============================*/ 763 710 /*2 -
Singular/ipconv.cc
rec58bd r56c789 247 247 // automatic conversions: 248 248 // 249 struct sConvertTypes dConvertTypes[] = 250 { 251 // input type output type convert procedure 252 // int -> bigint 253 { INT_CMD, BIGINT_CMD, iiI2BI , NULL }, 254 // int -> number 255 { INT_CMD, NUMBER_CMD, iiI2N , NULL }, 256 { BIGINT_CMD, NUMBER_CMD, iiBI2N , NULL }, 257 // int -> poly 258 { INT_CMD, POLY_CMD, iiI2P , NULL }, 259 { BIGINT_CMD, POLY_CMD, iiBI2P , NULL }, 260 // int -> vector 261 { INT_CMD, VECTOR_CMD, iiI2V , NULL }, 262 { BIGINT_CMD, VECTOR_CMD, iiBI2V , NULL }, 263 // int -> ideal 264 { INT_CMD, IDEAL_CMD, iiI2Id , NULL }, 265 { BIGINT_CMD, IDEAL_CMD, iiBI2Id , NULL }, 266 // int -> matrix 267 { INT_CMD, MATRIX_CMD, iiI2Id , NULL }, 268 { BIGINT_CMD, MATRIX_CMD, iiBI2Id , NULL }, 269 // int -> intvec 270 { INT_CMD, INTVEC_CMD, iiI2Iv , NULL }, 271 // intvec -> intmat 272 { INTVEC_CMD, INTMAT_CMD, iiDummy, NULL }, 273 // intvec -> matrix 274 { INTVEC_CMD, MATRIX_CMD, iiIm2Ma , NULL }, 275 // intmat -> matrix 276 { INTMAT_CMD, MATRIX_CMD, iiIm2Ma , NULL }, 277 // number -> poly 278 { NUMBER_CMD, POLY_CMD, iiN2P , NULL }, 279 // number -> matrix 280 { NUMBER_CMD, MATRIX_CMD, iiN2Ma , NULL }, 281 // number -> ideal 282 // number -> vector 283 // number -> module 284 // poly -> number 285 // poly -> ideal 286 { POLY_CMD, IDEAL_CMD, iiP2Id , NULL }, 287 // poly -> vector 288 { POLY_CMD, VECTOR_CMD, iiP2V , NULL }, 289 // poly -> matrix 290 { POLY_CMD, MATRIX_CMD, iiP2Id , NULL }, 291 // vector -> module 292 { VECTOR_CMD, MODUL_CMD, iiP2Id , NULL }, 293 // vector -> matrix 294 { VECTOR_CMD, MATRIX_CMD, iiV2Ma , NULL }, 295 // ideal -> module 296 { IDEAL_CMD, MODUL_CMD, iiMa2Mo , NULL }, 297 // ideal -> matrix 298 { IDEAL_CMD, MATRIX_CMD, iiDummy , NULL }, 299 // module -> matrix 300 { MODUL_CMD, MATRIX_CMD, iiMo2Ma , NULL }, 301 // matrix -> ideal 302 // matrix -> module 303 { MATRIX_CMD, MODUL_CMD, iiMa2Mo , NULL }, 304 // intvec 305 // link 306 { STRING_CMD, LINK_CMD, iiS2Link , NULL }, 307 // resolution -> list 308 { RESOLUTION_CMD, LIST_CMD, NULL /*iiR2L*/ , iiR2L_l }, 309 // list -> resolution 310 { LIST_CMD, RESOLUTION_CMD, iiL2R , NULL }, 311 // end of list 312 { 0, 0, NULL , NULL } 313 }; 314 249 #define IPCONV 250 #define D(A) A 251 #include <Singular/table.h> 315 252 /*2 316 253 * try to convert 'input' of type 'inputType' to 'output' of type 'outputType' -
Singular/mpsr_Tok.cc
rec58bd r56c789 60 60 } 61 61 62 #ifdef GENTABLE63 // This is the array which holds all mpsr_cmds64 // It is initialized in mpsr_tok.inc65 static mpsr_cmd mpsr_cmds[MAX_TOK];66 67 // This is the array which stores the mapping from token to an mpsr_cmd68 // A value is either an index into mpsr_cmds, or MAX_TOK69 static short tok2mp[MAX_TOK];70 71 // This is the array which stores the mapping from (dict, cop) to a72 // mpsr_cmd. First index mpdict2srdict(dict), second is cop73 static short mp2tok[MAX_SR_DICT][MAX_COP];74 75 #else76 62 // Here are the actual definition of these token tables 77 63 #include"mpsr_Tok.inc" 78 #endif79 64 80 65 … … 156 141 } 157 142 158 159 #ifdef GENTABLE160 161 #include"ipshell.h" // has declarations of dArith162 163 164 // This the list of all tokens which have an MP representation as a165 // cop in the Singular dictionary166 short sr_cmds[] =167 {168 OPTION_CMD,169 NAMES_CMD,170 ATTRIB_CMD,171 CHARSTR_CMD,172 CLOSE_CMD,173 DEF_CMD,174 DEGREE_CMD,175 DEFINED_CMD,176 E_CMD,177 EXECUTE_CMD,178 FREEMODULE_CMD,179 INT_CMD,180 INTERRED_CMD,181 INTMAT_CMD,182 INTVEC_CMD,183 IS_RINGVAR,184 KILLATTR_CMD,185 MAP_CMD,186 MEMORY_CMD,187 MONITOR_CMD,188 NAMEOF_CMD,189 NUMBER_CMD,190 NPARS_CMD,191 NVARS_CMD,192 OPEN_CMD,193 ORDSTR_CMD,194 PAR_CMD,195 PARSTR_CMD,196 PARDEG_CMD,197 POLY_CMD,198 PRINT_CMD,199 READ_CMD,200 SORTVEC_CMD,201 STRING_CMD,202 SYSTEM_CMD,203 TYPEOF_CMD,204 VECTOR_CMD,205 VAR_CMD,206 VARSTR_CMD,207 WEIGHT_CMD,208 '(',209 COEF_CMD,210 DELETE_CMD,211 FETCH_CMD,212 FIND_CMD,213 IMAP_CMD,214 INSERT_CMD,215 SIMPLIFY_CMD,216 SRES_CMD,217 DBPRINT_CMD,218 TEST_CMD,219 PROC_CMD,220 MSTD_CMD,221 RESERVEDNAME_CMD,222 WRITE_CMD,223 QRING_CMD,224 FGLM_CMD,225 FGLMQUOT_CMD,226 DUMP_CMD,227 GETDUMP_CMD,228 STATUS_CMD,229 LIB_CMD,230 PACKAGE_CMD231 };232 233 // struct used for specifying the cmd <-> cop relations234 typedef struct cmd_cop235 {236 short cmd;237 MP_Common_t cop;238 } cmd_op;239 240 typedef struct cmd_dictcop241 {242 MP_DictTag_t dict;243 cmd_op cmd_ops[255];244 } cmd_dictcop;245 246 cmd_dictcop cmd_dictcops[] =247 {248 {249 MP_PolyDict,250 // This is the list of all tokens which have an MP representation as a251 // cop in the Poly dictionary252 {253 {BETTI_CMD, MP_CopPolyBetti},254 {CHARACTERISTIC_CMD, MP_CopPolyChar},255 {CHAR_SERIES_CMD, MP_CopPolyCharSeries},256 {CONTENT_CMD, MP_CopPolyClearDenom },257 {DEG_CMD, MP_CopPolyDeg},258 {DIM_CMD, MP_CopPolyDim},259 {FAC_CMD, MP_CopPolyFactorize},260 {FACSTD_CMD, MP_CopPolyFacStd},261 {HILBERT_CMD, MP_CopPolyHilb},262 {HOMOG_CMD, MP_CopPolyHomog},263 {INDEPSET_CMD, MP_CopPolyInDepSet},264 {IDEAL_CMD, MP_CopPolyIdeal},265 {KBASE_CMD, MP_CopPolyKbase},266 {LEAD_CMD, MP_CopPolyLead},267 {LEADCOEF_CMD, MP_CopPolyLeadCoef},268 {LEADEXP_CMD, MP_CopPolyLeadExp},269 {MAXID_CMD, MP_CopPolyMaxIdeal},270 {MINBASE_CMD, MP_CopPolyMinBase},271 {MINRES_CMD, MP_CopPolyMinRes},272 {MODUL_CMD, MP_CopPolyModule},273 {MULTIPLICITY_CMD, MP_CopPolyMultiplicity},274 {ORD_CMD, MP_CopPolyOrder},275 {PRUNE_CMD, MP_CopPolyPrune},276 {QHWEIGHT_CMD, MP_CopPolyQHWeight},277 {REGULARITY_CMD, MP_CopPolyRegularity},278 {RESULTANT_CMD, MP_CopPolyResultant},279 {STD_CMD, MP_CopPolyStd},280 {SYZYGY_CMD, MP_CopPolySyz},281 {VDIM_CMD, MP_CopPolyVdim},282 {COEFFS_CMD, MP_CopPolyCoeffs},283 {CONTRACT_CMD, MP_CopPolyContract},284 {ELIMINATION_CMD, MP_CopPolyEliminate},285 {JET_CMD, MP_CopPolyJet},286 {LIFT_CMD, MP_CopPolyLift},287 {LIFTSTD_CMD, MP_CopPolyLiftstd},288 {MODULO_CMD, MP_CopPolyModulo},289 {MRES_CMD, MP_CopPolyMres},290 {QUOTIENT_CMD, MP_CopPolyQuotient},291 {REDUCE_CMD, MP_CopPolyReduce},292 {PREIMAGE_CMD, MP_CopPolyPreimage},293 {RES_CMD, MP_CopPolyRes},294 {RING_CMD, MP_CopPolyRing},295 {MAX_TOK, 0}296 }297 },298 {299 MP_NumberDict,300 // This is the list of all tokens which have an MP representation as a301 // cop in the Number dictionary302 {303 {PRIME_CMD, MP_CopNumberPrime},304 {EXTGCD_CMD, MP_CopNumberExtGcd},305 {GCD_CMD, MP_CopNumberGcd},306 {RANDOM_CMD, MP_CopNumberRandom},307 {MAX_TOK, 0}308 }309 },310 {311 MP_MatrixDict,312 // This is the list of all tokens which have an MP representation as a313 // cop in the Matrix dictionary314 {315 {BAREISS_CMD, MP_CopMatrixBareiss},316 {COLS_CMD, MP_CopMatrixCols},317 {DET_CMD, MP_CopMatrixDet},318 {JACOB_CMD, MP_CopMatrixJacobi},319 {MATRIX_CMD, MP_CopMatrixDenseMatrix},320 {ROWS_CMD, MP_CopMatrixRows},321 {TRACE_CMD, MP_CopMatrixTrace},322 {TRANSPOSE_CMD, MP_CopMatrixTranspose},323 {KOSZUL_CMD, MP_CopMatrixKoszul},324 {MINOR_CMD, MP_CopMatrixMinor},325 {WEDGE_CMD, MP_CopMatrixWedge},326 {MAX_TOK, 0}327 }328 },329 {330 MP_BasicDict,331 // This is the list of all tokens which have an MP representation as a332 // cop in the MP Basic dictionary333 {334 {PLUSPLUS, MP_CopBasicInc},335 {MINUSMINUS, MP_CopBasicDec},336 {COUNT_CMD, MP_CopBasicSize},337 {LIST_CMD, MP_CopBasicList},338 {'+', MP_CopBasicAdd},339 {'-', MP_CopBasicMinus},340 {'*', MP_CopBasicMult},341 {'/', MP_CopBasicDiv},342 {'%', MP_CopBasicMod},343 {'^', MP_CopBasicPow},344 {GE, MP_CopBasicGreaterEqual},345 {'<', MP_CopBasicGreater},346 {LE, MP_CopBasicLessEqual},347 {'>', MP_CopBasicLess},348 {'&', MP_CopBasicAnd},349 {'|', MP_CopBasicOr},350 {'=', MP_CopBasicAssign},351 {EQUAL_EQUAL, MP_CopBasicEqual},352 {NOTEQUAL, MP_CopBasicNotEqual},353 {DOTDOT, MP_CopBasicRange},354 {'[', MP_CopBasicIndex},355 {DIFF_CMD, MP_CopBasicDiff},356 {INTERSECT_CMD, MP_CopBasicInterSect},357 {SUBST_CMD, MP_CopBasicSubst},358 {NOT, MP_CopBasicNot},359 {COLONCOLON, MP_CopBasicPackage},360 {MAX_TOK, 0}361 }362 }363 };364 365 366 // Given a Singular token, find matching (dict,op): Return 1 if one is367 // found, 0, otherwise368 static short GetMPDictTok(short tok, MP_DictTag_t *dict, MP_Common_t *cop)369 {370 short i, l, j;371 cmd_op *cmd_ops;372 373 // first, look through Singular specific commands374 l = sizeof(sr_cmds)/sizeof(short);375 if (l > MAX_COP)376 {377 fprintf(stderr,378 "Error: There are more than 256 entries in MP_SingularDict\n");379 exit(1);380 }381 for (i=0; i<l; i++)382 if (sr_cmds[i] == tok)383 {384 *dict = MP_SingularDict;385 *cop = i;386 return 1;387 }388 389 // look through all the other dicts390 for (j=0; j<MAX_SR_DICT-1; j++)391 {392 cmd_ops = cmd_dictcops[j].cmd_ops;393 for (i=0; (cmd_ops[i]).cmd != MAX_TOK; i++)394 {395 if (i > MAX_COP)396 {397 fprintf(stderr,398 "Error: There are more than 256 entries in dict %d's\n",j);399 exit(1);400 }401 if (cmd_ops[i].cmd == tok)402 {403 *dict = cmd_dictcops[j].dict;404 *cop = cmd_ops[i].cop;405 return 1;406 }407 }408 }409 return 0;410 }411 412 413 // This actually generates the tables of mpsr_tok.inc414 char *mpsr_Tok_inc;415 void mpsr_ttGen()416 {417 mpsr_cmd mpsrcmds[MAX_TOK];418 short tok2mp[MAX_TOK];419 short mp2tok[MAX_SR_DICT][MAX_COP];420 short max_cmd = 0, i, j;421 MP_Common_t cop;422 FILE *outfile;423 MP_DictTag_t dict;424 425 426 // init all arrays427 for (i=0; i<MAX_TOK; i++)428 {429 mpsrcmds[i].tok = MAX_TOK;430 tok2mp[i] = MAX_TOK;431 }432 for (i=0; i<MAX_SR_DICT; i++)433 for (j=0; j<MAX_COP; j++)434 mp2tok[i][j] = MAX_TOK;435 436 // Now go through all the token and test them437 for (i=0; i<MAX_TOK; i++)438 {439 if (IsCmdToken(i))440 {441 if (GetMPDictTok(i, &dict, &cop))442 {443 mpsrcmds[max_cmd].tok = i;444 mpsrcmds[max_cmd].dict = dict;445 mpsrcmds[max_cmd].cop = cop;446 tok2mp[i] = max_cmd;447 mp2tok[mpdict2srdict(dict)][cop] = i;448 max_cmd++;449 }450 else451 {452 fprintf(stderr, "Warning: mpsr_ttGen: Unknown Cmd Token: %d(%s)\n",453 i, iiTwoOps(i));454 }455 }456 }457 458 // Generate the template file459 mpsr_Tok_inc=omStrDup("mpsr_Tok.xxxxxxxx");460 int pid=getpid();461 mpsr_Tok_inc[8]=(pid %10)+'0'; pid/=10;462 mpsr_Tok_inc[9]=(pid %10)+'0'; pid/=10;463 mpsr_Tok_inc[10]=(pid %10)+'0'; pid/=10;464 mpsr_Tok_inc[11]=(pid %10)+'0'; pid/=10;465 mpsr_Tok_inc[12]=(pid %10)+'0'; pid/=10;466 mpsr_Tok_inc[13]=(pid %10)+'0';467 468 outfile = myfopen(mpsr_Tok_inc, "w");469 if (outfile == NULL)470 {471 fprintf(stderr, "Error: mpsr_ttGen: Cannot open file mpsr_Tok.inc\n");472 exit(1);473 }474 475 // header476 fprintf(outfile,477 "/***************************************************************\n"478 "*\n"479 "* File: mpsr_tok.inc\n"480 "* Purpose: tables for mapping Singular cmds to/from MP (dict, op)\n"481 "*\n"482 "* THIS FILE WAS AUTOMATICALLY GENERATED BY mpsr_ttGen(). DO NOT EDIT!\n"483 "*\n"484 "***************************************************************/\n"485 "#ifndef MPSR_STRING_TABLES\n"486 "mpsr_cmd mpsr_cmds[] =\n"487 "{\n"488 " { %d,\t %d,\t %d }", mpsrcmds[0].tok, mpsrcmds[0].dict, mpsrcmds[0].cop);489 490 // mpsrcmds491 for (i=1; i<max_cmd; i++)492 {493 fprintf(outfile, ",\n { %d,\t %d,\t %d }",494 mpsrcmds[i].tok, mpsrcmds[i].dict, mpsrcmds[i].cop);495 }496 fprintf(outfile,"\n};\n\n");497 498 // tok2mp499 fprintf(outfile, "short tok2mp[] = { %d", tok2mp[0]);500 for (i=1; i<MAX_TOK; i++)501 fprintf(outfile, ", %d", tok2mp[i]);502 fprintf(outfile, "};\n\n");503 504 // mp2tok505 fprintf(outfile, "short mp2tok[MAX_SR_DICT][MAX_COP] = \n{");506 for (i=0; i<MAX_SR_DICT; i++)507 {508 fprintf(outfile, "\n{\n");509 for (j=0; j<MAX_COP; j++)510 {511 fprintf(outfile, " %d",mp2tok[i][j]);512 if (j!=MAX_COP-1) fprintf(outfile, ",");513 }514 if (i!=MAX_SR_DICT-1) fprintf(outfile, "},");515 else fprintf(outfile, "}");516 }517 fprintf(outfile,"\n};\n\n");518 519 fprintf(outfile, "#else /* MPSR_STRING_TABLE */\n"520 "mpsr_cmd mpsr_cmds[] =\n"521 "{\n"522 "{ \"%s\",\t %d,\t %d }",523 iiTwoOps(mpsrcmds[0].tok), mpsrcmds[0].dict, mpsrcmds[0].cop);524 525 for (i=1; i<max_cmd; i++)526 {527 fprintf(outfile, ",\n { \"%s\",\t %d,\t %d }",528 iiTwoOps(mpsrcmds[i].tok), mpsrcmds[i].dict, mpsrcmds[i].cop);529 }530 fprintf(outfile, ",\n { NULL, \t 0, \t 0}");531 fprintf(outfile,"\n};\n\n#endif /* ! MPSR_STRING_TABLE */");532 533 fclose(outfile);534 } // That's all535 536 #endif // GENTABLE537 538 #else // NOT HAVE_MPSR539 540 #ifdef GENTABLE541 542 // simply touch mpsr_Tok.inc so that Make does not get confused543 #if !defined(HPUX_9)544 extern "C" int system(char *);545 #else546 #include <stdio.h>547 #endif548 549 void mpsr_ttGen()550 {551 system("touch mpsr_Tok.xx");552 }553 #endif554 555 143 #endif // HAVE_MPSR
Note: See TracChangeset
for help on using the changeset viewer.