19#include "ccluster/ccluster.h"
22#include "factory/factory.h"
24#ifdef TIME_WITH_SYS_TIME
26# ifdef HAVE_SYS_TIME_H
30# ifdef HAVE_SYS_TIME_H
36#ifdef HAVE_SYS_TIMES_H
142#ifndef MAKE_DISTRIBUTION
143#define HAVE_EXTENDED_SYSTEM 1
168#ifndef MAKE_DISTRIBUTION
180 int n = singularMatrix->
rows();
182 unsigned long **longMatrix = 0;
183 longMatrix =
new unsigned long *[n] ;
184 for (
int i = 0 ;
i < n;
i++)
185 longMatrix[
i] =
new unsigned long [n];
187 for (
int r = 0; r < n; r++)
188 for (
int c = 0; c < n; c++)
190 poly
p=
MATELEM(singularMatrix, r + 1, c + 1);
200 longMatrix[r][c] = (
unsigned long)entryAsInt;
215 if ((
int)polyCoeffs[
i] != 0)
236 const char *sys_cmd=(
char *)(args->
Data());
241 if (strcmp(sys_cmd,
"nblocks") == 0)
263 r = (ring)
h->Data();
270 if(strcmp(sys_cmd,
"version")==0)
278 if(strcmp(sys_cmd,
"alarm")==0)
285 struct itimerval t,o;
286 memset(&t,0,
sizeof(t));
287 t.it_value.tv_sec =(unsigned)((
unsigned long)
h->Data());
288 setitimer(ITIMER_VIRTUAL,&t,&o);
296 if(strcmp(sys_cmd,
"content")==0)
301 poly
p=(poly)
h->CopyD();
315 if(strcmp(sys_cmd,
"cpu")==0)
319 #ifdef _SC_NPROCESSORS_ONLN
320 cpu=sysconf(_SC_NPROCESSORS_ONLN);
321 #elif defined(_SC_NPROCESSORS_CONF)
322 cpu=sysconf(_SC_NPROCESSORS_CONF);
324 res->data=(
void *)cpu;
333 if(strcmp(sys_cmd,
"executable")==0)
348 if(strcmp(sys_cmd,
"flatten")==0)
361 if(strcmp(sys_cmd,
"unflatten")==0)
374 if(strcmp(sys_cmd,
"neworder")==0)
388 if(strcmp(sys_cmd,
"nc_hilb") == 0)
396 i = (ideal)
h->Data();
399 WerrorS(
"nc_Hilb:ideal expected");
404 lV = (int)(
long)
h->Data();
407 WerrorS(
"nc_Hilb:int expected");
413 if((
int)(
long)
h->Data() == 1)
415 else if((
int)(
long)
h->Data() == 2)
420 trunDegHs = (int)(
long)
h->Data();
425 WerrorS(
"nc_Hilb:int 1,2, total degree for the truncation, and a string for printing the details are expected");
434 if(strcmp(sys_cmd,
"verifyGB")==0)
438 WerrorS(
"system(\"verifyGB\",<ideal>,..) expects a commutative ring");
443 WerrorS(
"expected system(\"verifyGB\",<ideal>,..)");
446 ideal F=(ideal)
h->Data();
463 if(strcmp(sys_cmd,
"rcolon") == 0)
468 ideal
i = (ideal)
h->Data();
470 poly
w=(poly)
h->Data();
472 int lV = (int)(
long)
h->Data();
483 if(strcmp(sys_cmd,
"sh")==0)
487 WerrorS(
"shell execution is disallowed in restricted mode");
491 if (
h==
NULL)
res->data = (
void *)(
long) system(
"sh");
493 res->data = (
void*)(
long) system((
char*)(
h->Data()));
500 if(strcmp(sys_cmd,
"reduce_bound")==0)
510 p = (poly)
h->CopyD();
514 pid = (ideal)
h->CopyD();
519 ideal q = (ideal)
h->next->CopyD();
520 int bound = (int)(
long)
h->next->next->Data();
529 if(strcmp(sys_cmd,
"uname")==0)
537 if(strcmp(sys_cmd,
"with")==0)
547 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else
548 char *
s=(
char *)
h->Data();
561 #ifdef TEST_MAC_ORDER
566 #ifdef HAVE_DYNAMIC_LOADING
589 if (strcmp(sys_cmd,
"browsers")==0)
599 if (strcmp(sys_cmd,
"pid")==0)
602 res->data=(
void *)(
long) getpid();
607 if (strcmp(sys_cmd,
"getenv")==0)
612 const char *r=
getenv((
char *)
h->Data());
625 if (strcmp(sys_cmd,
"setenv")==0)
632 setenv((
char *)
h->Data(), (
char *)
h->next->Data(), 1);
642 WerrorS(
"setenv not supported on this platform");
648 if (strcmp(sys_cmd,
"Singular") == 0)
657 if (strcmp(sys_cmd,
"SingularLib") == 0)
666 if (strcmp(sys_cmd,
"SingularBin") == 0)
670 if (r ==
NULL) r=
"/usr/local";
673 #define SINGULAR_PROCS_DIR "/libexec/singular/MOD"
676 if ((strstr(r,
".libs/..")==
NULL)
677 &&(strstr(r,
"Singular/..")==
NULL))
681 if (access(
s,X_OK)==0)
688 strcpy(
s,LIBEXEC_DIR);
689 if (access(
s,X_OK)==0)
712 res->data = (
void*)
s;
717 if (strstr(sys_cmd,
"--") == sys_cmd)
719 if (strcmp(sys_cmd,
"--") == 0)
727 Werror(
"Unknown option %s", sys_cmd);
728 WerrorS(
"Use 'system(\"--\");' for listing of available options");
743 const char *r=(
const char*)
feOptSpec[opt].value;
757 WerrorS(
"Need string or int argument to set option value");
760 const char* errormsg;
765 Werror(
"Need string argument to set value of option %s", sys_cmd);
769 if (errormsg !=
NULL)
770 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)
h->Data()), errormsg);
775 if (errormsg !=
NULL)
776 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*)
h->Data(), errormsg);
783 if (strcmp(sys_cmd,
"HC")==0)
791 if(strcmp(sys_cmd,
"random")==0)
814 if (strcmp(sys_cmd,
"denom_list")==0)
823 if(strcmp(sys_cmd,
"complexNearZero")==0)
830 WerrorS(
"unsupported ground field!");
837 (int)((
long)(
h->next->Data())));
848 if(strcmp(sys_cmd,
"getPrecDigits")==0)
853 WerrorS(
"unsupported ground field!");
864 if(strcmp(sys_cmd,
"lduDecomp")==0)
871 poly
l; poly u; poly prodLU;
872 lduDecomp(aMat, pMat, lMat, dMat, uMat,
l, u, prodLU);
883 res->data = (
char *)L;
893 if(strcmp(sys_cmd,
"lduSolve")==0)
927 poly
l = (poly)
h->next->next->next->next->Data();
928 poly u = (poly)
h->next->next->next->next->next->Data();
929 poly lTimesU = (poly)
h->next->next->next->next->next->next->Data();
930 matrix bVec = (
matrix)
h->next->next->next->next->next->next->next->Data();
934 Werror(
"first matrix (%d x %d) is not quadratic",
940 Werror(
"second matrix (%d x %d) is not quadratic",
946 Werror(
"third matrix (%d x %d) is not quadratic",
952 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
959 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
964 bVec, xVec, homogSolSpace);
987 if (strcmp(sys_cmd,
"shared") == 0)
989 #ifndef SI_COUNTEDREF_AUTOLOAD
996 else if (strcmp(sys_cmd,
"reference") == 0)
998 #ifndef SI_COUNTEDREF_AUTOLOAD
1007#ifdef HAVE_SIMPLEIPC
1008 if (strcmp(sys_cmd,
"semaphore")==0)
1013 if ((
h->next->next!=
NULL)&& (
h->next->next->Typ()==
INT_CMD))
1014 v=(int)(
long)
h->next->next->Data();
1021 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
1028 if (strcmp(sys_cmd,
"reserve")==0)
1036 res->data=(
void*)(
long)
p;
1043 if (strcmp(sys_cmd,
"reservedLink")==0)
1052 if (strcmp(sys_cmd,
"install")==0)
1058 (
int)(
long)
h->next->next->next->Data(),
1065 if (strcmp(sys_cmd,
"newstruct")==0)
1071 char *n=(
char*)
h->Data();
1078 newstruct_desc desc=(newstruct_desc)bb->data;
1082 else Werror(
"'%s' is not a newstruct",n);
1084 else Werror(
"'%s' is not a blackbox object",n);
1090 if (strcmp(sys_cmd,
"blackbox")==0)
1097 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1098 if (strcmp(sys_cmd,
"absFact") == 0)
1115 l->m[0].data=(
void *)
f;
1117 l->m[1].data=(
void *)
v;
1119 l->m[2].data=(
void*) mipos;
1121 l->m[3].data=(
void*) (
long) n;
1122 res->data=(
void *)
l;
1131 if (strcmp(sys_cmd,
"LLL") == 0)
1154 #if __FLINT_RELEASE >= 20500
1155 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1176 WerrorS(
"matrix,int or bigint,int expected");
1181 if(((
int)((
long)(
h->next->Data())) != 0) && (
int)((
long)(
h->next->Data()) != 1))
1183 WerrorS(
"int is different from 0, 1");
1187 if((
long)(
h->next->Data()) == 0)
1202 if((
long)(
h->next->Data()) == 1)
1208 for(
int i = 1;
i<=
m->rows();
i++)
1226 for(
int i = 1;
i<=
m->rows();
i++)
1248 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1249 if(strcmp(sys_cmd,
"rref")==0)
1256 #if defined(HAVE_FLINT)
1258 #elif defined(HAVE_NTL)
1266 ideal
M=(ideal)
h->Data();
1267 #if defined(HAVE_FLINT)
1269 #elif defined(HAVE_NTL)
1277 WerrorS(
"expected system(\"rref\",<matrix>/<smatrix>)");
1285 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1290 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1295 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1300 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1305 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1310 if(strcmp(sys_cmd,
"pcvDim")==0)
1315 if(strcmp(sys_cmd,
"pcvBasis")==0)
1322 #ifdef HAVE_EIGENVAL
1323 if(strcmp(sys_cmd,
"hessenberg")==0)
1330 #ifdef HAVE_EIGENVAL
1331 if(strcmp(sys_cmd,
"eigenvals")==0)
1338 #ifdef HAVE_EIGENVAL
1339 if(strcmp(sys_cmd,
"rowelim")==0)
1346 #ifdef HAVE_EIGENVAL
1347 if(strcmp(sys_cmd,
"rowcolswap")==0)
1355 if(strcmp(sys_cmd,
"gmsnf")==0)
1362 if(strcmp(sys_cmd,
"contributors") == 0)
1366 "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");
1371 #ifdef HAVE_SPECTRUM
1372 if(strcmp(sys_cmd,
"spectrum") == 0)
1386 if(((
long)
h->next->Data())==1L)
1392 if(strcmp(sys_cmd,
"semic") == 0)
1398 if (
h->next->next==
NULL)
1400 else if (
h->next->next->Typ()==
INT_CMD)
1407 if(strcmp(sys_cmd,
"spadd") == 0)
1418 if(strcmp(sys_cmd,
"spmul") == 0)
1430 #define HAVE_SHEAFCOH_TRICKS 1
1432 #ifdef HAVE_SHEAFCOH_TRICKS
1433 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1439 int m = (int)( (
long)
h->Data() );
1440 ideal
M = (ideal)
h->next->Data();
1451 if (strcmp(sys_cmd,
"twostd") == 0)
1456 I=(ideal)
h->CopyD();
1470 if (strcmp(sys_cmd,
"bracket") == 0)
1475 poly
p=(poly)
h->CopyD();
1477 poly q=(poly)
h->Data();
1488 if (strcmp(sys_cmd,
"env")==0)
1492 ring r = (ring)
h->Data();
1499 WerrorS(
"`system(\"env\",<ring>)` expected");
1507 if (strcmp(sys_cmd,
"opp")==0)
1511 ring r=(ring)
h->Data();
1518 WerrorS(
"`system(\"opp\",<ring>)` expected");
1526 if (strcmp(sys_cmd,
"oppose")==0)
1529 && (
h->next!=
NULL))
1531 ring Rop = (ring)
h->Data();
1544 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1554 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1561 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1565 res->data = (
void*) walkNextWeight(((
intvec*)
h->Data()),
1567 (ideal)
h->next->next->Data());
1568 if (
res->data ==
NULL ||
res->data == (
void*) 1L)
1584 if (strcmp(sys_cmd,
"walkInitials") == 0)
1588 WerrorS(
"system(\"walkInitials\", ideal) expected");
1591 res->data = (
void*) walkInitials((ideal)
h->Data());
1601 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1607 res->data = (
intvec*) walkAddIntVec(arg1, arg2);
1616 #ifdef MwaklNextWeight
1617 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1624 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1630 ideal arg3 = (ideal)
h->next->next->Data();
1641 if(strcmp(sys_cmd,
"Mivdp") == 0)
1645 WerrorS(
"system(\"Mivdp\", int) expected");
1648 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1650 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1654 int arg1 = (int) ((
long)(
h->Data()));
1664 if(strcmp(sys_cmd,
"Mivlp") == 0)
1668 WerrorS(
"system(\"Mivlp\", int) expected");
1671 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1673 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1677 int arg1 = (int) ((
long)(
h->Data()));
1688 if(strcmp(sys_cmd,
"MpDiv") == 0)
1692 poly arg1 = (poly)
h->Data();
1693 poly arg2 = (poly)
h->next->Data();
1694 poly
result = MpDiv(arg1, arg2);
1705 if(strcmp(sys_cmd,
"MpMult") == 0)
1709 poly arg1 = (poly)
h->Data();
1710 poly arg2 = (poly)
h->next->Data();
1711 poly
result = MpMult(arg1, arg2);
1721 if (strcmp(sys_cmd,
"MivSame") == 0)
1742 res->data = (
void*)(
long)
MivSame(arg1, arg2);
1749 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1772 res->data = (
void*)(
long)
M3ivSame(arg1, arg2, arg3);
1779 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1785 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1789 ideal
id = (ideal)
h->Data();
1801 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1805 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1818 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1822 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1825 int arg1 = (int) ((
long)(
h->Data()));
1835 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1839 ideal arg1 = (ideal)
h->Data();
1841 int arg3 = (int) ((
long)(
h->next->next->Data()));
1851 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1855 ideal arg1 = (ideal)
h->Data();
1857 int arg3 = (int) ((
long)(
h->next->next->Data()));
1867 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1871 ideal arg1 = (ideal)
h->Data();
1882 if(strcmp(sys_cmd,
"MivUnit") == 0)
1886 int arg1 = (int) ((
long)(
h->Data()));
1896 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1910 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1914 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1928 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1932 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1935 int arg1 = (int) ((
long)(
h->Data()));
1945 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1952 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1958 ideal arg3 = (ideal)
h->next->next->Data();
1968 #ifdef MPertNextWeight
1969 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1975 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1980 ideal arg2 = (ideal)
h->next->Data();
1981 int arg3 = (int)
h->next->next->Data();
1992 #ifdef Mivperttarget
1993 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1997 ideal arg1 = (ideal)
h->Data();
1998 int arg2 = (int)
h->next->Data();
2009 if (strcmp(sys_cmd,
"Mwalk") == 0)
2016 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
2020 ideal arg1 = (ideal)
h->CopyD();
2023 ring arg4 = (ring)
h->next->next->next->Data();
2024 int arg5 = (int) (
long)
h->next->next->next->next->Data();
2025 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2026 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2036 if (strcmp(sys_cmd,
"Mwalk") == 0)
2045 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
2049 ideal arg1 = (ideal)
h->Data();
2052 ring arg4 = (ring)
h->next->next->next->Data();
2053 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
2060 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2067 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2070 ideal arg1 = (ideal)
h->Data();
2071 int arg2 = (int) (
long)
h->next->Data();
2072 int arg3 = (int) (
long)
h->next->next->Data();
2075 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2076 int arg7 = (int) (
long)
h->next->next->next->next->next->next->Data();
2077 int arg8 = (int) (
long)
h->next->next->next->next->next->next->next->Data();
2078 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2088 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2097 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2101 ideal arg1 = (ideal)
h->Data();
2104 int arg4 = (int)(
long)
h->next->next->next->Data();
2105 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2106 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2107 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2108 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2117 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2124 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2128 ideal arg1 = (ideal)
h->Data();
2129 int arg2 = (int) ((
long)(
h->next->Data()));
2130 int arg3 = (int) ((
long)(
h->next->next->Data()));
2143 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2150 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2154 ideal arg1 = (ideal)
h->Data();
2157 int arg4 = (int)
h->next->next->next->Data();
2158 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2168 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2175 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2179 ideal arg1 = (ideal)
h->Data();
2182 int arg4 = (int)(
long)
h->next->next->next->Data();
2183 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2184 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2193 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2210 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2215 ideal arg1 = (ideal)
h->Data();
2218 int arg4 = (int)(
long)
h->next->next->next->Data();
2219 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2220 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2221 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2228 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2237 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2241 ideal arg1 = (ideal)
h->Data();
2244 int arg4 = (int)(
long)
h->next->next->next->Data();
2245 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2246 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2247 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2248 int arg8 = (int)(
long)
h->next->next->next->next->next->next->next->Data();
2249 int arg9 = (int)(
long)
h->next->next->next->next->next->next->next->next->Data();
2250 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2260 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2267 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2271 ideal arg1 = (ideal)
h->Data();
2284 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2291 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2295 ideal arg1 = (ideal)
h->Data();
2307 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2314 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2318 ideal arg1 = (ideal)
h->Data();
2321 int arg4 = (int) ((
long)(
h->next->next->next->Data()));
2332 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2337 h->next->next->next ==
NULL ||
h->next->next->next->Typ() !=
INT_CMD ||
2338 h->next->next->next ==
NULL ||
h->next->next->next->next->Typ() !=
INT_CMD ||
2339 h->next->next->next ==
NULL ||
h->next->next->next->next->next->Typ() !=
INT_CMD)
2341 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2347 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2350 ideal arg1 = (ideal)
h->Data();
2353 int arg4 = (int)(
long)
h->next->next->next->Data();
2354 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2355 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2356 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2366 #ifndef MAKE_DISTRIBUTION
2377#ifdef HAVE_EXTENDED_SYSTEM
2381# include "hc_newton.h"
2388 char *sys_cmd=(
char *)(
h->Data());
2391 if (strcmp(sys_cmd,
"syz") == 0)
2395 const char *
s=(
const char *)
h->Data();
2396 if (strcmp(
s,
"posInT_EcartFDegpLength")==0)
2398 else if (strcmp(
s,
"posInT_FDegpLength")==0)
2400 else if (strcmp(
s,
"posInT_pLength")==0)
2402 else if (strcmp(
s,
"posInT0")==0)
2404 else if (strcmp(
s,
"posInT1")==0)
2406 else if (strcmp(
s,
"posInT2")==0)
2408 else if (strcmp(
s,
"posInT11")==0)
2410 else if (strcmp(
s,
"posInT110")==0)
2412 else if (strcmp(
s,
"posInT13")==0)
2414 else if (strcmp(
s,
"posInT15")==0)
2416 else if (strcmp(
s,
"posInT17")==0)
2418 else if (strcmp(
s,
"posInT17_c")==0)
2420 else if (strcmp(
s,
"posInT19")==0)
2422 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2434 if(strcmp(sys_cmd,
"locNF")==0)
2439 poly
f=(poly)
h->Data();
2441 ideal
m=(ideal)
h->Data();
2444 int n=(int)((
long)
h->Data());
2509 if(strcmp(sys_cmd,
"p")==0)
2514 WarnS(
"Sorry: not available for release build!");
2520 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2524 int k = (int)(
long)
h->Data();
2532 if(strcmp(sys_cmd,
"r")==0)
2537 WarnS(
"Sorry: not available for release build!");
2549 if(strcmp(sys_cmd,
"changeRing")==0)
2553 for (
int i = 1;
i <= varN;
i++)
2556 sprintf(
h,
"x%d",
i);
2561 res->data = (
void*)0L;
2566 if(strcmp(sys_cmd,
"mtrack")==0)
2577 char *fn=(
char*)
h->Data();
2578 fd = fopen(fn,
"w");
2580 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2584 max = (int)(
long)
h->Data();
2593 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2600 if(strcmp(sys_cmd,
"backtrace")==0)
2608#if !defined(OM_NDEBUG)
2610 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2614 PrintS(
"\n[om_Info]: \n");
2616#define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2617 OM_PRINT(MaxBytesSystem);
2618 OM_PRINT(CurrentBytesSystem);
2619 OM_PRINT(MaxBytesSbrk);
2620 OM_PRINT(CurrentBytesSbrk);
2621 OM_PRINT(MaxBytesMmap);
2622 OM_PRINT(CurrentBytesMmap);
2623 OM_PRINT(UsedBytes);
2624 OM_PRINT(AvailBytes);
2625 OM_PRINT(UsedBytesMalloc);
2626 OM_PRINT(AvailBytesMalloc);
2627 OM_PRINT(MaxBytesFromMalloc);
2628 OM_PRINT(CurrentBytesFromMalloc);
2629 OM_PRINT(MaxBytesFromValloc);
2630 OM_PRINT(CurrentBytesFromValloc);
2631 OM_PRINT(UsedBytesFromValloc);
2632 OM_PRINT(AvailBytesFromValloc);
2634 OM_PRINT(UsedPages);
2635 OM_PRINT(AvailPages);
2636 OM_PRINT(MaxRegionsAlloc);
2637 OM_PRINT(CurrentRegionsAlloc);
2642 PrintS(
"\n[om_Opts]: \n");
2643#define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2644 OM_PRINT(
"d", MinTrack);
2645 OM_PRINT(
"d", MinCheck);
2646 OM_PRINT(
"d", MaxTrack);
2647 OM_PRINT(
"d", MaxCheck);
2648 OM_PRINT(
"d", Keep);
2649 OM_PRINT(
"d", HowToReportErrors);
2650 OM_PRINT(
"d", MarkAsStatic);
2651 OM_PRINT(
"u", PagesPerRegion);
2652 OM_PRINT(
"p", OutOfMemoryFunc);
2653 OM_PRINT(
"p", MemoryLowFunc);
2654 OM_PRINT(
"p", ErrorHook);
2659 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2662 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2676 if(strcmp(sys_cmd,
"red")==0)
2691 if(strcmp(sys_cmd,
"fastcomb")==0)
2699 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2704 (ideal)
h->Data(),(poly)
h->next->Data());
2712 if(strcmp(sys_cmd,
"comb")==0)
2720 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2725 (ideal)
h->Data(),(poly)
h->next->Data());
2734 if(strcmp(sys_cmd,
"listall")==0)
2736 void listall(
int showproc);
2738 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2746 if(strcmp(sys_cmd,
"proclist")==0)
2748 void piShowProcList();
2756 if(strcmp(sys_cmd,
"newton")==0)
2760 || (
h->next->next->Typ()!=
INT_CMD))
2762 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2765 poly
p=(poly)(
h->Data());
2784 (
int) (
h->next->Data()),
2785 (
int) (
h->next->next->Data())
2798 L->
m[1].
data=(
void *)(
long)r.achse;
2800 L->
m[2].
data=(
void *)(
long)r.deg;
2804 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2806 int anz = r.anz_punkte;
2809 for (
i=0;
i<anz*
dim;
i++)
2819 (*w)[
i] = r.deg_tab[
i];
2822 while (r.deg_tab[
i-1] != -2);
2833 res->data=(
void *)L;
2856 if (strcmp(sys_cmd,
"minpoly") == 0)
2860 Werror(
"expected exactly one argument: %s",
2861 "a square matrix with number entries");
2871 WerrorS(
"expected exactly one argument: "
2872 "a square matrix with number entries");
2879 res->data = (
void *)theMinPoly;
2880 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2882 delete[] polyCoeffs;
2889 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2897 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2906 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2910 WerrorS(
"shell execution is disallowed in restricted mode");
2920 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2929 if (strcmp(sys_cmd,
"GF") == 0)
2946 if (strcmp(sys_cmd,
"svd") == 0)
2957 if (strcmp(sys_cmd,
"redNF_ring")==0)
2960 poly
f = (poly)
h->Data();
2962 ideal
G = (ideal)
h->Data();
2970 if (strcmp(sys_cmd,
"hilbroune") == 0)
2982 if (strcmp(sys_cmd,
"f5")==0)
2991 ideal
G = (ideal)
h->Data();
2995 opt = (int) (
long)
h->Data();
3003 plus = (int) (
long)
h->Data();
3011 termination = (int) (
long)
h->Data();
3017 res->data=(ideal)
F5main(
G,r,opt,plus,termination);
3024 if (strcmp(sys_cmd,
"NF_ring")==0)
3027 poly
f = (poly)
h->Data();
3029 ideal
G = (ideal)
h->Data();
3035 if (strcmp(sys_cmd,
"spoly")==0)
3037 poly
f =
pCopy((poly)
h->Data());
3039 poly
g =
pCopy((poly)
h->Data());
3046 if (strcmp(sys_cmd,
"testGB")==0)
3048 ideal I = (ideal)
h->Data();
3050 ideal GI = (ideal)
h->Data();
3052 res->data = (
void *)(
long)
testGB(I, GI);
3059 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3065 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3073 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3080 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3086 #ifdef HAVE_RATGRING
3087 if (strcmp(sys_cmd,
"intratNF") == 0)
3102 I=(ideal)
h->CopyD();
3110 is=(int)((
long)(
h->Data()));
3118 for(
k=0;
k < id;
k++)
3122 PrintS(
"starting redRat\n");
3140 if (strcmp(sys_cmd,
"ratNF") == 0)
3159 is=(int)((
long)(
h->Data()));
3174 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3192 is=(int)((
long)(
h->Data()));
3208 if (strcmp(sys_cmd,
"ratVar") == 0)
3225 return (start==0)||(end==0)||(start>end);
3229 if (strcmp(sys_cmd,
"unifastmult")==0)
3231 poly
f = (poly)
h->Data();
3233 poly
g=(poly)
h->Data();
3239 if (strcmp(sys_cmd,
"multifastmult")==0)
3241 poly
f = (poly)
h->Data();
3243 poly
g=(poly)
h->Data();
3249 if (strcmp(sys_cmd,
"mults")==0)
3256 if (strcmp(sys_cmd,
"fastpower")==0)
3259 poly
f = (poly)
h->Data();
3261 int n=(int)((
long)
h->Data());
3267 if (strcmp(sys_cmd,
"normalpower")==0)
3269 poly
f = (poly)
h->Data();
3271 int n=(int)((
long)
h->Data());
3277 if (strcmp(sys_cmd,
"MCpower")==0)
3280 poly
f = (poly)
h->Data();
3282 int n=(int)((
long)
h->Data());
3288 if (strcmp(sys_cmd,
"bit_subst")==0)
3291 poly outer = (poly)
h->Data();
3293 poly inner=(poly)
h->Data();
3300 if (strcmp(sys_cmd,
"gcd") == 0)
3320 int d=(int)(
long)
h->next->Data();
3321 char *
s=(
char *)
h->Data();
3339 if (strcmp(sys_cmd,
"subring") == 0)
3353 if (strcmp(sys_cmd,
"HNF") == 0)
3375 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3383 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3388 char *
s=(
char *)
h->next->Data();
3400 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3404 char* filename = (
char*)
h->Data();
3405 FILE*
f = fopen(filename,
"r");
3408 WerrorS(
"invalid file name (in paths use '/')");
3411 mpz_t
m; mpz_init(
m);
3412 mpz_inp_str(
m,
f, 10);
3416 res->data = (
void*)n;
3421 WerrorS(
"expected valid file name as a string");
3433 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3437 (
h->next->next ==
NULL))
3442 int validEntries = 0;
3443 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3445 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3446 sizeof(
int) * jvec->
rows()) == 0)
3448 if (validEntries == 0)
3452 r->
resize(validEntries + 1);
3453 (*r)[validEntries] =
k + 1;
3459 res->data = (
void*)r;
3464 WerrorS(
"expected two non-empty intvecs as arguments");
3475 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3479 (
h->next->next ==
NULL))
3483 int ir = ivec->
rows();
int jr = jvec->
rows();
3484 int r = jr;
if (ir < jr) r = ir;
3485 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3486 sizeof(
int) * r) != 0))
3489 res->data = (
void*)(
long)r;
3494 WerrorS(
"expected two non-empty intvecs as arguments");
3500 if(strcmp(sys_cmd,
"henselfactors")==0)
3505 (
h->next->next->next !=
NULL) &&
3506 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3507 (
h->next->next->next->next !=
NULL) &&
3508 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3509 (
h->next->next->next->next->next !=
NULL) &&
3510 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3511 (
h->next->next->next->next->next->next ==
NULL))
3513 int xIndex = (int)(
long)
h->Data();
3514 int yIndex = (int)(
long)
h->next->Data();
3515 poly hh = (poly)
h->next->next->Data();
3516 poly f0 = (poly)
h->next->next->next->Data();
3517 poly g0 = (poly)
h->next->next->next->next->Data();
3518 int d = (int)(
long)
h->next->next->next->next->next->Data();
3526 res->data = (
char *)L;
3531 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3538 if (strcmp(sys_cmd,
"astep") == 0)
3543 I=(ideal)
h->CopyD();
3556 if (strcmp(sys_cmd,
"PrintMat") == 0)
3566 a=(int)((
long)(
h->Data()));
3571 b=(int)((
long)(
h->Data()));
3586 metric=(int)((
long)(
h->Data()));
3597 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3610 if(strcmp(sys_cmd,
"NCGetType")==0)
3616 res->data=(
void *)(-1L);
3623 if(strcmp(sys_cmd,
"ForceSCA")==0)
3630 b = (int)((
long)(
h->Data()));
3636 e = (int)((
long)(
h->Data()));
3647 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3659 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3671 if(strcmp(sys_cmd,
"test64")==0)
3687 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3693 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3704 if(strcmp(sys_cmd,
"LU")==0)
3714 res->data=(
char*)bb;
3719 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3726 if(strcmp(sys_cmd,
"sort")==0)
3736 if(strcmp(sys_cmd,
"uniq")==0)
3746 if(strcmp(sys_cmd,
"GF")==0)
3751 int p=(int)(
long)
h->Data();
3752 int n=(int)(
long)
h->next->Data();
3753 char *
v=(
char*)
h->next->next->CopyD();
3769 if(strcmp(sys_cmd,
"power1")==0)
3772 poly
f=(poly)
h->CopyD();
3774 res->data=(
void *)
g;
3778 if(strcmp(sys_cmd,
"power2")==0)
3781 poly
f=(poly)
h->Data();
3783 for(
int i=0;
i<2000;
i++)
3785 res->data=(
void *)
g;
3788 if(strcmp(sys_cmd,
"power3")==0)
3791 poly
f=(poly)
h->Data();
3802 poly p1536=
pMult(p1024,p512);
3803 poly p1792=
pMult(p1536,p256);
3804 poly p1920=
pMult(p1792,p128);
3805 poly p1984=
pMult(p1920,p64);
3806 poly p2000=
pMult(p1984,p16);
3807 res->data=(
void *)p2000;
3828 if(strcmp(sys_cmd,
"ccluster")==0)
3838 int pol_with_complex_coeffs=0;
3840 pol_with_complex_coeffs=1;
3846 fmpq_poly_t fre, fim;
3848 if (pol_with_complex_coeffs==1)
3853 fmpq_t center_re,center_im,boxsize,eps;
3859 int n=fmpq_poly_length(fre);
3860 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3861 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3863 for(
int i=0;
i<n;
i++)
3864 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3869 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3870 strategy = strategy+(nb_threads<<6);
3873 if (pol_with_complex_coeffs==0)
3874 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3876 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3880 for(
int i=0;
i<nn;
i++)
3894 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3898 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3899 fmpq_poly_clear(fre);
3900 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3912 if(strcmp(sys_cmd,
"evaluate")==0)
3914 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3917 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3920 poly
p=(poly)
h->Data();
3927 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3930 pt[
i]=(number)
h->Data();
3938 if(strcmp(sys_cmd,
"DivRem")==0)
3943 poly
p=(poly)
h->CopyD();
3944 poly q=(poly)
h->next->CopyD();
3953 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
3959 if(strcmp(sys_cmd,
"CoeffTerm")==0)
3972 poly
p=(poly)
h->Data();
3973 poly q=(poly)
h->next->Data();
3981 ideal
p=(ideal)
h->Data();
3982 poly q=(poly)
h->next->Data();
3989 poly
p=(poly)
h->Data();
3990 poly q=(poly)
h->next->Data();
3997 ideal
p=(ideal)
h->Data();
3998 poly q=(poly)
h->next->Data();
4005 poly
p=(poly)
h->Data();
4006 ideal q=(ideal)
h->next->Data();
4013 poly
p=(poly)
h->Data();
4014 ideal q=(ideal)
h->next->Data();
4021 WerrorS(
"expected system(\"CoeffTerm\",<poly>/<vector>,<poly>/<vector>)" "\n or <ideal>/<module>,<poly>/<vector>");
static int si_max(const int a, const int b)
#define BIMATELEM(M, I, J)
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
int blackboxIsCmd(const char *n, int &tok)
used by scanner: returns ROOT_DECL for known types (and the type number in tok)
void printBlackboxTypes()
list all defined type (for debugging)
EXTERN_VAR int singular_homog_flag
static const int SW_USE_CHINREM_GCD
set to 1 to use modular gcd over Z
static const int SW_USE_FL_GCD_P
set to 1 to use Flints gcd over F_p
static const int SW_USE_EZGCD_P
set to 1 to use EZGCD over F_q
static const int SW_USE_EZGCD
set to 1 to use EZGCD over Z
static const int SW_USE_FL_GCD_0
set to 1 to use Flints gcd over Q/Z
static CanonicalForm bound(const CFMatrix &M)
void factoryseed(int s)
random seed initializer
CanonicalForm convSingPFactoryP(poly p, const ring r)
matrix singntl_HNF(matrix m, const ring s)
matrix singntl_rref(matrix m, const ring R)
matrix singntl_LLL(matrix m, const ring s)
ideal singclap_absFactorize(poly f, ideal &mipos, intvec **exps, int &numFactors, const ring r)
char * singclap_neworder(ideal I, const ring r)
gmp_complex numbers based on
void resize(int new_length)
Class used for (list of) interpreter objects.
INLINE_THIS void Init(int l=0)
Coefficient rings, fields and other domains suitable for Singular polynomials.
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 ....
@ n_transExt
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
static FORCE_INLINE number n_convFactoryNSingN(const CanonicalForm n, const coeffs r)
void n_Print(number &a, const coeffs r)
print a number (BEWARE of string buffers!) mostly for debugging
static FORCE_INLINE CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
static FORCE_INLINE BOOLEAN nCoeff_is_Ring(const coeffs r)
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static FORCE_INLINE number n_InitMPZ(mpz_t n, const coeffs r)
conversion of a GMP integer to number
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Creation data needed for finite fields.
void countedref_reference_load()
Initialize blackbox types 'reference' and 'shared', or both.
void countedref_shared_load()
poly uni_subst_bits(poly outer_uni, poly inner_multi, ring r)
matrix evRowElim(matrix M, int i, int j, int k)
matrix evHessenberg(matrix M)
matrix evSwap(matrix M, int i, int j)
lists evEigenvals(matrix M)
ideal F5main(ideal id, ring r, int opt, int plus, int termination)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
CFList int bool & irred
[in,out] Is A irreducible?
int probIrredTest(const CanonicalForm &F, double error)
given some error probIrredTest detects irreducibility or reducibility of F with confidence level 1-er...
poly unifastmult(poly f, poly g, ring r)
poly pFastPowerMC(poly f, int n, ring r)
static int max(int a, int b)
poly pFastPower(poly f, int n, ring r)
poly multifastmult(poly f, poly g, ring r)
void WerrorS(const char *s)
feOptIndex feGetOptIndex(const char *name)
const char * feSetOptValue(feOptIndex opt, char *optarg)
static void * feOptValue(feOptIndex opt)
EXTERN_VAR struct fe_option feOptSpec[]
static char * feResource(feResourceConfig config, int warn)
void feStringAppendBrowsers(int warn)
STATIC_VAR int nfMinPoly[16]
This file is work in progress and currently not part of the official Singular.
void convSingPFlintP(fmpq_poly_t res, poly p, const ring r)
void convSingNFlintN(fmpz_t f, mpz_t z)
void convFlintNSingN(mpz_t z, fmpz_t f)
matrix singflint_rref(matrix m, const ring R)
bigintmat * singflint_LLL(bigintmat *A, bigintmat *T)
number maEvalAt(const poly p, const number *pt, const ring r)
evaluate the polynomial p at the pt given by the array pt
lists gmsNF(ideal p, ideal g, matrix B, int D, int K)
void HilbertSeries_OrbitData(ideal S, int lV, bool IG_CASE, bool mgrad, bool odp, int trunDegHs)
ideal RightColonOperation(ideal S, poly w, int lV)
ideal id_TensorModuleMult(const int m, const ideal M, const ring rRing)
STATIC_VAR coordinates * points
static BOOLEAN length(leftv result, leftv arg)
#define IMATELEM(M, I, J)
BOOLEAN jjSORTLIST(leftv, leftv arg)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
BOOLEAN spaddProc(leftv result, leftv first, leftv second)
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 (...
BOOLEAN semicProc3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN spectrumfProc(leftv result, leftv first)
BOOLEAN spmulProc(leftv result, leftv first, leftv second)
BOOLEAN spectrumProc(leftv result, leftv first)
ring rSubring(ring org_ring, sleftv *rv)
BOOLEAN semicProc(leftv res, leftv u, leftv v)
KINLINE poly ksOldSpolyRed(poly p1, poly p2, poly spNoether)
poly fglmLinearCombination(ideal source, poly monset)
poly fglmNewLinearCombination(ideal source, poly monset)
poly kNFBound(ideal F, ideal Q, poly p, int bound, int syzComp, int lazyReduce)
VAR int(* test_PosInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
VAR int(* test_PosInT)(const TSet T, const int tl, LObject &h)
int posInT17(const TSet set, const int length, LObject &p)
int posInT11(const TSet set, const int length, LObject &p)
int posInT1(const TSet set, const int length, LObject &p)
int posInT0(const TSet, const int length, LObject &)
int posInT2(const TSet set, const int length, LObject &p)
int posInT_pLength(const TSet set, const int length, LObject &p)
int posInT13(const TSet set, const int length, LObject &p)
int posInT17_c(const TSet set, const int length, LObject &p)
int posInT_EcartFDegpLength(const TSet set, const int length, LObject &p)
int posInT15(const TSet set, const int length, LObject &p)
int posInT110(const TSet set, const int length, LObject &p)
int posInT19(const TSet set, const int length, LObject &p)
int posInT_FDegpLength(const TSet set, const int length, LObject &p)
BOOLEAN kVerify2(ideal F, ideal Q)
BOOLEAN kVerify1(ideal F, ideal Q)
static bool rIsSCA(const ring r)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
static nc_type & ncRingType(nc_struct *p)
int setNCExtensions(int iMask)
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
matrix nc_PrintMat(int a, int b, ring r, int metric)
returns matrix with the info on noncomm multiplication
bool sca_Force(ring rGR, int b, int e)
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 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,...
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...
matrix mp_Transp(matrix a, const ring R)
ideal sm_UnFlatten(ideal a, int col, const ring R)
matrix mp_InitI(int r, int c, int v, const ring R)
make it a v * unit matrix
matrix mpNew(int r, int c)
create a r x c zero-matrix
ideal sm_Flatten(ideal a, const ring R)
#define MATELEM(mat, i, j)
1-based access to matrix
void mult(unsigned long *result, unsigned long *a, unsigned long *b, unsigned long p, int dega, int degb)
unsigned long * computeMinimalPolynomial(unsigned long **matrix, unsigned n, unsigned long p)
This file provides miscellaneous functionality.
EXTERN_VAR size_t gmp_output_digits
bool complexNearZero(gmp_complex *c, int digits)
The main handler for Singular numbers which are suitable for Singular polynomials.
BOOLEAN ncInitSpecialPairMultiplication(ring r)
ideal Approx_Step(ideal L)
Ann: ???
ideal twostd(ideal I)
Compute two-sided GB:
void newstructShow(newstruct_desc d)
BOOLEAN newstruct_set_proc(const char *bbname, const char *func, int args, procinfov pr)
#define omFreeSize(addr, size)
const char * omError2String(omError_t error)
const char * omError2Serror(omError_t error)
omError_t om_InternalErrorStatus
char * omFindExec(const char *name, char *exec)
#define omPrintCurrentBackTrace(fd)
poly p_CoeffTermMo(poly v, ideal m, int n, const ring r)
find coeffs of a vector of a matrix(module) of given monomials, n>=max_comp(v)
poly p_CoeffTermId(poly v, ideal m, int n, const ring r)
find coeffs of a vector of a list of given monomials, n>=max_comp(v)
number p_CoeffTerm(poly p, poly m, const ring r)
find coeff of (polynomial) m in polynomial p find coeff of (vector) m in vector p
ideal id_CoeffTermV(ideal M, poly m, const ring r)
find coeffs of (polynomial) m in all vectors from I
ideal id_CoeffTerm(ideal I, poly m, const ring r)
find coeffs of (polynomial) m in all polynomials from I find coeffs of (vector) m in all vectors from...
poly p_CoeffTermV(poly v, poly m, const ring r)
find vector of coeffs of (polynomial) m in vector v
void p_Content(poly ph, const ring r)
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
poly p_Cleardenom(poly p, const ring r)
static int pLength(poly a)
static poly p_Add_q(poly p, poly q, const ring r)
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
static void p_Setm(poly p, const ring r)
static long p_MaxComp(poly p, ring lmRing, ring tailRing)
poly pcvP2CV(poly p, int d0, int d1)
int pcvBasis(lists b, int i, poly m, int d, int n)
int pcvDim(int d0, int d1)
lists pcvPMulL(poly p, lists l1)
poly pcvCV2P(poly cv, int d0, int d1)
lists pcvLAddL(lists l1, lists l2)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly p_DivRem(poly p, poly q, poly &rest, const ring r)
Compatibility layer for legacy polynomial operations (over currRing)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL
#define pLmDeleteAndNext(p)
like pLmDelete, returns pNext(p)
#define pGetExp(p, i)
Exponent.
#define pDivisibleBy(a, b)
returns TRUE, if leading monom of a divides leading monom of b i.e., if there exists a expvector c > ...
#define pCopy(p)
return a copy of the poly
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
int redRat(poly *h, poly *reducer, int *red_length, int rl, int ishift, ring r)
poly nc_rat_ReduceSpolyNew(const poly p1, poly p2, int ishift, const ring r)
void StringSetS(const char *st)
const char feNotImplemented[]
void PrintS(const char *s)
void Werror(const char *fmt,...)
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...
void p_DebugPrint(poly p, const ring r)
void rDebugPrint(const ring r)
void rSetSyzComp(int k, const ring r)
static BOOLEAN rField_is_R(const ring r)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static BOOLEAN rField_is_long_C(const ring r)
static int rBlocks(const ring r)
static BOOLEAN rField_is_Q(const ring r)
static BOOLEAN rIsNCRing(const ring r)
static BOOLEAN rField_is_long_R(const ring r)
#define rField_is_Ring(R)
poly ringNF(poly f, ideal G, ring r)
poly plain_spoly(poly f, poly g)
poly ringRedNF(poly f, ideal G, ring r)
int testGB(ideal I, ideal GI)
static short scaLastAltVar(ring r)
static short scaFirstAltVar(ring r)
void sdb_edit(procinfo *pi)
int simpleipc_cmd(char *cmd, int id, int v)
ideal id_Vec2Ideal(poly vec, const ring R)
int ssiReservePort(int clients)
BOOLEAN assumeStdFlag(leftv h)
int M3ivSame(intvec *temp, intvec *u, intvec *v)
intvec * MivWeightOrderdp(intvec *ivstart)
ideal TranMImprovwalk(ideal G, intvec *curr_weight, intvec *target_tmp, int nP)
intvec * MivMatrixOrderdp(int nV)
ideal Mfwalk(ideal G, intvec *ivstart, intvec *ivtarget, int reduction, int printout)
intvec * MPertVectors(ideal G, intvec *ivtarget, int pdeg)
intvec * MivWeightOrderlp(intvec *ivstart)
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)
intvec * MivMatrixOrder(intvec *iv)
ideal MAltwalk2(ideal Go, intvec *curr_weight, intvec *target_weight)
ideal MAltwalk1(ideal Go, int op_deg, int tp_deg, 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)
ideal Mfrwalk(ideal G, intvec *ivstart, intvec *ivtarget, int weight_rad, int reduction, int printout)
ideal Mwalk(ideal Go, intvec *orig_M, intvec *target_M, ring baseRing, int reduction, int printout)
ideal Mpwalk(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight, int nP, int reduction, int printout)
int MivSame(intvec *u, intvec *v)
ideal MwalkInitialForm(ideal G, intvec *ivw)
intvec * MivMatrixOrderlp(int nV)
intvec * Mfpertvector(ideal G, intvec *ivtarget)
intvec * MPertVectorslp(ideal G, intvec *ivtarget, int pdeg)
intvec * MkInterRedNextWeight(intvec *iva, intvec *ivb, ideal G)
intvec * MwalkNextWeight(intvec *curr_weight, intvec *target_weight, ideal G)
intvec * Mivperttarget(ideal G, int ndeg)
intvec * MPertNextWeight(intvec *iva, ideal G, int deg)
int * iv2array(intvec *iv, const ring R)
#define omMarkAsStaticAddr(A)
#define omPrintUsedTrackAddrs(F, max)