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>
145 #ifndef MAKE_DISTRIBUTION
146 #define HAVE_EXTENDED_SYSTEM 1
163 #ifdef HAVE_SIMPLEIPC
177 #ifndef MAKE_DISTRIBUTION
182 static int PyInitialized = 0;
192 int n = singularMatrix->
rows();
194 unsigned long **longMatrix = 0;
195 longMatrix =
new unsigned long *[
n] ;
196 for (
int i = 0 ;
i <
n;
i++)
197 longMatrix[
i] =
new unsigned long [n];
199 for (
int r = 0;
r <
n;
r++)
200 for (
int c = 0; c <
n; c++)
212 longMatrix[
r][c] = (
unsigned long)entryAsInt;
227 if ((
int)polyCoeffs[
i] != 0)
249 const char *sys_cmd=(
char *)(args->
Data());
254 if (strcmp(sys_cmd,
"nblocks") == 0)
276 r = (ring) h->
Data();
283 if(strcmp(sys_cmd,
"version")==0)
291 if(strcmp(sys_cmd,
"cpu")==0)
294 #ifdef _SC_NPROCESSORS_ONLN
295 cpu=sysconf(_SC_NPROCESSORS_ONLN);
296 #elif defined(_SC_NPROCESSORS_CONF)
297 cpu=sysconf(_SC_NPROCESSORS_CONF);
299 res->
data=(
void *)cpu;
306 if(strcmp(sys_cmd,
"sh")==0)
310 WerrorS(
"shell execution is disallowed in restricted mode");
314 if (h==
NULL) res->
data = (
void *)(
long) system(
"sh");
316 res->
data = (
void*)(long) system((
char*)(h->
Data()));
323 if(strcmp(sys_cmd,
"power1")==0)
332 if(strcmp(sys_cmd,
"power2")==0)
337 for(
int i=0;
i<2000;
i++)
342 if(strcmp(sys_cmd,
"power3")==0)
361 res->
data=(
void *)p2000;
381 if(strcmp(sys_cmd,
"uname")==0)
389 if(strcmp(sys_cmd,
"with")==0)
399 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else
400 char *
s=(
char *)h->
Data();
413 #ifdef TEST_MAC_ORDER
418 #ifdef HAVE_DYNAMIC_LOADING
441 if (strcmp(sys_cmd,
"browsers")==0)
451 if (strcmp(sys_cmd,
"pid")==0)
454 res->
data=(
void *)(
long) getpid();
459 if (strcmp(sys_cmd,
"getenv")==0)
477 if (strcmp(sys_cmd,
"setenv")==0)
494 WerrorS(
"setenv not supported on this platform");
500 if (strcmp(sys_cmd,
"Singular") == 0)
509 if (strcmp(sys_cmd,
"SingularLib") == 0)
519 if (strstr(sys_cmd,
"--") == sys_cmd)
521 if (strcmp(sys_cmd,
"--") == 0)
529 Werror(
"Unknown option %s", sys_cmd);
530 WerrorS(
"Use 'system(\"--\");' for listing of available options");
545 const char *
r=(
const char*)
feOptSpec[opt].value;
559 WerrorS(
"Need string or int argument to set option value");
562 const char* errormsg;
567 Werror(
"Need string argument to set value of option %s", sys_cmd);
571 if (errormsg !=
NULL)
572 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)h->
Data()), errormsg);
577 if (errormsg !=
NULL)
578 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*) h->
Data(), errormsg);
585 if (strcmp(sys_cmd,
"HC")==0)
593 if(strcmp(sys_cmd,
"random")==0)
616 if (strcmp(sys_cmd,
"denom_list")==0)
625 if(strcmp(sys_cmd,
"complexNearZero")==0)
632 WerrorS(
"unsupported ground field!");
650 if(strcmp(sys_cmd,
"getPrecDigits")==0)
655 WerrorS(
"unsupported ground field!");
666 if(strcmp(sys_cmd,
"lduDecomp")==0)
674 lduDecomp(aMat, pMat, lMat, dMat, uMat, l, u, prodLU);
685 res->
data = (
char *)L;
695 if(strcmp(sys_cmd,
"lduSolve")==0)
736 Werror(
"first matrix (%d x %d) is not quadratic",
742 Werror(
"second matrix (%d x %d) is not quadratic",
748 Werror(
"third matrix (%d x %d) is not quadratic",
754 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
761 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
766 bVec, xVec, homogSolSpace);
789 if (strcmp(sys_cmd,
"shared") == 0)
791 #ifndef SI_COUNTEDREF_AUTOLOAD
798 else if (strcmp(sys_cmd,
"reference") == 0)
800 #ifndef SI_COUNTEDREF_AUTOLOAD
809 #ifdef HAVE_SIMPLEIPC
810 if (strcmp(sys_cmd,
"semaphore")==0)
823 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
830 if (strcmp(sys_cmd,
"reserve")==0)
838 res->
data=(
void*)(
long)
p;
845 if (strcmp(sys_cmd,
"reservedLink")==0)
855 if (strcmp(sys_cmd,
"install")==0)
868 if (strcmp(sys_cmd,
"newstruct")==0)
874 char *
n=(
char*)h->
Data();
881 newstruct_desc desc=(newstruct_desc)bb->data;
885 else Werror(
"'%s' is not a newstruct",n);
887 else Werror(
"'%s' is not a blackbox object",n);
893 if (strcmp(sys_cmd,
"blackbox")==0)
901 if (strcmp(sys_cmd,
"absFact") == 0)
918 l->
m[0].
data=(
void *)f;
920 l->
m[1].
data=(
void *)v;
922 l->
m[2].
data=(
void*) mipos;
924 l->
m[3].
data=(
void*) (
long)
n;
934 if (strcmp(sys_cmd,
"LLL") == 0)
957 #ifdef FLINT_VER_2_4_5
958 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
979 WerrorS(
"matrix,int or bigint,int expected");
984 if(((
int)((
long)(h->
next->
Data())) != 0) && (
int)((long)(h->
next->
Data()) != 1))
986 WerrorS(
"int is different from 0, 1");
1011 for(
int i = 1;
i<=m->
rows();
i++)
1016 m = singflint_LLL(m,T);
1029 for(
int i = 1;
i<=m->
rows();
i++)
1031 m = singflint_LLL(m,T);
1051 #ifdef HAVE_SHIFTBBA
1052 if (strcmp(sys_cmd,
"stest") == 0)
1059 int sh=(int)((
long)(h->
Data()));
1061 int uptodeg=(int)((
long)(h->
Data()));
1063 int lVblock=(int)((
long)(h->
Data()));
1073 #ifdef HAVE_SHIFTBBA
1074 if (strcmp(sys_cmd,
"btest") == 0)
1081 int lV=(int)((
long)(h->
Data()));
1091 #ifdef HAVE_SHIFTBBA
1092 if (strcmp(sys_cmd,
"shrinktest") == 0)
1099 int lV=(int)((
long)(h->
Data()));
1113 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1118 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1123 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1128 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1133 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1138 if(strcmp(sys_cmd,
"pcvDim")==0)
1143 if(strcmp(sys_cmd,
"pcvBasis")==0)
1150 #ifdef HAVE_EIGENVAL
1151 if(strcmp(sys_cmd,
"hessenberg")==0)
1158 #ifdef HAVE_EIGENVAL
1159 if(strcmp(sys_cmd,
"eigenvals")==0)
1166 #ifdef HAVE_EIGENVAL
1167 if(strcmp(sys_cmd,
"rowelim")==0)
1174 #ifdef HAVE_EIGENVAL
1175 if(strcmp(sys_cmd,
"rowcolswap")==0)
1183 if(strcmp(sys_cmd,
"gmsnf")==0)
1185 return gmsNF(res,h);
1190 if(strcmp(sys_cmd,
"contributors") == 0)
1194 "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");
1199 #ifdef HAVE_SPECTRUM
1200 if(strcmp(sys_cmd,
"spectrum") == 0)
1220 if(strcmp(sys_cmd,
"semic") == 0)
1235 if(strcmp(sys_cmd,
"spadd") == 0)
1246 if(strcmp(sys_cmd,
"spmul") == 0)
1258 #define HAVE_SHEAFCOH_TRICKS 1
1260 #ifdef HAVE_SHEAFCOH_TRICKS
1261 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1267 int m = (int)( (
long)h->
Data() );
1279 if (strcmp(sys_cmd,
"twostd") == 0)
1284 I=(ideal)h->
CopyD();
1298 if (strcmp(sys_cmd,
"bracket") == 0)
1316 if (strcmp(sys_cmd,
"env")==0)
1320 ring
r = (ring)h->
Data();
1327 WerrorS(
"`system(\"env\",<ring>)` expected");
1335 if (strcmp(sys_cmd,
"opp")==0)
1339 ring
r=(ring)h->
Data();
1346 WerrorS(
"`system(\"opp\",<ring>)` expected");
1354 if (strcmp(sys_cmd,
"oppose")==0)
1359 ring Rop = (ring)h->
Data();
1372 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1380 #ifdef HAVE_SHIFTBBA
1381 if (strcmp(sys_cmd,
"freegb") == 0)
1386 ideal I=(ideal)h->
CopyD();
1388 int uptodeg=(int)((
long)(h->
Data()));
1390 int lVblock=(int)((
long)(h->
Data()));
1409 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1416 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1439 if (strcmp(sys_cmd,
"walkInitials") == 0)
1443 WerrorS(
"system(\"walkInitials\", ideal) expected");
1446 res->
data = (
void*) walkInitials((ideal) h->
Data());
1456 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1462 res->
data = (
intvec*) walkAddIntVec(arg1, arg2);
1471 #ifdef MwaklNextWeight
1472 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1479 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1492 #endif //MWalkNextWeight
1496 if(strcmp(sys_cmd,
"Mivdp") == 0)
1500 WerrorS(
"system(\"Mivdp\", int) expected");
1505 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1509 int arg1 = (int) ((
long)(h->
Data()));
1519 if(strcmp(sys_cmd,
"Mivlp") == 0)
1523 WerrorS(
"system(\"Mivlp\", int) expected");
1528 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1532 int arg1 = (int) ((
long)(h->
Data()));
1543 if(strcmp(sys_cmd,
"MpDiv") == 0)
1560 if(strcmp(sys_cmd,
"MpMult") == 0)
1576 if (strcmp(sys_cmd,
"MivSame") == 0)
1604 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1634 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1640 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1644 ideal
id = (ideal) h->
Data();
1656 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1660 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1673 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1677 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1680 int arg1 = (int) ((
long)(h->
Data()));
1690 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1694 ideal arg1 = (ideal) h->
Data();
1706 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1710 ideal arg1 = (ideal) h->
Data();
1722 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1726 ideal arg1 = (ideal) h->
Data();
1737 if(strcmp(sys_cmd,
"MivUnit") == 0)
1741 int arg1 = (int) ((
long)(h->
Data()));
1751 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1765 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1769 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1783 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1787 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1790 int arg1 = (int) ((
long)(h->
Data()));
1800 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1807 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1823 #ifdef MPertNextWeight
1824 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1830 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1835 ideal arg2 = (ideal) h->
next->
Data();
1843 #endif //MPertNextWeight
1847 #ifdef Mivperttarget
1848 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1852 ideal arg1 = (ideal) h->
Data();
1860 #endif //Mivperttarget
1864 if (strcmp(sys_cmd,
"Mwalk") == 0)
1871 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
1875 ideal arg1 = (ideal) h->
Data();
1879 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
1889 if (strcmp(sys_cmd,
"Mwalk") == 0)
1898 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
1902 ideal arg1 = (ideal) h->
Data();
1906 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
1913 if (strcmp(sys_cmd,
"Mpwalk") == 0)
1920 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
1923 ideal arg1 = (ideal) h->
Data();
1924 int arg2 = (int) (
long) h->
next->
Data();
1929 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5,arg6);
1939 if (strcmp(sys_cmd,
"Mrwalk") == 0)
1948 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
1952 ideal arg1 = (ideal) h->
Data();
1958 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
1967 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
1974 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
1978 ideal arg1 = (ideal) h->
Data();
1979 int arg2 = (int) ((
long)(h->
next->
Data()));
1993 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2000 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2004 ideal arg1 = (ideal) h->
Data();
2008 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2018 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2025 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2029 ideal arg1 = (ideal) h->
Data();
2041 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2048 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d\n",
currRing->N);
2051 ideal arg1 = (ideal) h->
Data();
2062 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2069 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d\n",
2073 ideal arg1 = (ideal) h->
Data();
2080 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2090 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2097 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2101 ideal arg1 = (ideal) h->
Data();
2114 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2121 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2125 ideal arg1 = (ideal) h->
Data();
2137 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2144 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2148 ideal arg1 = (ideal) h->
Data();
2162 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2171 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2177 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2180 ideal arg1 = (ideal) h->
Data();
2186 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2196 #ifndef MAKE_DISTRIBUTION
2207 #ifdef HAVE_EXTENDED_SYSTEM
2212 # include <hc_newton.h>
2222 char *sys_cmd=(
char *)(h->
Data());
2225 if (strcmp(sys_cmd,
"syz") == 0)
2242 const char *
s=(
const char *)h->
Data();
2243 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2245 else if (strcmp(s,
"posInT_FDegpLength")==0)
2247 else if (strcmp(s,
"posInT_pLength")==0)
2249 else if (strcmp(s,
"posInT0")==0)
2251 else if (strcmp(s,
"posInT1")==0)
2253 else if (strcmp(s,
"posInT2")==0)
2255 else if (strcmp(s,
"posInT11")==0)
2257 else if (strcmp(s,
"posInT110")==0)
2259 else if (strcmp(s,
"posInT13")==0)
2261 else if (strcmp(s,
"posInT15")==0)
2263 else if (strcmp(s,
"posInT17")==0)
2265 else if (strcmp(s,
"posInT17_c")==0)
2267 else if (strcmp(s,
"posInT19")==0)
2269 else Print(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2281 if(strcmp(sys_cmd,
"locNF")==0)
2288 ideal
m=(ideal)h->
Data();
2291 int n=(int)((
long)h->
Data());
2356 if(strcmp(sys_cmd,
"p")==0)
2361 Warn(
"Sorry: not available for release build!");
2367 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2371 int k = (int)(
long)h->
Data();
2379 if(strcmp(sys_cmd,
"r")==0)
2384 Warn(
"Sorry: not available for release build!");
2396 if(strcmp(sys_cmd,
"changeRing")==0)
2400 for (
int i = 1;
i <= varN;
i++)
2403 sprintf(h,
"x%d",
i);
2408 res->
data = (
void*)0L;
2413 if(strcmp(sys_cmd,
"mtrack")==0)
2424 fd = fopen((
char*) h->
Data(),
"w");
2426 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2430 max = (int)(
long)h->
Data();
2435 if (fd !=
NULL) fclose(fd);
2441 if(strcmp(sys_cmd,
"mtrack_all")==0)
2448 fd = fopen((
char*) h->
Data(),
"w");
2450 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2455 if (fd !=
NULL) fclose(fd);
2463 if(strcmp(sys_cmd,
"backtrace")==0)
2471 #if !defined(OM_NDEBUG)
2473 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2477 PrintS(
"\n[om_Info]: \n");
2479 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2480 OM_PRINT(MaxBytesSystem);
2481 OM_PRINT(CurrentBytesSystem);
2482 OM_PRINT(MaxBytesSbrk);
2483 OM_PRINT(CurrentBytesSbrk);
2484 OM_PRINT(MaxBytesMmap);
2485 OM_PRINT(CurrentBytesMmap);
2486 OM_PRINT(UsedBytes);
2487 OM_PRINT(AvailBytes);
2488 OM_PRINT(UsedBytesMalloc);
2489 OM_PRINT(AvailBytesMalloc);
2490 OM_PRINT(MaxBytesFromMalloc);
2491 OM_PRINT(CurrentBytesFromMalloc);
2492 OM_PRINT(MaxBytesFromValloc);
2493 OM_PRINT(CurrentBytesFromValloc);
2494 OM_PRINT(UsedBytesFromValloc);
2495 OM_PRINT(AvailBytesFromValloc);
2497 OM_PRINT(UsedPages);
2498 OM_PRINT(AvailPages);
2499 OM_PRINT(MaxRegionsAlloc);
2500 OM_PRINT(CurrentRegionsAlloc);
2505 PrintS(
"\n[om_Opts]: \n");
2506 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2507 OM_PRINT(
"d", MinTrack);
2508 OM_PRINT(
"d", MinCheck);
2509 OM_PRINT(
"d", MaxTrack);
2510 OM_PRINT(
"d", MaxCheck);
2511 OM_PRINT(
"d", Keep);
2512 OM_PRINT(
"d", HowToReportErrors);
2513 OM_PRINT(
"d", MarkAsStatic);
2514 OM_PRINT(
"u", PagesPerRegion);
2515 OM_PRINT(
"p", OutOfMemoryFunc);
2516 OM_PRINT(
"p", MemoryLowFunc);
2517 OM_PRINT(
"p", ErrorHook);
2522 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2525 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2538 #if defined(PDEBUG) || defined(PDIV_DEBUG)
2539 if(strcmp(sys_cmd,
"pDivStat")==0)
2549 if(strcmp(sys_cmd,
"alarm")==0)
2556 struct itimerval t,o;
2557 memset(&t,0,
sizeof(t));
2558 t.it_value.tv_sec =(unsigned)((
unsigned long)h->
Data());
2559 setitimer(ITIMER_VIRTUAL,&t,&o);
2569 if(strcmp(sys_cmd,
"red")==0)
2584 if(strcmp(sys_cmd,
"fastcomb")==0)
2592 Warn(
"Wrong types for poly= comb(ideal,poly)");
2605 if(strcmp(sys_cmd,
"comb")==0)
2613 Warn(
"Wrong types for poly= comb(ideal,poly)");
2627 if(strcmp(sys_cmd,
"listall")==0)
2629 void listall(
int showproc);
2639 if(strcmp(sys_cmd,
"proclist")==0)
2641 void piShowProcList();
2649 if(strcmp(sys_cmd,
"newton")==0)
2655 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2664 for (i=0;pp!=
NULL;i++)
2691 L->
m[1].
data=(
void *)(
long)r.achse;
2693 L->
m[2].
data=(
void *)(
long)r.deg;
2697 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2699 int anz = r.anz_punkte;
2702 for (i=0; i<anz*
dim; i++)
2705 L->
m[4].
data=(
void *)v;
2712 (*w)[
i] = r.deg_tab[
i];
2715 while (r.deg_tab[i-1] != -2);
2717 L->
m[5].
data=(
void *)w;
2726 res->
data=(
void *)L;
2749 if (strcmp(sys_cmd,
"minpoly") == 0)
2753 Werror(
"expected exactly one argument: %s",
2754 "a square matrix with number entries");
2764 WerrorS(
"expected exactly one argument: "
2765 "a square matrix with number entries");
2772 res->
data = (
void *)theMinPoly;
2773 for (
int i = 0;
i <
n;
i++)
delete[] ml[
i];
2775 delete[] polyCoeffs;
2782 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2790 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2799 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2808 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2816 #if 0 // for testing only
2817 if (strcmp(sys_cmd,
"GF") == 0)
2833 if (strcmp(sys_cmd,
"std") == 0)
2839 i1=(ideal)h->
CopyD();
2845 i2=(int)((
long)h->
Data());
2855 if (strcmp(sys_cmd,
"svd") == 0)
2870 if (strcmp(sys_cmd,
"DLL") == 0)
2872 typedef void (*Void_Func)();
2873 typedef int (*Int_Func)(int);
2883 if (
f!=
NULL) printf(
"%d\n",
f(i));
2884 else PrintS(
"cannot find PlusDll\n");
2892 else PrintS(
"cannot find TestDll\n");
2899 #ifdef HAVE_RING2TOM
2901 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2911 #ifdef HAVE_VANIDEAL
2912 if (strcmp(sys_cmd,
"createG0")==0)
2937 if (strcmp(sys_cmd,
"redNF_ring")==0)
2942 ideal
G = (ideal) h->
Data();
2950 if (strcmp(sys_cmd,
"hilbroune") == 0)
2955 I=(ideal)h->
CopyD();
2964 if (strcmp(sys_cmd,
"f5")==0)
2973 ideal
G = (ideal) h->
Data();
2977 opt = (int) (
long) h->
Data();
2985 plus = (int) (
long) h->
Data();
2993 termination = (int) (
long) h->
Data();
2999 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
3006 if (strcmp(sys_cmd,
"NF_ring")==0)
3011 ideal
G = (ideal) h->
Data();
3017 if (strcmp(sys_cmd,
"spoly")==0)
3028 if (strcmp(sys_cmd,
"testGB")==0)
3030 ideal I = (ideal) h->
Data();
3032 ideal GI = (ideal) h->
Data();
3041 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3047 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3055 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3062 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3068 #ifdef HAVE_RATGRING
3069 if (strcmp(sys_cmd,
"intratNF") == 0)
3084 I=(ideal)h->
CopyD();
3092 is=(int)((
long)(h->
Data()));
3100 for(k=0; k < id; k++)
3104 Print(
"starting redRat\n");
3122 if (strcmp(sys_cmd,
"ratNF") == 0)
3141 is=(int)((
long)(h->
Data()));
3156 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3174 is=(int)((
long)(h->
Data()));
3188 #endif // HAVE_RATGRING
3190 if (strcmp(sys_cmd,
"ratVar") == 0)
3207 return (start==0)||(end==0)||(start>end);
3211 if (strcmp(sys_cmd,
"unifastmult")==0)
3221 if (strcmp(sys_cmd,
"multifastmult")==0)
3231 if (strcmp(sys_cmd,
"mults")==0)
3238 if (strcmp(sys_cmd,
"fastpower")==0)
3243 int n=(int)((
long)h->
Data());
3249 if (strcmp(sys_cmd,
"normalpower")==0)
3253 int n=(int)((
long)h->
Data());
3259 if (strcmp(sys_cmd,
"MCpower")==0)
3264 int n=(int)((
long)h->
Data());
3270 if (strcmp(sys_cmd,
"bit_subst")==0)
3282 if (strcmp(sys_cmd,
"gcd") == 0)
3300 char *
s=(
char *)h->
Data();
3315 if (strcmp(sys_cmd,
"subring") == 0)
3329 if (strcmp(sys_cmd,
"HNF") == 0)
3350 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3356 double error= atof (s);
3368 if (strcmp(sys_cmd,
"python") == 0)
3373 c=(
const char*)h->
Data();
3374 if (!PyInitialized) {
3422 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3426 char* filename = (
char*)h->
Data();
3427 FILE*
f = fopen(filename,
"r");
3430 WerrorS(
"invalid file name (in paths use '/')");
3433 mpz_t
m; mpz_init(m);
3434 mpz_inp_str(m, f, 10);
3438 res->
data = (
void*)n;
3443 WerrorS(
"expected valid file name as a string");
3455 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3464 int validEntries = 0;
3465 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3467 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3468 sizeof(
int) * jvec->
rows()) == 0)
3470 if (validEntries == 0)
3474 r->
resize(validEntries + 1);
3475 (*r)[validEntries] = k + 1;
3481 res->
data = (
void*)r;
3486 WerrorS(
"expected two non-empty intvecs as arguments");
3497 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3505 int ir = ivec->
rows();
int jr = jvec->
rows();
3506 int r = jr;
if (ir < jr) r = ir;
3507 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3508 sizeof(
int) * r) != 0))
3511 res->
data = (
void*)(
long)
r;
3516 WerrorS(
"expected two non-empty intvecs as arguments");
3522 if(strcmp(sys_cmd,
"henselfactors")==0)
3535 int xIndex = (int)(
long)h->
Data();
3536 int yIndex = (int)(
long)h->
next->
Data();
3548 res->
data = (
char *)L;
3553 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3559 if(strcmp(sys_cmd,
"neworder")==0)
3573 if (strcmp(sys_cmd,
"astep") == 0)
3578 I=(ideal)h->
CopyD();
3591 if (strcmp(sys_cmd,
"PrintMat") == 0)
3601 a=(int)((
long)(h->
Data()));
3606 b=(int)((
long)(h->
Data()));
3621 metric=(int)((
long)(h->
Data()));
3632 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3645 if(strcmp(sys_cmd,
"NCGetType")==0)
3651 res->
data=(
void *)(-1L);
3658 if(strcmp(sys_cmd,
"ForceSCA")==0)
3665 b = (int)((
long)(h->
Data()));
3671 e = (int)((
long)(h->
Data()));
3682 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3694 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3706 if(strcmp(sys_cmd,
"test64")==0)
3722 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3728 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3731 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3733 n_SwitchChinRem=(int)(
long)h->
Data();
3739 if(strcmp(sys_cmd,
"LU")==0)
3749 res->
data=(
char*)bb;
3754 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3766 #endif // HAVE_EXTENDED_SYSTEM
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
ideal Mfwalk(ideal G, intvec *ivstart, intvec *ivtarget)
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)
int posInT2(const TSet set, const int length, LObject &p)
matrix singntl_LLL(matrix m, const ring s)
intvec * Mfpertvector(ideal G, intvec *ivtarget)
static void * feOptValue(feOptIndex opt)
matrix evRowElim(matrix M, int i, int j, int k)
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)
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)
const CanonicalForm CFMap CFMap int &both_non_zero int n
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)
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)
static bool rIsPluralRing(const ring r)
we must always have this test!
ideal Mfrwalk(ideal G, intvec *ivstart, intvec *ivtarget, int weight_rad)
CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
static int pLength(poly a)
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)
static poly fglmNewLinearCombination(ideal source, poly monset)
void printBlackboxTypes()
list all defined type (for debugging)
void feStringAppendBrowsers(int warn)
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)
ideal Mprwalk(ideal Go, intvec *curr_weight, intvec *target_weight, int weight_rad, int op_deg, int tp_deg, ring baseRing)
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)
void StringSetS(const char *st)
int M3ivSame(intvec *temp, intvec *u, intvec *v)
ideal Mrwalk(ideal Go, intvec *orig_M, intvec *target_M, int weight_rad, int pert_deg, ring baseRing)
poly pLPshift(poly p, int sh, int uptodeg, int lV)
const char feNotImplemented[]
struct fe_option feOptSpec[]
ideal Mpwalk(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight, int nP)
const char * omError2Serror(omError_t error)
intvec * MwalkNextWeight(intvec *curr_weight, intvec *target_weight, ideal G)
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)
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
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)
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)
int pLastVblock(poly p, int lV)
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
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)
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)
static const int SW_USE_QGCD
set to 1 to use Encarnacion GCD over Q(a)
coeffs basecoeffs() const
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)
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)
#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)
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)
ideal Mwalk(ideal Go, intvec *orig_M, intvec *target_M, ring baseRing)
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)
#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)
static poly fglmLinearCombination(ideal source, poly monset)
#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)