17 #include <factory/factory.h> 25 #ifdef TIME_WITH_SYS_TIME 27 # ifdef HAVE_SYS_TIME_H 28 # include <sys/time.h> 31 # ifdef HAVE_SYS_TIME_H 32 # include <sys/time.h> 37 #ifdef HAVE_SYS_TIMES_H 38 #include <sys/times.h> 144 #ifndef MAKE_DISTRIBUTION 145 #define HAVE_EXTENDED_SYSTEM 1 162 #ifdef HAVE_SIMPLEIPC 176 #ifndef MAKE_DISTRIBUTION 181 static int PyInitialized = 0;
191 int n = singularMatrix->
rows();
193 unsigned long **longMatrix = 0;
194 longMatrix =
new unsigned long *[n] ;
195 for (
int i = 0 ;
i < n;
i++)
196 longMatrix[
i] =
new unsigned long [n];
198 for (
int r = 0;
r < n;
r++)
199 for (
int c = 0; c < n; c++)
211 longMatrix[
r][c] = (
unsigned long)entryAsInt;
226 if ((
int)polyCoeffs[
i] != 0)
248 const char *sys_cmd=(
char *)(args->
Data());
253 if (strcmp(sys_cmd,
"nblocks") == 0)
275 r = (ring) h->
Data();
282 if(strcmp(sys_cmd,
"version")==0)
291 if(strcmp(sys_cmd,
"alarm")==0)
298 struct itimerval t,o;
299 memset(&t,0,
sizeof(t));
300 t.it_value.tv_sec =(unsigned)((
unsigned long)h->
Data());
301 setitimer(ITIMER_VIRTUAL,&t,&o);
310 if(strcmp(sys_cmd,
"cpu")==0)
313 #ifdef _SC_NPROCESSORS_ONLN 314 cpu=sysconf(_SC_NPROCESSORS_ONLN);
315 #elif defined(_SC_NPROCESSORS_CONF) 316 cpu=sysconf(_SC_NPROCESSORS_CONF);
318 res->
data=(
void *)cpu;
324 if(strcmp(sys_cmd,
"executable")==0)
330 if(s==
NULL) s=(
char*)
"";
339 if(strcmp(sys_cmd,
"neworder")==0)
353 if(strcmp(sys_cmd,
"nc_hilb") == 0)
360 i = (ideal)h->
Data();
363 WerrorS(
"nc_Hilb:ideal expected");
368 lV = (int)(
long)h->
Data();
371 WerrorS(
"nc_Hilb:int expected");
377 if((
int)(long)h->
Data() == 1)
379 else if((
int)(long)h->
Data() == 2)
381 else if((
int)(long)h->
Data() == 3)
387 WerrorS(
"nc_Hilb:int 1,2 or 3 are expected");
395 if(strcmp(sys_cmd,
"sh")==0)
399 WerrorS(
"shell execution is disallowed in restricted mode");
412 if(strcmp(sys_cmd,
"reduce_bound")==0)
426 pid = (ideal)h->
CopyD();
441 if(strcmp(sys_cmd,
"uname")==0)
449 if(strcmp(sys_cmd,
"with")==0)
459 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else 460 char *
s=(
char *)h->
Data();
473 #ifdef TEST_MAC_ORDER 478 #ifdef HAVE_DYNAMIC_LOADING 501 if (strcmp(sys_cmd,
"browsers")==0)
511 if (strcmp(sys_cmd,
"pid")==0)
514 res->
data=(
void *)(
long) getpid();
519 if (strcmp(sys_cmd,
"getenv")==0)
537 if (strcmp(sys_cmd,
"setenv")==0)
554 WerrorS(
"setenv not supported on this platform");
560 if (strcmp(sys_cmd,
"Singular") == 0)
569 if (strcmp(sys_cmd,
"SingularLib") == 0)
579 if (strstr(sys_cmd,
"--") == sys_cmd)
581 if (strcmp(sys_cmd,
"--") == 0)
589 Werror(
"Unknown option %s", sys_cmd);
590 WerrorS(
"Use 'system(\"--\");' for listing of available options");
605 const char *
r=(
const char*)
feOptSpec[opt].value;
619 WerrorS(
"Need string or int argument to set option value");
622 const char* errormsg;
627 Werror(
"Need string argument to set value of option %s", sys_cmd);
631 if (errormsg !=
NULL)
632 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)h->
Data()), errormsg);
637 if (errormsg !=
NULL)
638 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*) h->
Data(), errormsg);
645 if (strcmp(sys_cmd,
"HC")==0)
653 if(strcmp(sys_cmd,
"random")==0)
676 if (strcmp(sys_cmd,
"std_syz") == 0)
682 i1=(ideal)h->
CopyD();
688 i2=(int)((
long)h->
Data());
697 if (strcmp(sys_cmd,
"denom_list")==0)
706 if(strcmp(sys_cmd,
"complexNearZero")==0)
713 WerrorS(
"unsupported ground field!");
731 if(strcmp(sys_cmd,
"getPrecDigits")==0)
736 WerrorS(
"unsupported ground field!");
747 if(strcmp(sys_cmd,
"lduDecomp")==0)
755 lduDecomp(aMat, pMat, lMat, dMat, uMat, l, u, prodLU);
766 res->
data = (
char *)L;
776 if(strcmp(sys_cmd,
"lduSolve")==0)
817 Werror(
"first matrix (%d x %d) is not quadratic",
823 Werror(
"second matrix (%d x %d) is not quadratic",
829 Werror(
"third matrix (%d x %d) is not quadratic",
835 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
842 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
847 bVec, xVec, homogSolSpace);
870 if (strcmp(sys_cmd,
"shared") == 0)
872 #ifndef SI_COUNTEDREF_AUTOLOAD 879 else if (strcmp(sys_cmd,
"reference") == 0)
881 #ifndef SI_COUNTEDREF_AUTOLOAD 890 #ifdef HAVE_SIMPLEIPC 891 if (strcmp(sys_cmd,
"semaphore")==0)
904 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
911 if (strcmp(sys_cmd,
"reserve")==0)
919 res->
data=(
void*)(
long)
p;
926 if (strcmp(sys_cmd,
"reservedLink")==0)
935 if (strcmp(sys_cmd,
"install")==0)
948 if (strcmp(sys_cmd,
"newstruct")==0)
954 char *n=(
char*)h->
Data();
961 newstruct_desc desc=(newstruct_desc)bb->data;
965 else Werror(
"'%s' is not a newstruct",n);
967 else Werror(
"'%s' is not a blackbox object",n);
973 if (strcmp(sys_cmd,
"blackbox")==0)
981 if (strcmp(sys_cmd,
"absFact") == 0)
998 l->
m[0].
data=(
void *)f;
1000 l->
m[1].
data=(
void *)v;
1002 l->
m[2].
data=(
void*) mipos;
1004 l->
m[3].
data=(
void*) (
long) n;
1005 res->
data=(
void *)l;
1014 if (strcmp(sys_cmd,
"LLL") == 0)
1037 #if __FLINT_RELEASE >= 20500 1038 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1059 WerrorS(
"matrix,int or bigint,int expected");
1064 if(((
int)((
long)(h->
next->
Data())) != 0) && (
int)((long)(h->
next->
Data()) != 1))
1066 WerrorS(
"int is different from 0, 1");
1091 for(
int i = 1;
i<=m->
rows();
i++)
1096 m = singflint_LLL(m,T);
1109 for(
int i = 1;
i<=m->
rows();
i++)
1111 m = singflint_LLL(m,T);
1131 #ifdef HAVE_SHIFTBBA 1132 if (strcmp(sys_cmd,
"stest") == 0)
1139 int sh=(int)((
long)(h->
Data()));
1141 int uptodeg=(int)((
long)(h->
Data()));
1143 int lVblock=(int)((
long)(h->
Data()));
1146 WerrorS(
"negative shift for pLPshift");
1150 if (L+sh-1 > uptodeg)
1152 WerrorS(
"pLPshift: too big shift requested\n");
1164 #ifdef HAVE_SHIFTBBA 1165 if (strcmp(sys_cmd,
"btest") == 0)
1172 int lV=(int)((
long)(h->
Data()));
1182 #ifdef HAVE_SHIFTBBA 1183 if (strcmp(sys_cmd,
"shrinktest") == 0)
1190 int lV=(int)((
long)(h->
Data()));
1204 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1209 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1214 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1219 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1224 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1229 if(strcmp(sys_cmd,
"pcvDim")==0)
1234 if(strcmp(sys_cmd,
"pcvBasis")==0)
1241 #ifdef HAVE_EIGENVAL 1242 if(strcmp(sys_cmd,
"hessenberg")==0)
1249 #ifdef HAVE_EIGENVAL 1250 if(strcmp(sys_cmd,
"eigenvals")==0)
1257 #ifdef HAVE_EIGENVAL 1258 if(strcmp(sys_cmd,
"rowelim")==0)
1265 #ifdef HAVE_EIGENVAL 1266 if(strcmp(sys_cmd,
"rowcolswap")==0)
1274 if(strcmp(sys_cmd,
"gmsnf")==0)
1276 return gmsNF(res,h);
1281 if(strcmp(sys_cmd,
"contributors") == 0)
1285 "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");
1290 #ifdef HAVE_SPECTRUM 1291 if(strcmp(sys_cmd,
"spectrum") == 0)
1311 if(strcmp(sys_cmd,
"semic") == 0)
1326 if(strcmp(sys_cmd,
"spadd") == 0)
1337 if(strcmp(sys_cmd,
"spmul") == 0)
1349 #define HAVE_SHEAFCOH_TRICKS 1 1351 #ifdef HAVE_SHEAFCOH_TRICKS 1352 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1358 int m = (int)( (
long)h->
Data() );
1370 if (strcmp(sys_cmd,
"twostd") == 0)
1375 I=(ideal)h->
CopyD();
1389 if (strcmp(sys_cmd,
"bracket") == 0)
1407 if (strcmp(sys_cmd,
"env")==0)
1411 ring
r = (ring)h->
Data();
1418 WerrorS(
"`system(\"env\",<ring>)` expected");
1426 if (strcmp(sys_cmd,
"opp")==0)
1430 ring
r=(ring)h->
Data();
1437 WerrorS(
"`system(\"opp\",<ring>)` expected");
1445 if (strcmp(sys_cmd,
"oppose")==0)
1450 ring Rop = (ring)h->
Data();
1463 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1471 #ifdef HAVE_SHIFTBBA 1472 if (strcmp(sys_cmd,
"freegb") == 0)
1477 ideal I=(ideal)h->
CopyD();
1479 int uptodeg=(int)((
long)(h->
Data()));
1481 int lVblock=(int)((
long)(h->
Data()));
1500 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1507 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1530 if (strcmp(sys_cmd,
"walkInitials") == 0)
1534 WerrorS(
"system(\"walkInitials\", ideal) expected");
1537 res->
data = (
void*) walkInitials((ideal) h->
Data());
1547 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1553 res->
data = (
intvec*) walkAddIntVec(arg1, arg2);
1562 #ifdef MwaklNextWeight 1563 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1570 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1583 #endif //MWalkNextWeight 1587 if(strcmp(sys_cmd,
"Mivdp") == 0)
1591 WerrorS(
"system(\"Mivdp\", int) expected");
1596 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1600 int arg1 = (int) ((
long)(h->
Data()));
1610 if(strcmp(sys_cmd,
"Mivlp") == 0)
1614 WerrorS(
"system(\"Mivlp\", int) expected");
1619 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1623 int arg1 = (int) ((
long)(h->
Data()));
1634 if(strcmp(sys_cmd,
"MpDiv") == 0)
1651 if(strcmp(sys_cmd,
"MpMult") == 0)
1667 if (strcmp(sys_cmd,
"MivSame") == 0)
1695 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1725 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1731 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1735 ideal
id = (ideal) h->
Data();
1747 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1751 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1764 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1768 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1771 int arg1 = (int) ((
long)(h->
Data()));
1781 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1785 ideal arg1 = (ideal) h->
Data();
1797 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1801 ideal arg1 = (ideal) h->
Data();
1813 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1817 ideal arg1 = (ideal) h->
Data();
1828 if(strcmp(sys_cmd,
"MivUnit") == 0)
1832 int arg1 = (int) ((
long)(h->
Data()));
1842 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1856 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1860 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1874 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1878 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1881 int arg1 = (int) ((
long)(h->
Data()));
1891 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1898 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1914 #ifdef MPertNextWeight 1915 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1921 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1926 ideal arg2 = (ideal) h->
next->
Data();
1934 #endif //MPertNextWeight 1938 #ifdef Mivperttarget 1939 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1943 ideal arg1 = (ideal) h->
Data();
1951 #endif //Mivperttarget 1955 if (strcmp(sys_cmd,
"Mwalk") == 0)
1962 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
1966 ideal arg1 = (ideal) h->
CopyD();
1972 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
1982 if (strcmp(sys_cmd,
"Mwalk") == 0)
1991 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
1995 ideal arg1 = (ideal) h->
Data();
1999 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
2006 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2013 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2016 ideal arg1 = (ideal) h->
Data();
2017 int arg2 = (int) (
long) h->
next->
Data();
2024 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2034 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2043 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2047 ideal arg1 = (ideal) h->
Data();
2054 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2063 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2070 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2074 ideal arg1 = (ideal) h->
Data();
2075 int arg2 = (int) ((
long)(h->
next->
Data()));
2089 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2096 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2100 ideal arg1 = (ideal) h->
Data();
2104 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2114 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2121 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2125 ideal arg1 = (ideal) h->
Data();
2130 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2139 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2156 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2161 ideal arg1 = (ideal) h->
Data();
2167 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2174 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2183 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2187 ideal arg1 = (ideal) h->
Data();
2196 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2206 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2213 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2217 ideal arg1 = (ideal) h->
Data();
2230 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2237 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2241 ideal arg1 = (ideal) h->
Data();
2253 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2260 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2264 ideal arg1 = (ideal) h->
Data();
2278 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2287 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2293 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2296 ideal arg1 = (ideal) h->
Data();
2302 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2312 #ifndef MAKE_DISTRIBUTION 2323 #ifdef HAVE_EXTENDED_SYSTEM 2327 # include <hc_newton.h> 2338 char *sys_cmd=(
char *)(h->
Data());
2341 if (strcmp(sys_cmd,
"syz") == 0)
2345 const char *
s=(
const char *)h->
Data();
2346 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2348 else if (strcmp(s,
"posInT_FDegpLength")==0)
2350 else if (strcmp(s,
"posInT_pLength")==0)
2352 else if (strcmp(s,
"posInT0")==0)
2354 else if (strcmp(s,
"posInT1")==0)
2356 else if (strcmp(s,
"posInT2")==0)
2358 else if (strcmp(s,
"posInT11")==0)
2360 else if (strcmp(s,
"posInT110")==0)
2362 else if (strcmp(s,
"posInT13")==0)
2364 else if (strcmp(s,
"posInT15")==0)
2366 else if (strcmp(s,
"posInT17")==0)
2368 else if (strcmp(s,
"posInT17_c")==0)
2370 else if (strcmp(s,
"posInT19")==0)
2372 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2384 if(strcmp(sys_cmd,
"locNF")==0)
2391 ideal
m=(ideal)h->
Data();
2394 int n=(int)((
long)h->
Data());
2459 if(strcmp(sys_cmd,
"p")==0)
2464 Warn(
"Sorry: not available for release build!");
2470 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2474 int k = (int)(
long)h->
Data();
2482 if(strcmp(sys_cmd,
"r")==0)
2487 Warn(
"Sorry: not available for release build!");
2499 if(strcmp(sys_cmd,
"changeRing")==0)
2503 for (
int i = 1;
i <= varN;
i++)
2506 sprintf(h,
"x%d",
i);
2511 res->
data = (
void*)0L;
2516 if(strcmp(sys_cmd,
"mtrack")==0)
2527 fd = fopen((
char*) h->
Data(),
"w");
2529 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2533 max = (int)(
long)h->
Data();
2538 if (fd !=
NULL) fclose(fd);
2544 if(strcmp(sys_cmd,
"mtrack_all")==0)
2551 fd = fopen((
char*) h->
Data(),
"w");
2553 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2558 if (fd !=
NULL) fclose(fd);
2566 if(strcmp(sys_cmd,
"backtrace")==0)
2574 #if !defined(OM_NDEBUG) 2576 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2580 PrintS(
"\n[om_Info]: \n");
2582 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name) 2583 OM_PRINT(MaxBytesSystem);
2584 OM_PRINT(CurrentBytesSystem);
2585 OM_PRINT(MaxBytesSbrk);
2586 OM_PRINT(CurrentBytesSbrk);
2587 OM_PRINT(MaxBytesMmap);
2588 OM_PRINT(CurrentBytesMmap);
2589 OM_PRINT(UsedBytes);
2590 OM_PRINT(AvailBytes);
2591 OM_PRINT(UsedBytesMalloc);
2592 OM_PRINT(AvailBytesMalloc);
2593 OM_PRINT(MaxBytesFromMalloc);
2594 OM_PRINT(CurrentBytesFromMalloc);
2595 OM_PRINT(MaxBytesFromValloc);
2596 OM_PRINT(CurrentBytesFromValloc);
2597 OM_PRINT(UsedBytesFromValloc);
2598 OM_PRINT(AvailBytesFromValloc);
2600 OM_PRINT(UsedPages);
2601 OM_PRINT(AvailPages);
2602 OM_PRINT(MaxRegionsAlloc);
2603 OM_PRINT(CurrentRegionsAlloc);
2608 PrintS(
"\n[om_Opts]: \n");
2609 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name) 2610 OM_PRINT(
"d", MinTrack);
2611 OM_PRINT(
"d", MinCheck);
2612 OM_PRINT(
"d", MaxTrack);
2613 OM_PRINT(
"d", MaxCheck);
2614 OM_PRINT(
"d", Keep);
2615 OM_PRINT(
"d", HowToReportErrors);
2616 OM_PRINT(
"d", MarkAsStatic);
2617 OM_PRINT(
"u", PagesPerRegion);
2618 OM_PRINT(
"p", OutOfMemoryFunc);
2619 OM_PRINT(
"p", MemoryLowFunc);
2620 OM_PRINT(
"p", ErrorHook);
2625 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2628 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2641 #if defined(PDEBUG) || defined(PDIV_DEBUG) 2642 if(strcmp(sys_cmd,
"pDivStat")==0)
2652 if(strcmp(sys_cmd,
"red")==0)
2667 if(strcmp(sys_cmd,
"fastcomb")==0)
2675 Warn(
"Wrong types for poly= comb(ideal,poly)");
2688 if(strcmp(sys_cmd,
"comb")==0)
2696 Warn(
"Wrong types for poly= comb(ideal,poly)");
2710 if(strcmp(sys_cmd,
"listall")==0)
2712 void listall(
int showproc);
2722 if(strcmp(sys_cmd,
"proclist")==0)
2724 void piShowProcList();
2732 if(strcmp(sys_cmd,
"newton")==0)
2738 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2747 for (i=0;pp!=
NULL;i++)
2774 L->
m[1].
data=(
void *)(
long)r.achse;
2776 L->
m[2].
data=(
void *)(
long)r.deg;
2780 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2782 int anz = r.anz_punkte;
2785 for (i=0; i<anz*
dim; i++)
2788 L->
m[4].
data=(
void *)v;
2795 (*w)[
i] = r.deg_tab[
i];
2798 while (r.deg_tab[i-1] != -2);
2800 L->
m[5].
data=(
void *)w;
2809 res->
data=(
void *)L;
2832 if (strcmp(sys_cmd,
"minpoly") == 0)
2836 Werror(
"expected exactly one argument: %s",
2837 "a square matrix with number entries");
2847 WerrorS(
"expected exactly one argument: " 2848 "a square matrix with number entries");
2855 res->
data = (
void *)theMinPoly;
2856 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2858 delete[] polyCoeffs;
2865 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2873 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2882 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2891 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2899 #if 0 // for testing only 2900 if (strcmp(sys_cmd,
"GF") == 0)
2917 if (strcmp(sys_cmd,
"svd") == 0)
2932 if (strcmp(sys_cmd,
"DLL") == 0)
2934 typedef void (*Void_Func)();
2935 typedef int (*Int_Func)(int);
2945 if (
f!=
NULL) printf(
"%d\n",
f(i));
2946 else PrintS(
"cannot find PlusDll\n");
2954 else PrintS(
"cannot find TestDll\n");
2961 #ifdef HAVE_RING2TOM 2963 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2973 #ifdef HAVE_VANIDEAL 2974 if (strcmp(sys_cmd,
"createG0")==0)
2999 if (strcmp(sys_cmd,
"redNF_ring")==0)
3004 ideal
G = (ideal) h->
Data();
3012 if (strcmp(sys_cmd,
"hilbroune") == 0)
3017 I=(ideal)h->
CopyD();
3026 if (strcmp(sys_cmd,
"f5")==0)
3035 ideal
G = (ideal) h->
Data();
3039 opt = (int) (
long) h->
Data();
3047 plus = (int) (
long) h->
Data();
3055 termination = (int) (
long) h->
Data();
3061 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
3068 if (strcmp(sys_cmd,
"NF_ring")==0)
3073 ideal
G = (ideal) h->
Data();
3079 if (strcmp(sys_cmd,
"spoly")==0)
3090 if (strcmp(sys_cmd,
"testGB")==0)
3092 ideal I = (ideal) h->
Data();
3094 ideal GI = (ideal) h->
Data();
3103 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3109 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3117 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3124 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3130 #ifdef HAVE_RATGRING 3131 if (strcmp(sys_cmd,
"intratNF") == 0)
3146 I=(ideal)h->
CopyD();
3154 is=(int)((
long)(h->
Data()));
3162 for(k=0; k < id; k++)
3166 PrintS(
"starting redRat\n");
3184 if (strcmp(sys_cmd,
"ratNF") == 0)
3203 is=(int)((
long)(h->
Data()));
3218 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3236 is=(int)((
long)(h->
Data()));
3250 #endif // HAVE_RATGRING 3252 if (strcmp(sys_cmd,
"ratVar") == 0)
3269 return (start==0)||(end==0)||(start>end);
3273 if (strcmp(sys_cmd,
"unifastmult")==0)
3283 if (strcmp(sys_cmd,
"multifastmult")==0)
3293 if (strcmp(sys_cmd,
"mults")==0)
3300 if (strcmp(sys_cmd,
"fastpower")==0)
3305 int n=(int)((
long)h->
Data());
3311 if (strcmp(sys_cmd,
"normalpower")==0)
3315 int n=(int)((
long)h->
Data());
3321 if (strcmp(sys_cmd,
"MCpower")==0)
3326 int n=(int)((
long)h->
Data());
3332 if (strcmp(sys_cmd,
"bit_subst")==0)
3344 if (strcmp(sys_cmd,
"gcd") == 0)
3360 char *
s=(
char *)h->
Data();
3375 if (strcmp(sys_cmd,
"subring") == 0)
3389 if (strcmp(sys_cmd,
"HNF") == 0)
3411 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3419 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3425 double error= atof (s);
3437 if (strcmp(sys_cmd,
"python") == 0)
3442 c=(
const char*)h->
Data();
3443 if (!PyInitialized) {
3491 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3495 char* filename = (
char*)h->
Data();
3496 FILE*
f = fopen(filename,
"r");
3499 WerrorS(
"invalid file name (in paths use '/')");
3502 mpz_t
m; mpz_init(m);
3503 mpz_inp_str(m, f, 10);
3507 res->
data = (
void*)n;
3512 WerrorS(
"expected valid file name as a string");
3524 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3533 int validEntries = 0;
3534 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3536 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3537 sizeof(
int) * jvec->
rows()) == 0)
3539 if (validEntries == 0)
3543 r->
resize(validEntries + 1);
3544 (*r)[validEntries] = k + 1;
3550 res->
data = (
void*)r;
3555 WerrorS(
"expected two non-empty intvecs as arguments");
3566 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3574 int ir = ivec->
rows();
int jr = jvec->
rows();
3575 int r = jr;
if (ir < jr) r = ir;
3576 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3577 sizeof(
int) * r) != 0))
3580 res->
data = (
void*)(
long)
r;
3585 WerrorS(
"expected two non-empty intvecs as arguments");
3591 if(strcmp(sys_cmd,
"henselfactors")==0)
3604 int xIndex = (int)(
long)h->
Data();
3605 int yIndex = (int)(
long)h->
next->
Data();
3617 res->
data = (
char *)L;
3622 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3629 if (strcmp(sys_cmd,
"astep") == 0)
3634 I=(ideal)h->
CopyD();
3647 if (strcmp(sys_cmd,
"PrintMat") == 0)
3657 a=(int)((
long)(h->
Data()));
3662 b=(int)((
long)(h->
Data()));
3677 metric=(int)((
long)(h->
Data()));
3688 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3701 if(strcmp(sys_cmd,
"NCGetType")==0)
3707 res->
data=(
void *)(-1L);
3714 if(strcmp(sys_cmd,
"ForceSCA")==0)
3721 b = (int)((
long)(h->
Data()));
3727 e = (int)((
long)(h->
Data()));
3738 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3750 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3762 if(strcmp(sys_cmd,
"test64")==0)
3778 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3784 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3787 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3789 n_SwitchChinRem=(int)(
long)h->
Data();
3795 if(strcmp(sys_cmd,
"LU")==0)
3805 res->
data=(
char*)bb;
3810 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3817 if(strcmp(sys_cmd,
"sort")==0)
3827 if(strcmp(sys_cmd,
"uniq")==0)
3837 if(strcmp(sys_cmd,
"tensor")==0)
3852 if(strcmp(sys_cmd,
"power1")==0)
3857 res->
data=(
void *)g;
3861 if(strcmp(sys_cmd,
"power2")==0)
3866 for(
int i=0;
i<2000;
i++)
3868 res->
data=(
void *)g;
3871 if(strcmp(sys_cmd,
"power3")==0)
3890 res->
data=(
void *)p2000;
3915 #endif // HAVE_EXTENDED_SYSTEM
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
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)
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)
static char * feResource(feResourceConfig config, int warn)
This file is work in progress and currently not part of the official Singular.
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)
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)
void HilbertSeries_OrbitData(ideal S, int lV, bool IG_CASE, bool mgrad, bool odp)
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)
static coordinates * points
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
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)
ideal mp_Tensor(ideal A, ideal B, const ring r)
CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
matrix evSwap(matrix M, int i, int j)
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)
poly p_Shrink(poly p, int lV, const ring r)
bool sca_Force(ring rGR, int b, int e)
unsigned long * computeMinimalPolynomial(unsigned long **matrix, unsigned n, unsigned long p)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#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!
void StringSetS(const char *st)
#define pLPshift(p, sh, uptodeg, lV)
#define pmLastVblock(p, lV)
int M3ivSame(intvec *temp, intvec *u, intvec *v)
const char feNotImplemented[]
BOOLEAN jjUNIQLIST(leftv, leftv arg)
struct fe_option feOptSpec[]
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)
ideal freegb(ideal I, int uptodeg, int lVblock)
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)
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
#define pLastVblock(p, 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
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)
int(* test_PosInT)(const TSet T, const int tl, LObject &h)
#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)
void omPrintUsedTrackAddrs(FILE *fd, int max_frames)
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)
void omPrintUsedAddrs(FILE *fd, int max_frames)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
int posInT19(const TSet set, const int length, LObject &p)
int(* test_PosInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
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)
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
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)