17 #include "factory/factory.h" 19 #ifdef TIME_WITH_SYS_TIME 21 # ifdef HAVE_SYS_TIME_H 22 # include <sys/time.h> 25 # ifdef HAVE_SYS_TIME_H 26 # include <sys/time.h> 31 #ifdef HAVE_SYS_TIMES_H 32 #include <sys/times.h> 141 #ifndef MAKE_DISTRIBUTION 142 #define HAVE_EXTENDED_SYSTEM 1 159 #ifdef HAVE_SIMPLEIPC 167 #ifndef MAKE_DISTRIBUTION 178 int n = singularMatrix->
rows();
180 unsigned long **longMatrix = 0;
181 longMatrix =
new unsigned long *[n] ;
182 for (
int i = 0 ;
i < n;
i++)
183 longMatrix[
i] =
new unsigned long [n];
185 for (
int r = 0; r < n; r++)
186 for (
int c = 0; c < n; c++)
188 poly
p=
MATELEM(singularMatrix, r + 1, c + 1);
198 longMatrix[r][c] = (
unsigned long)entryAsInt;
213 if ((
int)polyCoeffs[
i] != 0)
235 const char *sys_cmd=(
char *)(args->
Data());
240 if (strcmp(sys_cmd,
"nblocks") == 0)
262 r = (ring) h->
Data();
269 if(strcmp(sys_cmd,
"version")==0)
277 if(strcmp(sys_cmd,
"alarm")==0)
284 struct itimerval t,o;
285 memset(&t,0,
sizeof(t));
286 t.it_value.tv_sec =(unsigned)((
unsigned long)h->
Data());
287 setitimer(ITIMER_VIRTUAL,&t,&o);
295 if(strcmp(sys_cmd,
"cpu")==0)
298 #ifdef _SC_NPROCESSORS_ONLN 299 cpu=sysconf(_SC_NPROCESSORS_ONLN);
300 #elif defined(_SC_NPROCESSORS_CONF) 301 cpu=sysconf(_SC_NPROCESSORS_CONF);
303 res->
data=(
void *)cpu;
309 if(strcmp(sys_cmd,
"executable")==0)
315 if(s==
NULL) s=(
char*)
"";
324 if(strcmp(sys_cmd,
"flatten")==0)
337 if(strcmp(sys_cmd,
"unflatten")==0)
350 if(strcmp(sys_cmd,
"neworder")==0)
364 if(strcmp(sys_cmd,
"nc_hilb") == 0)
372 i = (ideal)h->
Data();
375 WerrorS(
"nc_Hilb:ideal expected");
380 lV = (int)(
long)h->
Data();
383 WerrorS(
"nc_Hilb:int expected");
389 if((
int)(
long)h->
Data() == 1)
391 else if((
int)(long)h->
Data() == 2)
396 trunDegHs = (
int)(long)h->
Data();
401 WerrorS(
"nc_Hilb:int 1,2, total degree for the truncation, and a string for printing the details are expected");
410 if(strcmp(sys_cmd,
"rcolon") == 0)
415 ideal
i = (ideal)h->
Data();
417 poly
w=(poly)h->
Data();
419 int lV = (int)(
long)h->
Data();
430 if(strcmp(sys_cmd,
"sh")==0)
434 WerrorS(
"shell execution is disallowed in restricted mode");
447 if(strcmp(sys_cmd,
"reduce_bound")==0)
457 p = (poly)h->
CopyD();
461 pid = (ideal)h->
CopyD();
476 if(strcmp(sys_cmd,
"uname")==0)
484 if(strcmp(sys_cmd,
"with")==0)
494 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else 495 char *
s=(
char *)h->
Data();
508 #ifdef TEST_MAC_ORDER 513 #ifdef HAVE_DYNAMIC_LOADING 536 if (strcmp(sys_cmd,
"browsers")==0)
546 if (strcmp(sys_cmd,
"pid")==0)
549 res->
data=(
void *)(
long) getpid();
554 if (strcmp(sys_cmd,
"getenv")==0)
572 if (strcmp(sys_cmd,
"setenv")==0)
589 WerrorS(
"setenv not supported on this platform");
595 if (strcmp(sys_cmd,
"Singular") == 0)
604 if (strcmp(sys_cmd,
"SingularLib") == 0)
614 if (strstr(sys_cmd,
"--") == sys_cmd)
616 if (strcmp(sys_cmd,
"--") == 0)
624 Werror(
"Unknown option %s", sys_cmd);
625 WerrorS(
"Use 'system(\"--\");' for listing of available options");
640 const char *r=(
const char*)
feOptSpec[opt].value;
654 WerrorS(
"Need string or int argument to set option value");
657 const char* errormsg;
662 Werror(
"Need string argument to set value of option %s", sys_cmd);
666 if (errormsg !=
NULL)
667 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)h->
Data()), errormsg);
672 if (errormsg !=
NULL)
673 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*) h->
Data(), errormsg);
680 if (strcmp(sys_cmd,
"HC")==0)
688 if(strcmp(sys_cmd,
"random")==0)
711 if (strcmp(sys_cmd,
"std_syz") == 0)
717 i1=(ideal)h->
CopyD();
723 i2=(int)((
long)h->
Data());
732 if (strcmp(sys_cmd,
"denom_list")==0)
741 if(strcmp(sys_cmd,
"complexNearZero")==0)
748 WerrorS(
"unsupported ground field!");
766 if(strcmp(sys_cmd,
"getPrecDigits")==0)
771 WerrorS(
"unsupported ground field!");
782 if(strcmp(sys_cmd,
"lduDecomp")==0)
789 poly
l; poly u; poly prodLU;
790 lduDecomp(aMat, pMat, lMat, dMat, uMat, l, u, prodLU);
801 res->
data = (
char *)L;
811 if(strcmp(sys_cmd,
"lduSolve")==0)
852 Werror(
"first matrix (%d x %d) is not quadratic",
858 Werror(
"second matrix (%d x %d) is not quadratic",
864 Werror(
"third matrix (%d x %d) is not quadratic",
870 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
877 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
882 bVec, xVec, homogSolSpace);
905 if (strcmp(sys_cmd,
"shared") == 0)
907 #ifndef SI_COUNTEDREF_AUTOLOAD 914 else if (strcmp(sys_cmd,
"reference") == 0)
916 #ifndef SI_COUNTEDREF_AUTOLOAD 925 #ifdef HAVE_SIMPLEIPC 926 if (strcmp(sys_cmd,
"semaphore")==0)
939 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
946 if (strcmp(sys_cmd,
"reserve")==0)
954 res->
data=(
void*)(
long)
p;
961 if (strcmp(sys_cmd,
"reservedLink")==0)
970 if (strcmp(sys_cmd,
"install")==0)
983 if (strcmp(sys_cmd,
"newstruct")==0)
989 char *n=(
char*)h->
Data();
996 newstruct_desc desc=(newstruct_desc)bb->data;
1000 else Werror(
"'%s' is not a newstruct",n);
1002 else Werror(
"'%s' is not a blackbox object",n);
1008 if (strcmp(sys_cmd,
"blackbox")==0)
1016 if (strcmp(sys_cmd,
"absFact") == 0)
1033 l->
m[0].
data=(
void *)f;
1035 l->
m[1].
data=(
void *)v;
1037 l->
m[2].
data=(
void*) mipos;
1039 l->
m[3].
data=(
void*) (
long) n;
1040 res->
data=(
void *)l;
1049 if (strcmp(sys_cmd,
"LLL") == 0)
1072 #if __FLINT_RELEASE >= 20500 1073 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1094 WerrorS(
"matrix,int or bigint,int expected");
1099 if(((
int)((
long)(h->
next->
Data())) != 0) && (
int)((long)(h->
next->
Data()) != 1))
1101 WerrorS(
"int is different from 0, 1");
1126 for(
int i = 1;
i<=m->
rows();
i++)
1131 m = singflint_LLL(m,T);
1144 for(
int i = 1;
i<=m->
rows();
i++)
1146 m = singflint_LLL(m,T);
1167 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1172 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1177 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1182 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1187 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1192 if(strcmp(sys_cmd,
"pcvDim")==0)
1197 if(strcmp(sys_cmd,
"pcvBasis")==0)
1204 #ifdef HAVE_EIGENVAL 1205 if(strcmp(sys_cmd,
"hessenberg")==0)
1212 #ifdef HAVE_EIGENVAL 1213 if(strcmp(sys_cmd,
"eigenvals")==0)
1220 #ifdef HAVE_EIGENVAL 1221 if(strcmp(sys_cmd,
"rowelim")==0)
1228 #ifdef HAVE_EIGENVAL 1229 if(strcmp(sys_cmd,
"rowcolswap")==0)
1237 if(strcmp(sys_cmd,
"gmsnf")==0)
1239 return gmsNF(res,h);
1244 if(strcmp(sys_cmd,
"contributors") == 0)
1248 "Olaf Bachmann, Michael Brickenstein, Hubert Grassmann, Kai Krueger, Victor Levandovskyy, Wolfgang Neumann, Thomas Nuessler, Wilfred Pohl, Jens Schmidt, Mathias Schulze, Thomas Siebert, Ruediger Stobbe, Moritz Wenk, Tim Wichmann");
1253 #ifdef HAVE_SPECTRUM 1254 if(strcmp(sys_cmd,
"spectrum") == 0)
1274 if(strcmp(sys_cmd,
"semic") == 0)
1289 if(strcmp(sys_cmd,
"spadd") == 0)
1300 if(strcmp(sys_cmd,
"spmul") == 0)
1312 #define HAVE_SHEAFCOH_TRICKS 1 1314 #ifdef HAVE_SHEAFCOH_TRICKS 1315 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1321 int m = (int)( (
long)h->
Data() );
1333 if (strcmp(sys_cmd,
"twostd") == 0)
1338 I=(ideal)h->
CopyD();
1352 if (strcmp(sys_cmd,
"bracket") == 0)
1359 poly q=(poly)h->
Data();
1370 if (strcmp(sys_cmd,
"env")==0)
1374 ring r = (ring)h->
Data();
1381 WerrorS(
"`system(\"env\",<ring>)` expected");
1389 if (strcmp(sys_cmd,
"opp")==0)
1393 ring r=(ring)h->
Data();
1400 WerrorS(
"`system(\"opp\",<ring>)` expected");
1408 if (strcmp(sys_cmd,
"oppose")==0)
1413 ring Rop = (ring)h->
Data();
1426 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1436 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1443 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1466 if (strcmp(sys_cmd,
"walkInitials") == 0)
1470 WerrorS(
"system(\"walkInitials\", ideal) expected");
1473 res->
data = (
void*) walkInitials((ideal) h->
Data());
1483 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1489 res->
data = (
intvec*) walkAddIntVec(arg1, arg2);
1498 #ifdef MwaklNextWeight 1499 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1506 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1519 #endif //MWalkNextWeight 1523 if(strcmp(sys_cmd,
"Mivdp") == 0)
1527 WerrorS(
"system(\"Mivdp\", int) expected");
1532 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1536 int arg1 = (int) ((
long)(h->
Data()));
1546 if(strcmp(sys_cmd,
"Mivlp") == 0)
1550 WerrorS(
"system(\"Mivlp\", int) expected");
1555 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1559 int arg1 = (int) ((
long)(h->
Data()));
1570 if(strcmp(sys_cmd,
"MpDiv") == 0)
1574 poly arg1 = (poly) h->
Data();
1575 poly arg2 = (poly) h->
next->
Data();
1576 poly
result = MpDiv(arg1, arg2);
1587 if(strcmp(sys_cmd,
"MpMult") == 0)
1591 poly arg1 = (poly) h->
Data();
1592 poly arg2 = (poly) h->
next->
Data();
1593 poly
result = MpMult(arg1, arg2);
1603 if (strcmp(sys_cmd,
"MivSame") == 0)
1631 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1661 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1667 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1671 ideal
id = (ideal) h->
Data();
1683 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1687 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1700 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1704 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1707 int arg1 = (int) ((
long)(h->
Data()));
1717 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1721 ideal arg1 = (ideal) h->
Data();
1733 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1737 ideal arg1 = (ideal) h->
Data();
1749 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1753 ideal arg1 = (ideal) h->
Data();
1764 if(strcmp(sys_cmd,
"MivUnit") == 0)
1768 int arg1 = (int) ((
long)(h->
Data()));
1778 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1792 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1796 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1810 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1814 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1817 int arg1 = (int) ((
long)(h->
Data()));
1827 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1834 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1850 #ifdef MPertNextWeight 1851 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1857 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1862 ideal arg2 = (ideal) h->
next->
Data();
1870 #endif //MPertNextWeight 1874 #ifdef Mivperttarget 1875 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1879 ideal arg1 = (ideal) h->
Data();
1887 #endif //Mivperttarget 1891 if (strcmp(sys_cmd,
"Mwalk") == 0)
1898 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
1902 ideal arg1 = (ideal) h->
CopyD();
1908 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
1918 if (strcmp(sys_cmd,
"Mwalk") == 0)
1927 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
1931 ideal arg1 = (ideal) h->
Data();
1935 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
1942 if (strcmp(sys_cmd,
"Mpwalk") == 0)
1949 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
1952 ideal arg1 = (ideal) h->
Data();
1953 int arg2 = (int) (
long) h->
next->
Data();
1960 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
1970 if (strcmp(sys_cmd,
"Mrwalk") == 0)
1979 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
1983 ideal arg1 = (ideal) h->
Data();
1990 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1999 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2006 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2010 ideal arg1 = (ideal) h->
Data();
2011 int arg2 = (int) ((
long)(h->
next->
Data()));
2025 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2032 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2036 ideal arg1 = (ideal) h->
Data();
2040 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2050 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2057 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2061 ideal arg1 = (ideal) h->
Data();
2066 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2075 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2092 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2097 ideal arg1 = (ideal) h->
Data();
2103 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2110 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2119 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2123 ideal arg1 = (ideal) h->
Data();
2132 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2142 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2149 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2153 ideal arg1 = (ideal) h->
Data();
2166 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2173 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2177 ideal arg1 = (ideal) h->
Data();
2189 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2196 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2200 ideal arg1 = (ideal) h->
Data();
2214 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2223 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2229 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2232 ideal arg1 = (ideal) h->
Data();
2238 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2248 #ifndef MAKE_DISTRIBUTION 2259 #ifdef HAVE_EXTENDED_SYSTEM 2263 # include "hc_newton.h" 2274 char *sys_cmd=(
char *)(h->
Data());
2277 if (strcmp(sys_cmd,
"syz") == 0)
2281 const char *
s=(
const char *)h->
Data();
2282 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2284 else if (strcmp(s,
"posInT_FDegpLength")==0)
2286 else if (strcmp(s,
"posInT_pLength")==0)
2288 else if (strcmp(s,
"posInT0")==0)
2290 else if (strcmp(s,
"posInT1")==0)
2292 else if (strcmp(s,
"posInT2")==0)
2294 else if (strcmp(s,
"posInT11")==0)
2296 else if (strcmp(s,
"posInT110")==0)
2298 else if (strcmp(s,
"posInT13")==0)
2300 else if (strcmp(s,
"posInT15")==0)
2302 else if (strcmp(s,
"posInT17")==0)
2304 else if (strcmp(s,
"posInT17_c")==0)
2306 else if (strcmp(s,
"posInT19")==0)
2308 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2320 if(strcmp(sys_cmd,
"locNF")==0)
2325 poly
f=(poly)h->
Data();
2327 ideal
m=(ideal)h->
Data();
2330 int n=(int)((
long)h->
Data());
2395 if(strcmp(sys_cmd,
"p")==0)
2400 WarnS(
"Sorry: not available for release build!");
2406 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2410 int k = (int)(
long)h->
Data();
2418 if(strcmp(sys_cmd,
"r")==0)
2423 WarnS(
"Sorry: not available for release build!");
2435 if(strcmp(sys_cmd,
"changeRing")==0)
2439 for (
int i = 1;
i <= varN;
i++)
2442 sprintf(h,
"x%d",
i);
2447 res->
data = (
void*)0L;
2452 if(strcmp(sys_cmd,
"mtrack")==0)
2463 char *fn=(
char*) h->
Data();
2464 fd = fopen(fn,
"w");
2466 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2470 max = (int)(
long)h->
Data();
2475 if (fd !=
NULL) fclose(fd);
2479 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2486 if(strcmp(sys_cmd,
"backtrace")==0)
2494 #if !defined(OM_NDEBUG) 2496 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2500 PrintS(
"\n[om_Info]: \n");
2502 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name) 2503 OM_PRINT(MaxBytesSystem);
2504 OM_PRINT(CurrentBytesSystem);
2505 OM_PRINT(MaxBytesSbrk);
2506 OM_PRINT(CurrentBytesSbrk);
2507 OM_PRINT(MaxBytesMmap);
2508 OM_PRINT(CurrentBytesMmap);
2509 OM_PRINT(UsedBytes);
2510 OM_PRINT(AvailBytes);
2511 OM_PRINT(UsedBytesMalloc);
2512 OM_PRINT(AvailBytesMalloc);
2513 OM_PRINT(MaxBytesFromMalloc);
2514 OM_PRINT(CurrentBytesFromMalloc);
2515 OM_PRINT(MaxBytesFromValloc);
2516 OM_PRINT(CurrentBytesFromValloc);
2517 OM_PRINT(UsedBytesFromValloc);
2518 OM_PRINT(AvailBytesFromValloc);
2520 OM_PRINT(UsedPages);
2521 OM_PRINT(AvailPages);
2522 OM_PRINT(MaxRegionsAlloc);
2523 OM_PRINT(CurrentRegionsAlloc);
2528 PrintS(
"\n[om_Opts]: \n");
2529 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name) 2530 OM_PRINT(
"d", MinTrack);
2531 OM_PRINT(
"d", MinCheck);
2532 OM_PRINT(
"d", MaxTrack);
2533 OM_PRINT(
"d", MaxCheck);
2534 OM_PRINT(
"d", Keep);
2535 OM_PRINT(
"d", HowToReportErrors);
2536 OM_PRINT(
"d", MarkAsStatic);
2537 OM_PRINT(
"u", PagesPerRegion);
2538 OM_PRINT(
"p", OutOfMemoryFunc);
2539 OM_PRINT(
"p", MemoryLowFunc);
2540 OM_PRINT(
"p", ErrorHook);
2545 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2548 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2561 #if defined(PDEBUG) || defined(PDIV_DEBUG) 2562 if(strcmp(sys_cmd,
"pDivStat")==0)
2572 if(strcmp(sys_cmd,
"red")==0)
2587 if(strcmp(sys_cmd,
"fastcomb")==0)
2595 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2608 if(strcmp(sys_cmd,
"comb")==0)
2616 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2630 if(strcmp(sys_cmd,
"listall")==0)
2632 void listall(
int showproc);
2642 if(strcmp(sys_cmd,
"proclist")==0)
2644 void piShowProcList();
2652 if(strcmp(sys_cmd,
"newton")==0)
2658 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2661 poly
p=(poly)(h->
Data());
2667 for (i=0;pp!=
NULL;i++)
2694 L->
m[1].
data=(
void *)(
long)r.achse;
2696 L->
m[2].
data=(
void *)(
long)r.deg;
2700 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2702 int anz = r.anz_punkte;
2705 for (i=0; i<anz*
dim; i++)
2708 L->
m[4].
data=(
void *)v;
2715 (*w)[
i] = r.deg_tab[
i];
2718 while (r.deg_tab[i-1] != -2);
2720 L->
m[5].
data=(
void *)w;
2729 res->
data=(
void *)L;
2752 if (strcmp(sys_cmd,
"minpoly") == 0)
2756 Werror(
"expected exactly one argument: %s",
2757 "a square matrix with number entries");
2767 WerrorS(
"expected exactly one argument: " 2768 "a square matrix with number entries");
2775 res->
data = (
void *)theMinPoly;
2776 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2778 delete[] polyCoeffs;
2785 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2793 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2802 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2811 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2819 #if 0 // for testing only 2820 if (strcmp(sys_cmd,
"GF") == 0)
2837 if (strcmp(sys_cmd,
"svd") == 0)
2852 if (strcmp(sys_cmd,
"DLL") == 0)
2854 typedef void (*Void_Func)();
2855 typedef int (*Int_Func)(int);
2865 if (
f!=
NULL) printf(
"%d\n",
f(i));
2866 else PrintS(
"cannot find PlusDll\n");
2874 else PrintS(
"cannot find TestDll\n");
2881 #ifdef HAVE_RING2TOM 2883 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2886 poly
f = (poly) h->
Data();
2893 #ifdef HAVE_VANIDEAL 2894 if (strcmp(sys_cmd,
"createG0")==0)
2919 if (strcmp(sys_cmd,
"redNF_ring")==0)
2922 poly
f = (poly) h->
Data();
2924 ideal
G = (ideal) h->
Data();
2932 if (strcmp(sys_cmd,
"hilbroune") == 0)
2944 if (strcmp(sys_cmd,
"f5")==0)
2953 ideal
G = (ideal) h->
Data();
2957 opt = (int) (
long) h->
Data();
2965 plus = (int) (
long) h->
Data();
2973 termination = (int) (
long) h->
Data();
2979 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
2986 if (strcmp(sys_cmd,
"NF_ring")==0)
2989 poly
f = (poly) h->
Data();
2991 ideal
G = (ideal) h->
Data();
2997 if (strcmp(sys_cmd,
"spoly")==0)
3001 poly
g =
pCopy((poly) h->Data());
3008 if (strcmp(sys_cmd,
"testGB")==0)
3010 ideal I = (ideal) h->
Data();
3012 ideal GI = (ideal) h->
Data();
3021 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3027 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3035 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3042 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3048 #ifdef HAVE_RATGRING 3049 if (strcmp(sys_cmd,
"intratNF") == 0)
3064 I=(ideal)h->
CopyD();
3072 is=(int)((
long)(h->
Data()));
3080 for(k=0; k < id; k++)
3084 PrintS(
"starting redRat\n");
3102 if (strcmp(sys_cmd,
"ratNF") == 0)
3121 is=(int)((
long)(h->
Data()));
3136 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3154 is=(int)((
long)(h->
Data()));
3168 #endif // HAVE_RATGRING 3170 if (strcmp(sys_cmd,
"ratVar") == 0)
3187 return (start==0)||(end==0)||(start>end);
3191 if (strcmp(sys_cmd,
"unifastmult")==0)
3193 poly
f = (poly)h->
Data();
3195 poly
g=(poly)h->
Data();
3201 if (strcmp(sys_cmd,
"multifastmult")==0)
3203 poly
f = (poly)h->
Data();
3205 poly
g=(poly)h->
Data();
3211 if (strcmp(sys_cmd,
"mults")==0)
3218 if (strcmp(sys_cmd,
"fastpower")==0)
3221 poly
f = (poly)h->
Data();
3223 int n=(int)((
long)h->
Data());
3229 if (strcmp(sys_cmd,
"normalpower")==0)
3231 poly
f = (poly)h->
Data();
3233 int n=(int)((
long)h->
Data());
3239 if (strcmp(sys_cmd,
"MCpower")==0)
3242 poly
f = (poly)h->
Data();
3244 int n=(int)((
long)h->
Data());
3250 if (strcmp(sys_cmd,
"bit_subst")==0)
3253 poly outer = (poly)h->
Data();
3255 poly inner=(poly)h->
Data();
3262 if (strcmp(sys_cmd,
"gcd") == 0)
3278 char *
s=(
char *)h->
Data();
3293 if (strcmp(sys_cmd,
"subring") == 0)
3307 if (strcmp(sys_cmd,
"HNF") == 0)
3329 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3337 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3343 double error= atof (s);
3354 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3358 char* filename = (
char*)h->
Data();
3359 FILE*
f = fopen(filename,
"r");
3362 WerrorS(
"invalid file name (in paths use '/')");
3365 mpz_t
m; mpz_init(m);
3366 mpz_inp_str(m, f, 10);
3370 res->
data = (
void*)n;
3375 WerrorS(
"expected valid file name as a string");
3387 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3396 int validEntries = 0;
3397 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3399 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3400 sizeof(
int) * jvec->
rows()) == 0)
3402 if (validEntries == 0)
3406 r->
resize(validEntries + 1);
3407 (*r)[validEntries] = k + 1;
3413 res->
data = (
void*)r;
3418 WerrorS(
"expected two non-empty intvecs as arguments");
3429 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3437 int ir = ivec->
rows();
int jr = jvec->
rows();
3438 int r = jr;
if (ir < jr) r = ir;
3439 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3440 sizeof(
int) * r) != 0))
3443 res->
data = (
void*)(
long)r;
3448 WerrorS(
"expected two non-empty intvecs as arguments");
3454 if(strcmp(sys_cmd,
"henselfactors")==0)
3467 int xIndex = (int)(
long)h->
Data();
3468 int yIndex = (int)(
long)h->
next->
Data();
3480 res->
data = (
char *)L;
3485 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3492 if (strcmp(sys_cmd,
"astep") == 0)
3497 I=(ideal)h->
CopyD();
3510 if (strcmp(sys_cmd,
"PrintMat") == 0)
3520 a=(int)((
long)(h->
Data()));
3525 b=(int)((
long)(h->
Data()));
3540 metric=(int)((
long)(h->
Data()));
3551 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3564 if(strcmp(sys_cmd,
"NCGetType")==0)
3570 res->
data=(
void *)(-1L);
3577 if(strcmp(sys_cmd,
"ForceSCA")==0)
3584 b = (int)((
long)(h->
Data()));
3590 e = (int)((
long)(h->
Data()));
3601 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3613 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3625 if(strcmp(sys_cmd,
"test64")==0)
3641 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3647 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3650 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3652 n_SwitchChinRem=(int)(
long)h->
Data();
3658 if(strcmp(sys_cmd,
"LU")==0)
3668 res->
data=(
char*)bb;
3673 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3680 if(strcmp(sys_cmd,
"sort")==0)
3690 if(strcmp(sys_cmd,
"uniq")==0)
3700 if(strcmp(sys_cmd,
"GF")==0)
3705 int p=(int)(
long)h->
Data();
3723 if(strcmp(sys_cmd,
"power1")==0)
3728 res->
data=(
void *)g;
3732 if(strcmp(sys_cmd,
"power2")==0)
3735 poly
f=(poly)h->
Data();
3737 for(
int i=0;
i<2000;
i++)
3739 res->
data=(
void *)g;
3742 if(strcmp(sys_cmd,
"power3")==0)
3745 poly
f=(poly)h->
Data();
3756 poly p1536=
pMult(p1024,p512);
3757 poly p1792=
pMult(p1536,p256);
3758 poly p1920=
pMult(p1792,p128);
3759 poly p1984=
pMult(p1920,p64);
3760 poly p2000=
pMult(p1984,p16);
3761 res->
data=(
void *)p2000;
3786 #endif // HAVE_EXTENDED_SYSTEM
STATIC_VAR coordinates * points
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
ideal sm_UnFlatten(ideal a, int col, const ring R)
int posInT_pLength(const TSet set, const int length, LObject &p)
const CanonicalForm int s
This file provides miscellaneous functionality.
poly pFastPower(poly f, int n, ring r)
intvec * MivMatrixOrder(intvec *iv)
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
void p_DebugPrint(poly p, const ring r)
void factoryseed(int s)
random seed initializer
Class used for (list of) interpreter objects.
const char * omError2String(omError_t error)
ring rSubring(ring org_ring, sleftv *rv)
void resize(int new_length)
static CanonicalForm bound(const CFMatrix &M)
int posInT2(const TSet set, const int length, LObject &p)
matrix singntl_LLL(matrix m, const ring s)
BOOLEAN jjSORTLIST(leftv, leftv arg)
intvec * Mfpertvector(ideal G, intvec *ivtarget)
static void * feOptValue(feOptIndex opt)
matrix evRowElim(matrix M, int i, int j, int k)
ideal Mpwalk(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight, int nP, int reduction, int printout)
void henselFactors(const int xIndex, const int yIndex, const poly h, const poly f0, const poly g0, const int d, poly &f, poly &g)
Computes a factorization of a polynomial h(x, y) in K[[x]][y] up to a certain degree in x...
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
Compatiblity layer for legacy polynomial operations (over currRing)
void HilbertSeries_OrbitData(ideal S, int lV, bool IG_CASE, bool mgrad, bool odp, int trunDegHs)
int posInT1(const TSet set, const int length, LObject &p)
intvec * MivWeightOrderlp(intvec *ivstart)
short * iv2array(intvec *iv, const ring R)
BOOLEAN semicProc3(leftv res, leftv u, leftv v, leftv w)
number n_convFactoryNSingN(const CanonicalForm n, const coeffs r)
void sdb_edit(procinfo *pi)
EXTERN_VAR struct fe_option feOptSpec[]
static char * feResource(feResourceConfig config, int warn)
This file is work in progress and currently not part of the official Singular.
STATIC_VAR int nfMinPoly[16]
lists pcvPMulL(poly p, lists l1)
static const int SW_USE_EZGCD_P
set to 1 to use EZGCD over F_q
int setNCExtensions(int iMask)
void error(const char *fmt,...)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
#define omFreeSize(addr, size)
VAR int(* test_PosInT)(const TSet T, const int tl, LObject &h)
poly pFastPowerMC(poly f, int n, ring r)
omError_t om_InternalErrorStatus
poly nc_rat_ReduceSpolyNew(const poly p1, poly p2, int ishift, const ring r)
ideal id_TensorModuleMult(const int m, const ideal M, const ring rRing)
BOOLEAN spectrumProc(leftv result, leftv first)
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
int MivSame(intvec *u, intvec *v)
intvec * MivWeightOrderdp(intvec *ivstart)
void * dynl_sym(void *handle, const char *symbol)
BOOLEAN spmulProc(leftv result, leftv first, leftv second)
const char * feSetOptValue(feOptIndex opt, char *optarg)
void WerrorS(const char *s)
gmp_complex numbers based on
EXTERN_VAR int singular_homog_flag
bool complexNearZero(gmp_complex *c, int digits)
void lduDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &dMat, matrix &uMat, poly &l, poly &u, poly &lTimesU)
LU-decomposition of a given (m x n)-matrix with performing only those divisions that yield zero remai...
int testGB(ideal I, ideal GI)
int posInT15(const TSet set, const int length, LObject &p)
CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
matrix evSwap(matrix M, int i, int j)
Creation data needed for finite fields.
int posInT0(const TSet, const int length, LObject &)
void * dynl_open(char *filename)
idhdl get(const char *s, int lev)
intvec * MPertVectorslp(ideal G, intvec *ivtarget, int pdeg)
void printBlackboxTypes()
list all defined type (for debugging)
void feStringAppendBrowsers(int warn)
ideal Mfwalk(ideal G, intvec *ivstart, intvec *ivtarget, int reduction, int printout)
matrix mp_Transp(matrix a, const ring R)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
bool sca_Force(ring rGR, int b, int e)
unsigned long * computeMinimalPolynomial(unsigned long **matrix, unsigned n, unsigned long p)
#define pGetExp(p, i)
Exponent.
int posInT11(const TSet set, const int length, LObject &p)
static int rBlocks(ring r)
int posInT17_c(const TSet set, const int length, LObject &p)
Coefficient rings, fields and other domains suitable for Singular polynomials.
ideal MAltwalk1(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight)
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ...
int pcvDim(int d0, int d1)
BOOLEAN rComplete(ring r, int force)
this needs to be called whenever a new ring is created: new fields in ring are created (like VarOffse...
matrix nc_PrintMat(int a, int b, ring r, int metric)
returns matrix with the info on noncomm multiplication
static int max(int a, int b)
void newstructShow(newstruct_desc d)
poly uni_subst_bits(poly outer_uni, poly inner_multi, ring r)
poly multifastmult(poly f, poly g, ring r)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
The main handler for Singular numbers which are suitable for Singular polynomials.
void StringSetS(const char *st)
int M3ivSame(intvec *temp, intvec *u, intvec *v)
const char feNotImplemented[]
BOOLEAN jjUNIQLIST(leftv, leftv arg)
ideal sm_Flatten(ideal a, const ring R)
const char * omError2Serror(omError_t error)
intvec * MwalkNextWeight(intvec *curr_weight, intvec *target_weight, ideal G)
ideal Mwalk(ideal Go, intvec *orig_M, intvec *target_M, ring baseRing, int reduction, int printout)
intvec * MPertNextWeight(intvec *iva, ideal G, int deg)
static FORCE_INLINE number n_InitMPZ(mpz_t n, const coeffs r)
conversion of a GMP integer to number
int simpleipc_cmd(char *cmd, int id, int v)
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
poly pcvCV2P(poly cv, int d0, int d1)
void rDebugPrint(const ring r)
BOOLEAN assumeStdFlag(leftv h)
intvec * Mivperttarget(ideal G, int ndeg)
void PrintS(const char *s)
BOOLEAN spectrumfProc(leftv result, leftv first)
lists pcvLAddL(lists l1, lists l2)
int pcvBasis(lists b, int i, poly m, int d, int n)
int posInT17(const TSet set, const int length, LObject &p)
static const int SW_USE_CHINREM_GCD
set to 1 to use modular gcd over Z
static unsigned pLength(poly a)
intvec * MPertVectors(ideal G, intvec *ivtarget, int pdeg)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL ...
matrix singntl_HNF(matrix m, const ring s)
poly kNFBound(ideal F, ideal Q, poly p, int bound, int syzComp, int lazyReduce)
static short scaFirstAltVar(ring r)
poly ringRedNF(poly f, ideal G, ring r)
EXTERN_VAR size_t gmp_output_digits
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
int ssiReservePort(int clients)
poly kFindZeroPoly(poly input_p, ring leadRing, ring tailRing)
static BOOLEAN rField_is_long_C(const ring r)
void rSetSyzComp(int k, const ring r)
ideal Approx_Step(ideal L)
Ann: ???
#define BIMATELEM(M, I, J)
poly plain_spoly(poly f, poly g)
INLINE_THIS void Init(int l=0)
matrix mpNew(int r, int c)
create a r x c zero-matrix
int posInT_EcartFDegpLength(const TSet set, const int length, LObject &p)
const Variable & v
< [in] a sqrfree bivariate poly
matrix evHessenberg(matrix M)
#define omPrintUsedTrackAddrs(F, max)
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent : VarOffset encodes the position in p->exp
matrix mp_InitI(int r, int c, int v, const ring R)
make it a v * unit matrix
ideal RightColonOperation(ideal S, poly w, int lV)
lists evEigenvals(matrix M)
static BOOLEAN rField_is_Ring(const ring r)
CanonicalForm convSingPFactoryP(poly p, const ring r)
#define pDivisibleBy(a, b)
returns TRUE, if leading monom of a divides leading monom of b i.e., if there exists a expvector c > ...
BOOLEAN semicProc(leftv res, leftv u, leftv v)
poly fglmLinearCombination(ideal source, poly monset)
bool luSolveViaLDUDecomp(const matrix pMat, const matrix lMat, const matrix dMat, const matrix uMat, const poly l, const poly u, const poly lTimesU, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LDU-decomposit...
ideal TranMImprovwalk(ideal G, intvec *curr_weight, intvec *target_tmp, int nP)
int probIrredTest(const CanonicalForm &F, double error)
given some error probIrredTest detects irreducibility or reducibility of F with confidence level 1-er...
BOOLEAN iiCheckTypes(leftv args, const short *type_list, int report)
check a list of arguemys against a given field of types return TRUE if the types match return FALSE (...
int posInT110(const TSet set, const int length, LObject &p)
coeffs basecoeffs() const
static const int SW_USE_QGCD
set to 1 to use Encarnacion GCD over Q(a)
static BOOLEAN rField_is_long_R(const ring r)
static const int SW_USE_EZGCD
set to 1 to use EZGCD over Z
static BOOLEAN length(leftv result, leftv arg)
int blackboxIsCmd(const char *n, int &tok)
used by scanner: returns ROOT_DECL for known types (and the type number in tok)
static short scaLastAltVar(ring r)
intvec * MivMatrixOrderdp(int nV)
static bool rIsSCA(const ring r)
BOOLEAN ncInitSpecialPairMultiplication(ring r)
ideal MAltwalk2(ideal Go, intvec *curr_weight, intvec *target_weight)
ideal Mrwalk(ideal Go, intvec *orig_M, intvec *target_M, int weight_rad, int pert_deg, int reduction, int printout)
static void p_Setm(poly p, const ring r)
CFList int bool & irred
[in,out] Is A irreducible?
poly pcvP2CV(poly p, int d0, int d1)
#define omPrintCurrentBackTrace(fd)
static nc_type & ncRingType(nc_struct *p)
KINLINE poly ksOldSpolyRed(poly p1, poly p2, poly spNoether)
int redRat(poly *h, poly *reducer, int *red_length, int rl, int ishift, ring r)
char * omFindExec(const char *name, char *exec)
#define pLmDeleteAndNext(p)
like pLmDelete, returns pNext(p)
void pPrintDivisbleByStat()
BOOLEAN spaddProc(leftv result, leftv first, leftv second)
ideal idXXX(ideal h1, int k)
ideal singclap_absFactorize(poly f, ideal &mipos, intvec **exps, int &numFactors, const ring r)
BOOLEAN newstruct_set_proc(const char *bbname, const char *func, int args, procinfov pr)
void omMarkAsStaticAddr(void *addr)
ideal Mprwalk(ideal Go, intvec *orig_M, intvec *target_M, int weight_rad, int op_deg, int tp_deg, int nP, int reduction, int printout)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
int posInT19(const TSet set, const int length, LObject &p)
lists gmsNF(ideal p, ideal g, matrix B, int D, int K)
ideal id_Vec2Ideal(poly vec, const ring R)
feOptIndex feGetOptIndex(const char *name)
void countedref_reference_load()
Initialize blackbox types 'reference' and 'shared', or both.
static poly p_Add_q(poly p, poly q, const ring r)
char * singclap_neworder(ideal I, const ring r)
poly ringNF(poly f, ideal G, ring r)
ideal MwalkInitialForm(ideal G, intvec *ivw)
int posInT_FDegpLength(const TSet set, const int length, LObject &p)
ideal Mfrwalk(ideal G, intvec *ivstart, intvec *ivtarget, int weight_rad, int reduction, int printout)
poly fglmNewLinearCombination(ideal source, poly monset)
#define IMATELEM(M, I, J)
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
void Werror(const char *fmt,...)
intvec * MivMatrixOrderlp(int nV)
void countedref_shared_load()
int posInT13(const TSet set, const int length, LObject &p)
poly unifastmult(poly f, poly g, ring r)
#define pCopy(p)
return a copy of the poly
#define MATELEM(mat, i, j)
1-based access to matrix
void n_Print(number &a, const coeffs r)
print a number (BEWARE of string buffers!) mostly for debugging
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
VAR int(* test_PosInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
intvec * MkInterRedNextWeight(intvec *iva, intvec *ivb, ideal G)
ideal twostd(ideal I)
Compute two-sided GB:
ideal F5main(ideal id, ring r, int opt, int plus, int termination)