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)
292 if(strcmp(sys_cmd,
"alarm")==0)
299 struct itimerval t,o;
300 memset(&t,0,
sizeof(t));
301 t.it_value.tv_sec =(unsigned)((
unsigned long)h->
Data());
302 setitimer(ITIMER_VIRTUAL,&t,&o);
311 if(strcmp(sys_cmd,
"cpu")==0)
314 #ifdef _SC_NPROCESSORS_ONLN 315 cpu=sysconf(_SC_NPROCESSORS_ONLN);
316 #elif defined(_SC_NPROCESSORS_CONF) 317 cpu=sysconf(_SC_NPROCESSORS_CONF);
319 res->
data=(
void *)cpu;
325 if(strcmp(sys_cmd,
"executable")==0)
331 if(s==
NULL) s=(
char*)
"";
340 if(strcmp(sys_cmd,
"neworder")==0)
354 if(strcmp(sys_cmd,
"nc_hilb") == 0)
360 i = (ideal)h->
Data();
368 lV = (int)(
long)h->
Data();
382 if(strcmp(sys_cmd,
"sh")==0)
386 WerrorS(
"shell execution is disallowed in restricted mode");
399 if(strcmp(sys_cmd,
"reduce_bound")==0)
413 pid = (ideal)h->
CopyD();
428 if(strcmp(sys_cmd,
"uname")==0)
436 if(strcmp(sys_cmd,
"with")==0)
446 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else 447 char *
s=(
char *)h->
Data();
460 #ifdef TEST_MAC_ORDER 465 #ifdef HAVE_DYNAMIC_LOADING 488 if (strcmp(sys_cmd,
"browsers")==0)
498 if (strcmp(sys_cmd,
"pid")==0)
501 res->
data=(
void *)(
long) getpid();
506 if (strcmp(sys_cmd,
"getenv")==0)
524 if (strcmp(sys_cmd,
"setenv")==0)
541 WerrorS(
"setenv not supported on this platform");
547 if (strcmp(sys_cmd,
"Singular") == 0)
556 if (strcmp(sys_cmd,
"SingularLib") == 0)
566 if (strstr(sys_cmd,
"--") == sys_cmd)
568 if (strcmp(sys_cmd,
"--") == 0)
576 Werror(
"Unknown option %s", sys_cmd);
577 WerrorS(
"Use 'system(\"--\");' for listing of available options");
592 const char *
r=(
const char*)
feOptSpec[opt].value;
606 WerrorS(
"Need string or int argument to set option value");
609 const char* errormsg;
614 Werror(
"Need string argument to set value of option %s", sys_cmd);
618 if (errormsg !=
NULL)
619 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)h->
Data()), errormsg);
624 if (errormsg !=
NULL)
625 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*) h->
Data(), errormsg);
632 if (strcmp(sys_cmd,
"HC")==0)
640 if(strcmp(sys_cmd,
"random")==0)
663 if (strcmp(sys_cmd,
"std_syz") == 0)
669 i1=(ideal)h->
CopyD();
675 i2=(int)((
long)h->
Data());
684 if (strcmp(sys_cmd,
"denom_list")==0)
693 if(strcmp(sys_cmd,
"complexNearZero")==0)
700 WerrorS(
"unsupported ground field!");
718 if(strcmp(sys_cmd,
"getPrecDigits")==0)
723 WerrorS(
"unsupported ground field!");
734 if(strcmp(sys_cmd,
"lduDecomp")==0)
742 lduDecomp(aMat, pMat, lMat, dMat, uMat, l, u, prodLU);
753 res->
data = (
char *)L;
763 if(strcmp(sys_cmd,
"lduSolve")==0)
804 Werror(
"first matrix (%d x %d) is not quadratic",
810 Werror(
"second matrix (%d x %d) is not quadratic",
816 Werror(
"third matrix (%d x %d) is not quadratic",
822 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
829 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
834 bVec, xVec, homogSolSpace);
857 if (strcmp(sys_cmd,
"shared") == 0)
859 #ifndef SI_COUNTEDREF_AUTOLOAD 866 else if (strcmp(sys_cmd,
"reference") == 0)
868 #ifndef SI_COUNTEDREF_AUTOLOAD 877 #ifdef HAVE_SIMPLEIPC 878 if (strcmp(sys_cmd,
"semaphore")==0)
891 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
898 if (strcmp(sys_cmd,
"reserve")==0)
906 res->
data=(
void*)(
long)
p;
913 if (strcmp(sys_cmd,
"reservedLink")==0)
923 if (strcmp(sys_cmd,
"install")==0)
936 if (strcmp(sys_cmd,
"newstruct")==0)
942 char *n=(
char*)h->
Data();
949 newstruct_desc desc=(newstruct_desc)bb->data;
953 else Werror(
"'%s' is not a newstruct",n);
955 else Werror(
"'%s' is not a blackbox object",n);
961 if (strcmp(sys_cmd,
"blackbox")==0)
969 if (strcmp(sys_cmd,
"absFact") == 0)
986 l->
m[0].
data=(
void *)f;
988 l->
m[1].
data=(
void *)v;
990 l->
m[2].
data=(
void*) mipos;
992 l->
m[3].
data=(
void*) (
long) n;
1002 if (strcmp(sys_cmd,
"LLL") == 0)
1025 #if __FLINT_RELEASE >= 20500 1026 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1047 WerrorS(
"matrix,int or bigint,int expected");
1052 if(((
int)((
long)(h->
next->
Data())) != 0) && (
int)((long)(h->
next->
Data()) != 1))
1054 WerrorS(
"int is different from 0, 1");
1079 for(
int i = 1;
i<=m->
rows();
i++)
1084 m = singflint_LLL(m,T);
1097 for(
int i = 1;
i<=m->
rows();
i++)
1099 m = singflint_LLL(m,T);
1119 #ifdef HAVE_SHIFTBBA 1120 if (strcmp(sys_cmd,
"stest") == 0)
1127 int sh=(int)((
long)(h->
Data()));
1129 int uptodeg=(int)((
long)(h->
Data()));
1131 int lVblock=(int)((
long)(h->
Data()));
1134 WerrorS(
"negative shift for pLPshift");
1138 if (L+sh-1 > uptodeg)
1140 WerrorS(
"pLPshift: too big shift requested\n");
1152 #ifdef HAVE_SHIFTBBA 1153 if (strcmp(sys_cmd,
"btest") == 0)
1160 int lV=(int)((
long)(h->
Data()));
1170 #ifdef HAVE_SHIFTBBA 1171 if (strcmp(sys_cmd,
"shrinktest") == 0)
1178 int lV=(int)((
long)(h->
Data()));
1192 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1197 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1202 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1207 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1212 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1217 if(strcmp(sys_cmd,
"pcvDim")==0)
1222 if(strcmp(sys_cmd,
"pcvBasis")==0)
1229 #ifdef HAVE_EIGENVAL 1230 if(strcmp(sys_cmd,
"hessenberg")==0)
1237 #ifdef HAVE_EIGENVAL 1238 if(strcmp(sys_cmd,
"eigenvals")==0)
1245 #ifdef HAVE_EIGENVAL 1246 if(strcmp(sys_cmd,
"rowelim")==0)
1253 #ifdef HAVE_EIGENVAL 1254 if(strcmp(sys_cmd,
"rowcolswap")==0)
1262 if(strcmp(sys_cmd,
"gmsnf")==0)
1264 return gmsNF(res,h);
1269 if(strcmp(sys_cmd,
"contributors") == 0)
1273 "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");
1278 #ifdef HAVE_SPECTRUM 1279 if(strcmp(sys_cmd,
"spectrum") == 0)
1299 if(strcmp(sys_cmd,
"semic") == 0)
1314 if(strcmp(sys_cmd,
"spadd") == 0)
1325 if(strcmp(sys_cmd,
"spmul") == 0)
1337 #define HAVE_SHEAFCOH_TRICKS 1 1339 #ifdef HAVE_SHEAFCOH_TRICKS 1340 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1346 int m = (int)( (
long)h->
Data() );
1358 if (strcmp(sys_cmd,
"twostd") == 0)
1363 I=(ideal)h->
CopyD();
1377 if (strcmp(sys_cmd,
"bracket") == 0)
1395 if (strcmp(sys_cmd,
"env")==0)
1399 ring
r = (ring)h->
Data();
1406 WerrorS(
"`system(\"env\",<ring>)` expected");
1414 if (strcmp(sys_cmd,
"opp")==0)
1418 ring
r=(ring)h->
Data();
1425 WerrorS(
"`system(\"opp\",<ring>)` expected");
1433 if (strcmp(sys_cmd,
"oppose")==0)
1438 ring Rop = (ring)h->
Data();
1451 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1459 #ifdef HAVE_SHIFTBBA 1460 if (strcmp(sys_cmd,
"freegb") == 0)
1465 ideal I=(ideal)h->
CopyD();
1467 int uptodeg=(int)((
long)(h->
Data()));
1469 int lVblock=(int)((
long)(h->
Data()));
1488 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1495 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1518 if (strcmp(sys_cmd,
"walkInitials") == 0)
1522 WerrorS(
"system(\"walkInitials\", ideal) expected");
1525 res->
data = (
void*) walkInitials((ideal) h->
Data());
1535 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1541 res->
data = (
intvec*) walkAddIntVec(arg1, arg2);
1550 #ifdef MwaklNextWeight 1551 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1558 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1571 #endif //MWalkNextWeight 1575 if(strcmp(sys_cmd,
"Mivdp") == 0)
1579 WerrorS(
"system(\"Mivdp\", int) expected");
1584 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1588 int arg1 = (int) ((
long)(h->
Data()));
1598 if(strcmp(sys_cmd,
"Mivlp") == 0)
1602 WerrorS(
"system(\"Mivlp\", int) expected");
1607 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1611 int arg1 = (int) ((
long)(h->
Data()));
1622 if(strcmp(sys_cmd,
"MpDiv") == 0)
1639 if(strcmp(sys_cmd,
"MpMult") == 0)
1655 if (strcmp(sys_cmd,
"MivSame") == 0)
1683 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1713 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1719 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1723 ideal
id = (ideal) h->
Data();
1735 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1739 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1752 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1756 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1759 int arg1 = (int) ((
long)(h->
Data()));
1769 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1773 ideal arg1 = (ideal) h->
Data();
1785 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1789 ideal arg1 = (ideal) h->
Data();
1801 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1805 ideal arg1 = (ideal) h->
Data();
1816 if(strcmp(sys_cmd,
"MivUnit") == 0)
1820 int arg1 = (int) ((
long)(h->
Data()));
1830 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1844 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1848 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1862 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1866 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1869 int arg1 = (int) ((
long)(h->
Data()));
1879 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1886 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1902 #ifdef MPertNextWeight 1903 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1909 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1914 ideal arg2 = (ideal) h->
next->
Data();
1922 #endif //MPertNextWeight 1926 #ifdef Mivperttarget 1927 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1931 ideal arg1 = (ideal) h->
Data();
1939 #endif //Mivperttarget 1943 if (strcmp(sys_cmd,
"Mwalk") == 0)
1950 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
1954 ideal arg1 = (ideal) h->
CopyD();
1960 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
1970 if (strcmp(sys_cmd,
"Mwalk") == 0)
1979 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
1983 ideal arg1 = (ideal) h->
Data();
1987 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
1994 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2001 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2004 ideal arg1 = (ideal) h->
Data();
2005 int arg2 = (int) (
long) h->
next->
Data();
2012 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2022 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2031 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2035 ideal arg1 = (ideal) h->
Data();
2042 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2051 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2058 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2062 ideal arg1 = (ideal) h->
Data();
2063 int arg2 = (int) ((
long)(h->
next->
Data()));
2077 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2084 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2088 ideal arg1 = (ideal) h->
Data();
2092 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2102 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2109 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2113 ideal arg1 = (ideal) h->
Data();
2118 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2127 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2144 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2149 ideal arg1 = (ideal) h->
Data();
2155 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2162 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2171 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2175 ideal arg1 = (ideal) h->
Data();
2184 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2194 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2201 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2205 ideal arg1 = (ideal) h->
Data();
2218 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2225 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2229 ideal arg1 = (ideal) h->
Data();
2241 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2248 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2252 ideal arg1 = (ideal) h->
Data();
2266 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2275 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2281 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2284 ideal arg1 = (ideal) h->
Data();
2290 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2300 #ifndef MAKE_DISTRIBUTION 2311 #ifdef HAVE_EXTENDED_SYSTEM 2315 # include <hc_newton.h> 2326 char *sys_cmd=(
char *)(h->
Data());
2329 if (strcmp(sys_cmd,
"syz") == 0)
2333 const char *
s=(
const char *)h->
Data();
2334 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2336 else if (strcmp(s,
"posInT_FDegpLength")==0)
2338 else if (strcmp(s,
"posInT_pLength")==0)
2340 else if (strcmp(s,
"posInT0")==0)
2342 else if (strcmp(s,
"posInT1")==0)
2344 else if (strcmp(s,
"posInT2")==0)
2346 else if (strcmp(s,
"posInT11")==0)
2348 else if (strcmp(s,
"posInT110")==0)
2350 else if (strcmp(s,
"posInT13")==0)
2352 else if (strcmp(s,
"posInT15")==0)
2354 else if (strcmp(s,
"posInT17")==0)
2356 else if (strcmp(s,
"posInT17_c")==0)
2358 else if (strcmp(s,
"posInT19")==0)
2360 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2372 if(strcmp(sys_cmd,
"locNF")==0)
2379 ideal
m=(ideal)h->
Data();
2382 int n=(int)((
long)h->
Data());
2447 if(strcmp(sys_cmd,
"p")==0)
2452 Warn(
"Sorry: not available for release build!");
2458 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2462 int k = (int)(
long)h->
Data();
2470 if(strcmp(sys_cmd,
"r")==0)
2475 Warn(
"Sorry: not available for release build!");
2487 if(strcmp(sys_cmd,
"changeRing")==0)
2491 for (
int i = 1;
i <= varN;
i++)
2494 sprintf(h,
"x%d",
i);
2499 res->
data = (
void*)0L;
2504 if(strcmp(sys_cmd,
"mtrack")==0)
2515 fd = fopen((
char*) h->
Data(),
"w");
2517 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2521 max = (int)(
long)h->
Data();
2526 if (fd !=
NULL) fclose(fd);
2532 if(strcmp(sys_cmd,
"mtrack_all")==0)
2539 fd = fopen((
char*) h->
Data(),
"w");
2541 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2546 if (fd !=
NULL) fclose(fd);
2554 if(strcmp(sys_cmd,
"backtrace")==0)
2562 #if !defined(OM_NDEBUG) 2564 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2568 PrintS(
"\n[om_Info]: \n");
2570 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name) 2571 OM_PRINT(MaxBytesSystem);
2572 OM_PRINT(CurrentBytesSystem);
2573 OM_PRINT(MaxBytesSbrk);
2574 OM_PRINT(CurrentBytesSbrk);
2575 OM_PRINT(MaxBytesMmap);
2576 OM_PRINT(CurrentBytesMmap);
2577 OM_PRINT(UsedBytes);
2578 OM_PRINT(AvailBytes);
2579 OM_PRINT(UsedBytesMalloc);
2580 OM_PRINT(AvailBytesMalloc);
2581 OM_PRINT(MaxBytesFromMalloc);
2582 OM_PRINT(CurrentBytesFromMalloc);
2583 OM_PRINT(MaxBytesFromValloc);
2584 OM_PRINT(CurrentBytesFromValloc);
2585 OM_PRINT(UsedBytesFromValloc);
2586 OM_PRINT(AvailBytesFromValloc);
2588 OM_PRINT(UsedPages);
2589 OM_PRINT(AvailPages);
2590 OM_PRINT(MaxRegionsAlloc);
2591 OM_PRINT(CurrentRegionsAlloc);
2596 PrintS(
"\n[om_Opts]: \n");
2597 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name) 2598 OM_PRINT(
"d", MinTrack);
2599 OM_PRINT(
"d", MinCheck);
2600 OM_PRINT(
"d", MaxTrack);
2601 OM_PRINT(
"d", MaxCheck);
2602 OM_PRINT(
"d", Keep);
2603 OM_PRINT(
"d", HowToReportErrors);
2604 OM_PRINT(
"d", MarkAsStatic);
2605 OM_PRINT(
"u", PagesPerRegion);
2606 OM_PRINT(
"p", OutOfMemoryFunc);
2607 OM_PRINT(
"p", MemoryLowFunc);
2608 OM_PRINT(
"p", ErrorHook);
2613 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2616 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2629 #if defined(PDEBUG) || defined(PDIV_DEBUG) 2630 if(strcmp(sys_cmd,
"pDivStat")==0)
2640 if(strcmp(sys_cmd,
"red")==0)
2655 if(strcmp(sys_cmd,
"fastcomb")==0)
2663 Warn(
"Wrong types for poly= comb(ideal,poly)");
2676 if(strcmp(sys_cmd,
"comb")==0)
2684 Warn(
"Wrong types for poly= comb(ideal,poly)");
2698 if(strcmp(sys_cmd,
"listall")==0)
2700 void listall(
int showproc);
2710 if(strcmp(sys_cmd,
"proclist")==0)
2712 void piShowProcList();
2720 if(strcmp(sys_cmd,
"newton")==0)
2726 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2735 for (i=0;pp!=
NULL;i++)
2762 L->
m[1].
data=(
void *)(
long)r.achse;
2764 L->
m[2].
data=(
void *)(
long)r.deg;
2768 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2770 int anz = r.anz_punkte;
2773 for (i=0; i<anz*
dim; i++)
2776 L->
m[4].
data=(
void *)v;
2783 (*w)[
i] = r.deg_tab[
i];
2786 while (r.deg_tab[i-1] != -2);
2788 L->
m[5].
data=(
void *)w;
2797 res->
data=(
void *)L;
2820 if (strcmp(sys_cmd,
"minpoly") == 0)
2824 Werror(
"expected exactly one argument: %s",
2825 "a square matrix with number entries");
2835 WerrorS(
"expected exactly one argument: " 2836 "a square matrix with number entries");
2843 res->
data = (
void *)theMinPoly;
2844 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2846 delete[] polyCoeffs;
2853 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2861 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2870 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2879 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2887 #if 0 // for testing only 2888 if (strcmp(sys_cmd,
"GF") == 0)
2905 if (strcmp(sys_cmd,
"svd") == 0)
2920 if (strcmp(sys_cmd,
"DLL") == 0)
2922 typedef void (*Void_Func)();
2923 typedef int (*Int_Func)(int);
2933 if (
f!=
NULL) printf(
"%d\n",
f(i));
2934 else PrintS(
"cannot find PlusDll\n");
2942 else PrintS(
"cannot find TestDll\n");
2949 #ifdef HAVE_RING2TOM 2951 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2961 #ifdef HAVE_VANIDEAL 2962 if (strcmp(sys_cmd,
"createG0")==0)
2987 if (strcmp(sys_cmd,
"redNF_ring")==0)
2992 ideal
G = (ideal) h->
Data();
3000 if (strcmp(sys_cmd,
"hilbroune") == 0)
3005 I=(ideal)h->
CopyD();
3014 if (strcmp(sys_cmd,
"f5")==0)
3023 ideal
G = (ideal) h->
Data();
3027 opt = (int) (
long) h->
Data();
3035 plus = (int) (
long) h->
Data();
3043 termination = (int) (
long) h->
Data();
3049 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
3056 if (strcmp(sys_cmd,
"NF_ring")==0)
3061 ideal
G = (ideal) h->
Data();
3067 if (strcmp(sys_cmd,
"spoly")==0)
3078 if (strcmp(sys_cmd,
"testGB")==0)
3080 ideal I = (ideal) h->
Data();
3082 ideal GI = (ideal) h->
Data();
3091 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3097 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3105 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3112 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3118 #ifdef HAVE_RATGRING 3119 if (strcmp(sys_cmd,
"intratNF") == 0)
3134 I=(ideal)h->
CopyD();
3142 is=(int)((
long)(h->
Data()));
3150 for(k=0; k < id; k++)
3154 PrintS(
"starting redRat\n");
3172 if (strcmp(sys_cmd,
"ratNF") == 0)
3191 is=(int)((
long)(h->
Data()));
3206 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3224 is=(int)((
long)(h->
Data()));
3238 #endif // HAVE_RATGRING 3240 if (strcmp(sys_cmd,
"ratVar") == 0)
3257 return (start==0)||(end==0)||(start>end);
3261 if (strcmp(sys_cmd,
"unifastmult")==0)
3271 if (strcmp(sys_cmd,
"multifastmult")==0)
3281 if (strcmp(sys_cmd,
"mults")==0)
3288 if (strcmp(sys_cmd,
"fastpower")==0)
3293 int n=(int)((
long)h->
Data());
3299 if (strcmp(sys_cmd,
"normalpower")==0)
3303 int n=(int)((
long)h->
Data());
3309 if (strcmp(sys_cmd,
"MCpower")==0)
3314 int n=(int)((
long)h->
Data());
3320 if (strcmp(sys_cmd,
"bit_subst")==0)
3332 if (strcmp(sys_cmd,
"gcd") == 0)
3348 char *
s=(
char *)h->
Data();
3363 if (strcmp(sys_cmd,
"subring") == 0)
3377 if (strcmp(sys_cmd,
"HNF") == 0)
3399 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3407 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3413 double error= atof (s);
3425 if (strcmp(sys_cmd,
"python") == 0)
3430 c=(
const char*)h->
Data();
3431 if (!PyInitialized) {
3479 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3483 char* filename = (
char*)h->
Data();
3484 FILE*
f = fopen(filename,
"r");
3487 WerrorS(
"invalid file name (in paths use '/')");
3490 mpz_t
m; mpz_init(m);
3491 mpz_inp_str(m, f, 10);
3495 res->
data = (
void*)n;
3500 WerrorS(
"expected valid file name as a string");
3512 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3521 int validEntries = 0;
3522 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3524 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3525 sizeof(
int) * jvec->
rows()) == 0)
3527 if (validEntries == 0)
3531 r->
resize(validEntries + 1);
3532 (*r)[validEntries] = k + 1;
3538 res->
data = (
void*)r;
3543 WerrorS(
"expected two non-empty intvecs as arguments");
3554 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3562 int ir = ivec->
rows();
int jr = jvec->
rows();
3563 int r = jr;
if (ir < jr) r = ir;
3564 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3565 sizeof(
int) * r) != 0))
3568 res->
data = (
void*)(
long)
r;
3573 WerrorS(
"expected two non-empty intvecs as arguments");
3579 if(strcmp(sys_cmd,
"henselfactors")==0)
3592 int xIndex = (int)(
long)h->
Data();
3593 int yIndex = (int)(
long)h->
next->
Data();
3605 res->
data = (
char *)L;
3610 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3617 if (strcmp(sys_cmd,
"astep") == 0)
3622 I=(ideal)h->
CopyD();
3635 if (strcmp(sys_cmd,
"PrintMat") == 0)
3645 a=(int)((
long)(h->
Data()));
3650 b=(int)((
long)(h->
Data()));
3665 metric=(int)((
long)(h->
Data()));
3676 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3689 if(strcmp(sys_cmd,
"NCGetType")==0)
3695 res->
data=(
void *)(-1L);
3702 if(strcmp(sys_cmd,
"ForceSCA")==0)
3709 b = (int)((
long)(h->
Data()));
3715 e = (int)((
long)(h->
Data()));
3726 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3738 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3750 if(strcmp(sys_cmd,
"test64")==0)
3766 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3772 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3775 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3777 n_SwitchChinRem=(int)(
long)h->
Data();
3783 if(strcmp(sys_cmd,
"LU")==0)
3793 res->
data=(
char*)bb;
3798 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3805 if(strcmp(sys_cmd,
"sort")==0)
3815 if(strcmp(sys_cmd,
"uniq")==0)
3826 if(strcmp(sys_cmd,
"power1")==0)
3831 res->
data=(
void *)g;
3835 if(strcmp(sys_cmd,
"power2")==0)
3840 for(
int i=0;
i<2000;
i++)
3842 res->
data=(
void *)g;
3845 if(strcmp(sys_cmd,
"power3")==0)
3864 res->
data=(
void *)p2000;
3889 #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)
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...
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)
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)