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;
305 if(strcmp(sys_cmd,
"executable")==0)
311 if(s==
NULL) s=(
char*)
"";
321 if(strcmp(sys_cmd,
"nc_hilb") == 0)
327 i = (ideal)h->
Data();
335 lV = (int)(
long)h->
Data();
349 if(strcmp(sys_cmd,
"sh")==0)
353 WerrorS(
"shell execution is disallowed in restricted mode");
366 if(strcmp(sys_cmd,
"reduce_bound")==0)
380 pid = (ideal)h->
CopyD();
395 if(strcmp(sys_cmd,
"uname")==0)
403 if(strcmp(sys_cmd,
"with")==0)
413 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else 414 char *
s=(
char *)h->
Data();
427 #ifdef TEST_MAC_ORDER 432 #ifdef HAVE_DYNAMIC_LOADING 455 if (strcmp(sys_cmd,
"browsers")==0)
465 if (strcmp(sys_cmd,
"pid")==0)
468 res->
data=(
void *)(
long) getpid();
473 if (strcmp(sys_cmd,
"getenv")==0)
491 if (strcmp(sys_cmd,
"setenv")==0)
508 WerrorS(
"setenv not supported on this platform");
514 if (strcmp(sys_cmd,
"Singular") == 0)
523 if (strcmp(sys_cmd,
"SingularLib") == 0)
533 if (strstr(sys_cmd,
"--") == sys_cmd)
535 if (strcmp(sys_cmd,
"--") == 0)
543 Werror(
"Unknown option %s", sys_cmd);
544 WerrorS(
"Use 'system(\"--\");' for listing of available options");
559 const char *
r=(
const char*)
feOptSpec[opt].value;
573 WerrorS(
"Need string or int argument to set option value");
576 const char* errormsg;
581 Werror(
"Need string argument to set value of option %s", sys_cmd);
585 if (errormsg !=
NULL)
586 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)h->
Data()), errormsg);
591 if (errormsg !=
NULL)
592 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*) h->
Data(), errormsg);
599 if (strcmp(sys_cmd,
"HC")==0)
607 if(strcmp(sys_cmd,
"random")==0)
630 if (strcmp(sys_cmd,
"std_syz") == 0)
636 i1=(ideal)h->
CopyD();
642 i2=(int)((
long)h->
Data());
651 if (strcmp(sys_cmd,
"denom_list")==0)
660 if(strcmp(sys_cmd,
"complexNearZero")==0)
667 WerrorS(
"unsupported ground field!");
685 if(strcmp(sys_cmd,
"getPrecDigits")==0)
690 WerrorS(
"unsupported ground field!");
701 if(strcmp(sys_cmd,
"lduDecomp")==0)
709 lduDecomp(aMat, pMat, lMat, dMat, uMat, l, u, prodLU);
720 res->
data = (
char *)L;
730 if(strcmp(sys_cmd,
"lduSolve")==0)
771 Werror(
"first matrix (%d x %d) is not quadratic",
777 Werror(
"second matrix (%d x %d) is not quadratic",
783 Werror(
"third matrix (%d x %d) is not quadratic",
789 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
796 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
801 bVec, xVec, homogSolSpace);
824 if (strcmp(sys_cmd,
"shared") == 0)
826 #ifndef SI_COUNTEDREF_AUTOLOAD 833 else if (strcmp(sys_cmd,
"reference") == 0)
835 #ifndef SI_COUNTEDREF_AUTOLOAD 844 #ifdef HAVE_SIMPLEIPC 845 if (strcmp(sys_cmd,
"semaphore")==0)
858 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
865 if (strcmp(sys_cmd,
"reserve")==0)
873 res->
data=(
void*)(
long)
p;
880 if (strcmp(sys_cmd,
"reservedLink")==0)
890 if (strcmp(sys_cmd,
"install")==0)
903 if (strcmp(sys_cmd,
"newstruct")==0)
909 char *n=(
char*)h->
Data();
916 newstruct_desc desc=(newstruct_desc)bb->data;
920 else Werror(
"'%s' is not a newstruct",n);
922 else Werror(
"'%s' is not a blackbox object",n);
928 if (strcmp(sys_cmd,
"blackbox")==0)
936 if (strcmp(sys_cmd,
"absFact") == 0)
953 l->
m[0].
data=(
void *)f;
955 l->
m[1].
data=(
void *)v;
957 l->
m[2].
data=(
void*) mipos;
959 l->
m[3].
data=(
void*) (
long) n;
969 if (strcmp(sys_cmd,
"LLL") == 0)
992 #if __FLINT_RELEASE >= 20500 993 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1014 WerrorS(
"matrix,int or bigint,int expected");
1019 if(((
int)((
long)(h->
next->
Data())) != 0) && (
int)((long)(h->
next->
Data()) != 1))
1021 WerrorS(
"int is different from 0, 1");
1046 for(
int i = 1;
i<=m->
rows();
i++)
1051 m = singflint_LLL(m,T);
1064 for(
int i = 1;
i<=m->
rows();
i++)
1066 m = singflint_LLL(m,T);
1086 #ifdef HAVE_SHIFTBBA 1087 if (strcmp(sys_cmd,
"stest") == 0)
1094 int sh=(int)((
long)(h->
Data()));
1096 int uptodeg=(int)((
long)(h->
Data()));
1098 int lVblock=(int)((
long)(h->
Data()));
1101 WerrorS(
"negative shift for pLPshift");
1105 if (L+sh-1 > uptodeg)
1107 WerrorS(
"pLPshift: too big shift requested\n");
1119 #ifdef HAVE_SHIFTBBA 1120 if (strcmp(sys_cmd,
"btest") == 0)
1127 int lV=(int)((
long)(h->
Data()));
1137 #ifdef HAVE_SHIFTBBA 1138 if (strcmp(sys_cmd,
"shrinktest") == 0)
1145 int lV=(int)((
long)(h->
Data()));
1159 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1164 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1169 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1174 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1179 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1184 if(strcmp(sys_cmd,
"pcvDim")==0)
1189 if(strcmp(sys_cmd,
"pcvBasis")==0)
1196 #ifdef HAVE_EIGENVAL 1197 if(strcmp(sys_cmd,
"hessenberg")==0)
1204 #ifdef HAVE_EIGENVAL 1205 if(strcmp(sys_cmd,
"eigenvals")==0)
1212 #ifdef HAVE_EIGENVAL 1213 if(strcmp(sys_cmd,
"rowelim")==0)
1220 #ifdef HAVE_EIGENVAL 1221 if(strcmp(sys_cmd,
"rowcolswap")==0)
1229 if(strcmp(sys_cmd,
"gmsnf")==0)
1231 return gmsNF(res,h);
1236 if(strcmp(sys_cmd,
"contributors") == 0)
1240 "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");
1245 #ifdef HAVE_SPECTRUM 1246 if(strcmp(sys_cmd,
"spectrum") == 0)
1266 if(strcmp(sys_cmd,
"semic") == 0)
1281 if(strcmp(sys_cmd,
"spadd") == 0)
1292 if(strcmp(sys_cmd,
"spmul") == 0)
1304 #define HAVE_SHEAFCOH_TRICKS 1 1306 #ifdef HAVE_SHEAFCOH_TRICKS 1307 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1313 int m = (int)( (
long)h->
Data() );
1325 if (strcmp(sys_cmd,
"twostd") == 0)
1330 I=(ideal)h->
CopyD();
1344 if (strcmp(sys_cmd,
"bracket") == 0)
1362 if (strcmp(sys_cmd,
"env")==0)
1366 ring
r = (ring)h->
Data();
1373 WerrorS(
"`system(\"env\",<ring>)` expected");
1381 if (strcmp(sys_cmd,
"opp")==0)
1385 ring
r=(ring)h->
Data();
1392 WerrorS(
"`system(\"opp\",<ring>)` expected");
1400 if (strcmp(sys_cmd,
"oppose")==0)
1405 ring Rop = (ring)h->
Data();
1418 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1426 #ifdef HAVE_SHIFTBBA 1427 if (strcmp(sys_cmd,
"freegb") == 0)
1432 ideal I=(ideal)h->
CopyD();
1434 int uptodeg=(int)((
long)(h->
Data()));
1436 int lVblock=(int)((
long)(h->
Data()));
1455 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1462 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1485 if (strcmp(sys_cmd,
"walkInitials") == 0)
1489 WerrorS(
"system(\"walkInitials\", ideal) expected");
1492 res->
data = (
void*) walkInitials((ideal) h->
Data());
1502 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1508 res->
data = (
intvec*) walkAddIntVec(arg1, arg2);
1517 #ifdef MwaklNextWeight 1518 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1525 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1538 #endif //MWalkNextWeight 1542 if(strcmp(sys_cmd,
"Mivdp") == 0)
1546 WerrorS(
"system(\"Mivdp\", int) expected");
1551 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1555 int arg1 = (int) ((
long)(h->
Data()));
1565 if(strcmp(sys_cmd,
"Mivlp") == 0)
1569 WerrorS(
"system(\"Mivlp\", int) expected");
1574 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1578 int arg1 = (int) ((
long)(h->
Data()));
1589 if(strcmp(sys_cmd,
"MpDiv") == 0)
1606 if(strcmp(sys_cmd,
"MpMult") == 0)
1622 if (strcmp(sys_cmd,
"MivSame") == 0)
1650 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1680 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1686 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1690 ideal
id = (ideal) h->
Data();
1702 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1706 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1719 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1723 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1726 int arg1 = (int) ((
long)(h->
Data()));
1736 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1740 ideal arg1 = (ideal) h->
Data();
1752 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1756 ideal arg1 = (ideal) h->
Data();
1768 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1772 ideal arg1 = (ideal) h->
Data();
1783 if(strcmp(sys_cmd,
"MivUnit") == 0)
1787 int arg1 = (int) ((
long)(h->
Data()));
1797 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1811 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1815 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1829 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1833 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1836 int arg1 = (int) ((
long)(h->
Data()));
1846 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1853 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1869 #ifdef MPertNextWeight 1870 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1876 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1881 ideal arg2 = (ideal) h->
next->
Data();
1889 #endif //MPertNextWeight 1893 #ifdef Mivperttarget 1894 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1898 ideal arg1 = (ideal) h->
Data();
1906 #endif //Mivperttarget 1910 if (strcmp(sys_cmd,
"Mwalk") == 0)
1917 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
1921 ideal arg1 = (ideal) h->
CopyD();
1927 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
1937 if (strcmp(sys_cmd,
"Mwalk") == 0)
1946 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
1950 ideal arg1 = (ideal) h->
Data();
1954 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
1961 if (strcmp(sys_cmd,
"Mpwalk") == 0)
1968 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
1971 ideal arg1 = (ideal) h->
Data();
1972 int arg2 = (int) (
long) h->
next->
Data();
1979 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
1989 if (strcmp(sys_cmd,
"Mrwalk") == 0)
1998 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2002 ideal arg1 = (ideal) h->
Data();
2009 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2018 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2025 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2029 ideal arg1 = (ideal) h->
Data();
2030 int arg2 = (int) ((
long)(h->
next->
Data()));
2044 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2051 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2055 ideal arg1 = (ideal) h->
Data();
2059 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2069 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2076 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2080 ideal arg1 = (ideal) h->
Data();
2085 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2094 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2111 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2116 ideal arg1 = (ideal) h->
Data();
2122 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2129 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2138 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2142 ideal arg1 = (ideal) h->
Data();
2151 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2161 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2168 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2172 ideal arg1 = (ideal) h->
Data();
2185 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2192 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2196 ideal arg1 = (ideal) h->
Data();
2208 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2215 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2219 ideal arg1 = (ideal) h->
Data();
2233 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2242 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2248 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2251 ideal arg1 = (ideal) h->
Data();
2257 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2267 #ifndef MAKE_DISTRIBUTION 2278 #ifdef HAVE_EXTENDED_SYSTEM 2283 # include <hc_newton.h> 2294 char *sys_cmd=(
char *)(h->
Data());
2297 if (strcmp(sys_cmd,
"syz") == 0)
2301 const char *
s=(
const char *)h->
Data();
2302 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2304 else if (strcmp(s,
"posInT_FDegpLength")==0)
2306 else if (strcmp(s,
"posInT_pLength")==0)
2308 else if (strcmp(s,
"posInT0")==0)
2310 else if (strcmp(s,
"posInT1")==0)
2312 else if (strcmp(s,
"posInT2")==0)
2314 else if (strcmp(s,
"posInT11")==0)
2316 else if (strcmp(s,
"posInT110")==0)
2318 else if (strcmp(s,
"posInT13")==0)
2320 else if (strcmp(s,
"posInT15")==0)
2322 else if (strcmp(s,
"posInT17")==0)
2324 else if (strcmp(s,
"posInT17_c")==0)
2326 else if (strcmp(s,
"posInT19")==0)
2328 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2340 if(strcmp(sys_cmd,
"locNF")==0)
2347 ideal
m=(ideal)h->
Data();
2350 int n=(int)((
long)h->
Data());
2415 if(strcmp(sys_cmd,
"p")==0)
2420 Warn(
"Sorry: not available for release build!");
2426 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2430 int k = (int)(
long)h->
Data();
2438 if(strcmp(sys_cmd,
"r")==0)
2443 Warn(
"Sorry: not available for release build!");
2455 if(strcmp(sys_cmd,
"changeRing")==0)
2459 for (
int i = 1;
i <= varN;
i++)
2462 sprintf(h,
"x%d",
i);
2467 res->
data = (
void*)0L;
2472 if(strcmp(sys_cmd,
"mtrack")==0)
2483 fd = fopen((
char*) h->
Data(),
"w");
2485 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2489 max = (int)(
long)h->
Data();
2494 if (fd !=
NULL) fclose(fd);
2500 if(strcmp(sys_cmd,
"mtrack_all")==0)
2507 fd = fopen((
char*) h->
Data(),
"w");
2509 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2514 if (fd !=
NULL) fclose(fd);
2522 if(strcmp(sys_cmd,
"backtrace")==0)
2530 #if !defined(OM_NDEBUG) 2532 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2536 PrintS(
"\n[om_Info]: \n");
2538 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name) 2539 OM_PRINT(MaxBytesSystem);
2540 OM_PRINT(CurrentBytesSystem);
2541 OM_PRINT(MaxBytesSbrk);
2542 OM_PRINT(CurrentBytesSbrk);
2543 OM_PRINT(MaxBytesMmap);
2544 OM_PRINT(CurrentBytesMmap);
2545 OM_PRINT(UsedBytes);
2546 OM_PRINT(AvailBytes);
2547 OM_PRINT(UsedBytesMalloc);
2548 OM_PRINT(AvailBytesMalloc);
2549 OM_PRINT(MaxBytesFromMalloc);
2550 OM_PRINT(CurrentBytesFromMalloc);
2551 OM_PRINT(MaxBytesFromValloc);
2552 OM_PRINT(CurrentBytesFromValloc);
2553 OM_PRINT(UsedBytesFromValloc);
2554 OM_PRINT(AvailBytesFromValloc);
2556 OM_PRINT(UsedPages);
2557 OM_PRINT(AvailPages);
2558 OM_PRINT(MaxRegionsAlloc);
2559 OM_PRINT(CurrentRegionsAlloc);
2564 PrintS(
"\n[om_Opts]: \n");
2565 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name) 2566 OM_PRINT(
"d", MinTrack);
2567 OM_PRINT(
"d", MinCheck);
2568 OM_PRINT(
"d", MaxTrack);
2569 OM_PRINT(
"d", MaxCheck);
2570 OM_PRINT(
"d", Keep);
2571 OM_PRINT(
"d", HowToReportErrors);
2572 OM_PRINT(
"d", MarkAsStatic);
2573 OM_PRINT(
"u", PagesPerRegion);
2574 OM_PRINT(
"p", OutOfMemoryFunc);
2575 OM_PRINT(
"p", MemoryLowFunc);
2576 OM_PRINT(
"p", ErrorHook);
2581 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2584 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2597 #if defined(PDEBUG) || defined(PDIV_DEBUG) 2598 if(strcmp(sys_cmd,
"pDivStat")==0)
2608 if(strcmp(sys_cmd,
"alarm")==0)
2615 struct itimerval t,o;
2616 memset(&t,0,
sizeof(t));
2617 t.it_value.tv_sec =(unsigned)((
unsigned long)h->
Data());
2618 setitimer(ITIMER_VIRTUAL,&t,&o);
2628 if(strcmp(sys_cmd,
"red")==0)
2643 if(strcmp(sys_cmd,
"fastcomb")==0)
2651 Warn(
"Wrong types for poly= comb(ideal,poly)");
2664 if(strcmp(sys_cmd,
"comb")==0)
2672 Warn(
"Wrong types for poly= comb(ideal,poly)");
2686 if(strcmp(sys_cmd,
"listall")==0)
2688 void listall(
int showproc);
2698 if(strcmp(sys_cmd,
"proclist")==0)
2700 void piShowProcList();
2708 if(strcmp(sys_cmd,
"newton")==0)
2714 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2723 for (i=0;pp!=
NULL;i++)
2750 L->
m[1].
data=(
void *)(
long)r.achse;
2752 L->
m[2].
data=(
void *)(
long)r.deg;
2756 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2758 int anz = r.anz_punkte;
2761 for (i=0; i<anz*
dim; i++)
2764 L->
m[4].
data=(
void *)v;
2771 (*w)[
i] = r.deg_tab[
i];
2774 while (r.deg_tab[i-1] != -2);
2776 L->
m[5].
data=(
void *)w;
2785 res->
data=(
void *)L;
2808 if (strcmp(sys_cmd,
"minpoly") == 0)
2812 Werror(
"expected exactly one argument: %s",
2813 "a square matrix with number entries");
2823 WerrorS(
"expected exactly one argument: " 2824 "a square matrix with number entries");
2831 res->
data = (
void *)theMinPoly;
2832 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2834 delete[] polyCoeffs;
2841 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2849 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2858 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2867 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2875 #if 0 // for testing only 2876 if (strcmp(sys_cmd,
"GF") == 0)
2893 if (strcmp(sys_cmd,
"svd") == 0)
2908 if (strcmp(sys_cmd,
"DLL") == 0)
2910 typedef void (*Void_Func)();
2911 typedef int (*Int_Func)(int);
2921 if (
f!=
NULL) printf(
"%d\n",
f(i));
2922 else PrintS(
"cannot find PlusDll\n");
2930 else PrintS(
"cannot find TestDll\n");
2937 #ifdef HAVE_RING2TOM 2939 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2949 #ifdef HAVE_VANIDEAL 2950 if (strcmp(sys_cmd,
"createG0")==0)
2975 if (strcmp(sys_cmd,
"redNF_ring")==0)
2980 ideal
G = (ideal) h->
Data();
2988 if (strcmp(sys_cmd,
"hilbroune") == 0)
2993 I=(ideal)h->
CopyD();
3002 if (strcmp(sys_cmd,
"f5")==0)
3011 ideal
G = (ideal) h->
Data();
3015 opt = (int) (
long) h->
Data();
3023 plus = (int) (
long) h->
Data();
3031 termination = (int) (
long) h->
Data();
3037 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
3044 if (strcmp(sys_cmd,
"NF_ring")==0)
3049 ideal
G = (ideal) h->
Data();
3055 if (strcmp(sys_cmd,
"spoly")==0)
3066 if (strcmp(sys_cmd,
"testGB")==0)
3068 ideal I = (ideal) h->
Data();
3070 ideal GI = (ideal) h->
Data();
3079 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3085 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3093 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3100 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3106 #ifdef HAVE_RATGRING 3107 if (strcmp(sys_cmd,
"intratNF") == 0)
3122 I=(ideal)h->
CopyD();
3130 is=(int)((
long)(h->
Data()));
3138 for(k=0; k < id; k++)
3142 PrintS(
"starting redRat\n");
3160 if (strcmp(sys_cmd,
"ratNF") == 0)
3179 is=(int)((
long)(h->
Data()));
3194 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3212 is=(int)((
long)(h->
Data()));
3226 #endif // HAVE_RATGRING 3228 if (strcmp(sys_cmd,
"ratVar") == 0)
3245 return (start==0)||(end==0)||(start>end);
3249 if (strcmp(sys_cmd,
"unifastmult")==0)
3259 if (strcmp(sys_cmd,
"multifastmult")==0)
3269 if (strcmp(sys_cmd,
"mults")==0)
3276 if (strcmp(sys_cmd,
"fastpower")==0)
3281 int n=(int)((
long)h->
Data());
3287 if (strcmp(sys_cmd,
"normalpower")==0)
3291 int n=(int)((
long)h->
Data());
3297 if (strcmp(sys_cmd,
"MCpower")==0)
3302 int n=(int)((
long)h->
Data());
3308 if (strcmp(sys_cmd,
"bit_subst")==0)
3320 if (strcmp(sys_cmd,
"gcd") == 0)
3338 char *
s=(
char *)h->
Data();
3353 if (strcmp(sys_cmd,
"subring") == 0)
3367 if (strcmp(sys_cmd,
"HNF") == 0)
3389 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3397 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3403 double error= atof (s);
3415 if (strcmp(sys_cmd,
"python") == 0)
3420 c=(
const char*)h->
Data();
3421 if (!PyInitialized) {
3469 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3473 char* filename = (
char*)h->
Data();
3474 FILE*
f = fopen(filename,
"r");
3477 WerrorS(
"invalid file name (in paths use '/')");
3480 mpz_t
m; mpz_init(m);
3481 mpz_inp_str(m, f, 10);
3485 res->
data = (
void*)n;
3490 WerrorS(
"expected valid file name as a string");
3502 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3511 int validEntries = 0;
3512 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3514 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3515 sizeof(
int) * jvec->
rows()) == 0)
3517 if (validEntries == 0)
3521 r->
resize(validEntries + 1);
3522 (*r)[validEntries] = k + 1;
3528 res->
data = (
void*)r;
3533 WerrorS(
"expected two non-empty intvecs as arguments");
3544 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3552 int ir = ivec->
rows();
int jr = jvec->
rows();
3553 int r = jr;
if (ir < jr) r = ir;
3554 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3555 sizeof(
int) * r) != 0))
3558 res->
data = (
void*)(
long)
r;
3563 WerrorS(
"expected two non-empty intvecs as arguments");
3569 if(strcmp(sys_cmd,
"henselfactors")==0)
3582 int xIndex = (int)(
long)h->
Data();
3583 int yIndex = (int)(
long)h->
next->
Data();
3595 res->
data = (
char *)L;
3600 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3606 if(strcmp(sys_cmd,
"neworder")==0)
3620 if (strcmp(sys_cmd,
"astep") == 0)
3625 I=(ideal)h->
CopyD();
3638 if (strcmp(sys_cmd,
"PrintMat") == 0)
3648 a=(int)((
long)(h->
Data()));
3653 b=(int)((
long)(h->
Data()));
3668 metric=(int)((
long)(h->
Data()));
3679 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3692 if(strcmp(sys_cmd,
"NCGetType")==0)
3698 res->
data=(
void *)(-1L);
3705 if(strcmp(sys_cmd,
"ForceSCA")==0)
3712 b = (int)((
long)(h->
Data()));
3718 e = (int)((
long)(h->
Data()));
3729 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3741 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3753 if(strcmp(sys_cmd,
"test64")==0)
3769 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3775 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3778 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3780 n_SwitchChinRem=(int)(
long)h->
Data();
3786 if(strcmp(sys_cmd,
"LU")==0)
3796 res->
data=(
char*)bb;
3801 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3808 if(strcmp(sys_cmd,
"sort")==0)
3818 if(strcmp(sys_cmd,
"uniq")==0)
3829 if(strcmp(sys_cmd,
"power1")==0)
3834 res->
data=(
void *)g;
3838 if(strcmp(sys_cmd,
"power2")==0)
3843 for(
int i=0;
i<2000;
i++)
3845 res->
data=(
void *)g;
3848 if(strcmp(sys_cmd,
"power3")==0)
3867 res->
data=(
void *)p2000;
3892 #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)
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)
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)
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)
static poly fglmNewLinearCombination(ideal source, poly monset)
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)
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...
void HilbertSeries_OrbitData(ideal S, int lV, bool IG_CASE)
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)
#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)