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)
318 #ifdef _SC_NPROCESSORS_ONLN
319 cpu=sysconf(_SC_NPROCESSORS_ONLN);
320 #elif defined(_SC_NPROCESSORS_CONF)
321 cpu=sysconf(_SC_NPROCESSORS_CONF);
323 res->data=(
void *)cpu;
329 if(strcmp(sys_cmd,
"executable")==0)
344 if(strcmp(sys_cmd,
"flatten")==0)
357 if(strcmp(sys_cmd,
"unflatten")==0)
370 if(strcmp(sys_cmd,
"neworder")==0)
384 if(strcmp(sys_cmd,
"nc_hilb") == 0)
392 i = (ideal)
h->Data();
395 WerrorS(
"nc_Hilb:ideal expected");
400 lV = (int)(
long)
h->Data();
403 WerrorS(
"nc_Hilb:int expected");
409 if((
int)(
long)
h->Data() == 1)
411 else if((
int)(
long)
h->Data() == 2)
416 trunDegHs = (int)(
long)
h->Data();
421 WerrorS(
"nc_Hilb:int 1,2, total degree for the truncation, and a string for printing the details are expected");
430 if(strcmp(sys_cmd,
"verifyGB")==0)
434 WerrorS(
"system(\"verifyGB\",<ideal>,..) expects a commutative ring");
439 WerrorS(
"expected system(\"verifyGB\",<ideal>,..)");
442 ideal F=(ideal)
h->Data();
459 if(strcmp(sys_cmd,
"rcolon") == 0)
464 ideal
i = (ideal)
h->Data();
466 poly
w=(poly)
h->Data();
468 int lV = (int)(
long)
h->Data();
479 if(strcmp(sys_cmd,
"sh")==0)
483 WerrorS(
"shell execution is disallowed in restricted mode");
487 if (
h==
NULL)
res->data = (
void *)(
long) system(
"sh");
489 res->data = (
void*)(
long) system((
char*)(
h->Data()));
496 if(strcmp(sys_cmd,
"reduce_bound")==0)
506 p = (poly)
h->CopyD();
510 pid = (ideal)
h->CopyD();
515 ideal q = (ideal)
h->next->CopyD();
516 int bound = (int)(
long)
h->next->next->Data();
525 if(strcmp(sys_cmd,
"uname")==0)
533 if(strcmp(sys_cmd,
"with")==0)
543 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else
544 char *
s=(
char *)
h->Data();
557 #ifdef TEST_MAC_ORDER
562 #ifdef HAVE_DYNAMIC_LOADING
585 if (strcmp(sys_cmd,
"browsers")==0)
595 if (strcmp(sys_cmd,
"pid")==0)
598 res->data=(
void *)(
long) getpid();
603 if (strcmp(sys_cmd,
"getenv")==0)
608 const char *r=
getenv((
char *)
h->Data());
621 if (strcmp(sys_cmd,
"setenv")==0)
628 setenv((
char *)
h->Data(), (
char *)
h->next->Data(), 1);
638 WerrorS(
"setenv not supported on this platform");
644 if (strcmp(sys_cmd,
"Singular") == 0)
653 if (strcmp(sys_cmd,
"SingularLib") == 0)
662 if (strcmp(sys_cmd,
"SingularBin") == 0)
666 if (r ==
NULL) r=
"/usr/local";
669 #define SINGULAR_PROCS_DIR "/libexec/singular/MOD"
672 if ((strstr(r,
".libs/..")==
NULL)
673 &&(strstr(r,
"Singular/..")==
NULL))
677 if (access(
s,X_OK)==0)
684 strcpy(
s,LIBEXEC_DIR);
685 if (access(
s,X_OK)==0)
708 res->data = (
void*)
s;
713 if (strstr(sys_cmd,
"--") == sys_cmd)
715 if (strcmp(sys_cmd,
"--") == 0)
723 Werror(
"Unknown option %s", sys_cmd);
724 WerrorS(
"Use 'system(\"--\");' for listing of available options");
739 const char *r=(
const char*)
feOptSpec[opt].value;
753 WerrorS(
"Need string or int argument to set option value");
756 const char* errormsg;
761 Werror(
"Need string argument to set value of option %s", sys_cmd);
765 if (errormsg !=
NULL)
766 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)
h->Data()), errormsg);
771 if (errormsg !=
NULL)
772 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*)
h->Data(), errormsg);
779 if (strcmp(sys_cmd,
"HC")==0)
787 if(strcmp(sys_cmd,
"random")==0)
810 if (strcmp(sys_cmd,
"denom_list")==0)
819 if(strcmp(sys_cmd,
"complexNearZero")==0)
826 WerrorS(
"unsupported ground field!");
833 (int)((
long)(
h->next->Data())));
844 if(strcmp(sys_cmd,
"getPrecDigits")==0)
849 WerrorS(
"unsupported ground field!");
860 if(strcmp(sys_cmd,
"lduDecomp")==0)
867 poly
l; poly u; poly prodLU;
868 lduDecomp(aMat, pMat, lMat, dMat, uMat,
l, u, prodLU);
879 res->data = (
char *)L;
889 if(strcmp(sys_cmd,
"lduSolve")==0)
923 poly
l = (poly)
h->next->next->next->next->Data();
924 poly u = (poly)
h->next->next->next->next->next->Data();
925 poly lTimesU = (poly)
h->next->next->next->next->next->next->Data();
926 matrix bVec = (
matrix)
h->next->next->next->next->next->next->next->Data();
930 Werror(
"first matrix (%d x %d) is not quadratic",
936 Werror(
"second matrix (%d x %d) is not quadratic",
942 Werror(
"third matrix (%d x %d) is not quadratic",
948 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
955 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
960 bVec, xVec, homogSolSpace);
983 if (strcmp(sys_cmd,
"shared") == 0)
985 #ifndef SI_COUNTEDREF_AUTOLOAD
992 else if (strcmp(sys_cmd,
"reference") == 0)
994 #ifndef SI_COUNTEDREF_AUTOLOAD
1003#ifdef HAVE_SIMPLEIPC
1004 if (strcmp(sys_cmd,
"semaphore")==0)
1009 if ((
h->next->next!=
NULL)&& (
h->next->next->Typ()==
INT_CMD))
1010 v=(int)(
long)
h->next->next->Data();
1017 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
1024 if (strcmp(sys_cmd,
"reserve")==0)
1032 res->data=(
void*)(
long)
p;
1039 if (strcmp(sys_cmd,
"reservedLink")==0)
1048 if (strcmp(sys_cmd,
"install")==0)
1054 (
int)(
long)
h->next->next->next->Data(),
1061 if (strcmp(sys_cmd,
"newstruct")==0)
1067 char *n=(
char*)
h->Data();
1074 newstruct_desc desc=(newstruct_desc)bb->data;
1078 else Werror(
"'%s' is not a newstruct",n);
1080 else Werror(
"'%s' is not a blackbox object",n);
1086 if (strcmp(sys_cmd,
"blackbox")==0)
1093 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1094 if (strcmp(sys_cmd,
"absFact") == 0)
1111 l->m[0].data=(
void *)
f;
1113 l->m[1].data=(
void *)
v;
1115 l->m[2].data=(
void*) mipos;
1117 l->m[3].data=(
void*) (
long) n;
1118 res->data=(
void *)
l;
1127 if (strcmp(sys_cmd,
"LLL") == 0)
1150 #if __FLINT_RELEASE >= 20500
1151 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1172 WerrorS(
"matrix,int or bigint,int expected");
1177 if(((
int)((
long)(
h->next->Data())) != 0) && (
int)((
long)(
h->next->Data()) != 1))
1179 WerrorS(
"int is different from 0, 1");
1183 if((
long)(
h->next->Data()) == 0)
1198 if((
long)(
h->next->Data()) == 1)
1204 for(
int i = 1;
i<=
m->rows();
i++)
1222 for(
int i = 1;
i<=
m->rows();
i++)
1244 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1245 if(strcmp(sys_cmd,
"rref")==0)
1252 #if defined(HAVE_FLINT)
1254 #elif defined(HAVE_NTL)
1262 ideal
M=(ideal)
h->Data();
1263 #if defined(HAVE_FLINT)
1265 #elif defined(HAVE_NTL)
1273 WerrorS(
"expected system(\"rref\",<matrix>/<smatrix>)");
1281 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1286 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1291 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1296 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1301 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1306 if(strcmp(sys_cmd,
"pcvDim")==0)
1311 if(strcmp(sys_cmd,
"pcvBasis")==0)
1318 #ifdef HAVE_EIGENVAL
1319 if(strcmp(sys_cmd,
"hessenberg")==0)
1326 #ifdef HAVE_EIGENVAL
1327 if(strcmp(sys_cmd,
"eigenvals")==0)
1334 #ifdef HAVE_EIGENVAL
1335 if(strcmp(sys_cmd,
"rowelim")==0)
1342 #ifdef HAVE_EIGENVAL
1343 if(strcmp(sys_cmd,
"rowcolswap")==0)
1351 if(strcmp(sys_cmd,
"gmsnf")==0)
1358 if(strcmp(sys_cmd,
"contributors") == 0)
1362 "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");
1367 #ifdef HAVE_SPECTRUM
1368 if(strcmp(sys_cmd,
"spectrum") == 0)
1382 if(((
long)
h->next->Data())==1L)
1388 if(strcmp(sys_cmd,
"semic") == 0)
1394 if (
h->next->next==
NULL)
1396 else if (
h->next->next->Typ()==
INT_CMD)
1403 if(strcmp(sys_cmd,
"spadd") == 0)
1414 if(strcmp(sys_cmd,
"spmul") == 0)
1426 #define HAVE_SHEAFCOH_TRICKS 1
1428 #ifdef HAVE_SHEAFCOH_TRICKS
1429 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1435 int m = (int)( (
long)
h->Data() );
1436 ideal
M = (ideal)
h->next->Data();
1447 if (strcmp(sys_cmd,
"twostd") == 0)
1452 I=(ideal)
h->CopyD();
1466 if (strcmp(sys_cmd,
"bracket") == 0)
1471 poly
p=(poly)
h->CopyD();
1473 poly q=(poly)
h->Data();
1484 if (strcmp(sys_cmd,
"env")==0)
1488 ring r = (ring)
h->Data();
1495 WerrorS(
"`system(\"env\",<ring>)` expected");
1503 if (strcmp(sys_cmd,
"opp")==0)
1507 ring r=(ring)
h->Data();
1514 WerrorS(
"`system(\"opp\",<ring>)` expected");
1522 if (strcmp(sys_cmd,
"oppose")==0)
1525 && (
h->next!=
NULL))
1527 ring Rop = (ring)
h->Data();
1540 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1550 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1557 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1561 res->data = (
void*) walkNextWeight(((
intvec*)
h->Data()),
1563 (ideal)
h->next->next->Data());
1564 if (
res->data ==
NULL ||
res->data == (
void*) 1L)
1580 if (strcmp(sys_cmd,
"walkInitials") == 0)
1584 WerrorS(
"system(\"walkInitials\", ideal) expected");
1587 res->data = (
void*) walkInitials((ideal)
h->Data());
1597 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1603 res->data = (
intvec*) walkAddIntVec(arg1, arg2);
1612 #ifdef MwaklNextWeight
1613 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1620 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1626 ideal arg3 = (ideal)
h->next->next->Data();
1637 if(strcmp(sys_cmd,
"Mivdp") == 0)
1641 WerrorS(
"system(\"Mivdp\", int) expected");
1644 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1646 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1650 int arg1 = (int) ((
long)(
h->Data()));
1660 if(strcmp(sys_cmd,
"Mivlp") == 0)
1664 WerrorS(
"system(\"Mivlp\", int) expected");
1667 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1669 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1673 int arg1 = (int) ((
long)(
h->Data()));
1684 if(strcmp(sys_cmd,
"MpDiv") == 0)
1688 poly arg1 = (poly)
h->Data();
1689 poly arg2 = (poly)
h->next->Data();
1690 poly
result = MpDiv(arg1, arg2);
1701 if(strcmp(sys_cmd,
"MpMult") == 0)
1705 poly arg1 = (poly)
h->Data();
1706 poly arg2 = (poly)
h->next->Data();
1707 poly
result = MpMult(arg1, arg2);
1717 if (strcmp(sys_cmd,
"MivSame") == 0)
1738 res->data = (
void*)(
long)
MivSame(arg1, arg2);
1745 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1768 res->data = (
void*)(
long)
M3ivSame(arg1, arg2, arg3);
1775 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1781 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1785 ideal
id = (ideal)
h->Data();
1797 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1801 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1814 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1818 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1821 int arg1 = (int) ((
long)(
h->Data()));
1831 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1835 ideal arg1 = (ideal)
h->Data();
1837 int arg3 = (int) ((
long)(
h->next->next->Data()));
1847 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1851 ideal arg1 = (ideal)
h->Data();
1853 int arg3 = (int) ((
long)(
h->next->next->Data()));
1863 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1867 ideal arg1 = (ideal)
h->Data();
1878 if(strcmp(sys_cmd,
"MivUnit") == 0)
1882 int arg1 = (int) ((
long)(
h->Data()));
1892 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1906 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1910 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1924 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1928 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1931 int arg1 = (int) ((
long)(
h->Data()));
1941 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1948 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1954 ideal arg3 = (ideal)
h->next->next->Data();
1964 #ifdef MPertNextWeight
1965 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1971 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1976 ideal arg2 = (ideal)
h->next->Data();
1977 int arg3 = (int)
h->next->next->Data();
1988 #ifdef Mivperttarget
1989 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1993 ideal arg1 = (ideal)
h->Data();
1994 int arg2 = (int)
h->next->Data();
2005 if (strcmp(sys_cmd,
"Mwalk") == 0)
2012 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
2016 ideal arg1 = (ideal)
h->CopyD();
2019 ring arg4 = (ring)
h->next->next->next->Data();
2020 int arg5 = (int) (
long)
h->next->next->next->next->Data();
2021 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2022 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2032 if (strcmp(sys_cmd,
"Mwalk") == 0)
2041 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
2045 ideal arg1 = (ideal)
h->Data();
2048 ring arg4 = (ring)
h->next->next->next->Data();
2049 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
2056 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2063 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2066 ideal arg1 = (ideal)
h->Data();
2067 int arg2 = (int) (
long)
h->next->Data();
2068 int arg3 = (int) (
long)
h->next->next->Data();
2071 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2072 int arg7 = (int) (
long)
h->next->next->next->next->next->next->Data();
2073 int arg8 = (int) (
long)
h->next->next->next->next->next->next->next->Data();
2074 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2084 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2093 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2097 ideal arg1 = (ideal)
h->Data();
2100 int arg4 = (int)(
long)
h->next->next->next->Data();
2101 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2102 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2103 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2104 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2113 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2120 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2124 ideal arg1 = (ideal)
h->Data();
2125 int arg2 = (int) ((
long)(
h->next->Data()));
2126 int arg3 = (int) ((
long)(
h->next->next->Data()));
2139 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2146 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2150 ideal arg1 = (ideal)
h->Data();
2153 int arg4 = (int)
h->next->next->next->Data();
2154 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2164 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2171 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2175 ideal arg1 = (ideal)
h->Data();
2178 int arg4 = (int)(
long)
h->next->next->next->Data();
2179 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2180 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2189 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2206 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2211 ideal arg1 = (ideal)
h->Data();
2214 int arg4 = (int)(
long)
h->next->next->next->Data();
2215 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2216 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2217 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2224 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2233 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2237 ideal arg1 = (ideal)
h->Data();
2240 int arg4 = (int)(
long)
h->next->next->next->Data();
2241 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2242 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2243 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2244 int arg8 = (int)(
long)
h->next->next->next->next->next->next->next->Data();
2245 int arg9 = (int)(
long)
h->next->next->next->next->next->next->next->next->Data();
2246 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2256 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2263 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2267 ideal arg1 = (ideal)
h->Data();
2280 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2287 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2291 ideal arg1 = (ideal)
h->Data();
2303 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2310 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2314 ideal arg1 = (ideal)
h->Data();
2317 int arg4 = (int) ((
long)(
h->next->next->next->Data()));
2328 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2333 h->next->next->next ==
NULL ||
h->next->next->next->Typ() !=
INT_CMD ||
2334 h->next->next->next ==
NULL ||
h->next->next->next->next->Typ() !=
INT_CMD ||
2335 h->next->next->next ==
NULL ||
h->next->next->next->next->next->Typ() !=
INT_CMD)
2337 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2343 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2346 ideal arg1 = (ideal)
h->Data();
2349 int arg4 = (int)(
long)
h->next->next->next->Data();
2350 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2351 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2352 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2362 #ifndef MAKE_DISTRIBUTION
2373#ifdef HAVE_EXTENDED_SYSTEM
2377# include "hc_newton.h"
2384 char *sys_cmd=(
char *)(
h->Data());
2387 if (strcmp(sys_cmd,
"syz") == 0)
2391 const char *
s=(
const char *)
h->Data();
2392 if (strcmp(
s,
"posInT_EcartFDegpLength")==0)
2394 else if (strcmp(
s,
"posInT_FDegpLength")==0)
2396 else if (strcmp(
s,
"posInT_pLength")==0)
2398 else if (strcmp(
s,
"posInT0")==0)
2400 else if (strcmp(
s,
"posInT1")==0)
2402 else if (strcmp(
s,
"posInT2")==0)
2404 else if (strcmp(
s,
"posInT11")==0)
2406 else if (strcmp(
s,
"posInT110")==0)
2408 else if (strcmp(
s,
"posInT13")==0)
2410 else if (strcmp(
s,
"posInT15")==0)
2412 else if (strcmp(
s,
"posInT17")==0)
2414 else if (strcmp(
s,
"posInT17_c")==0)
2416 else if (strcmp(
s,
"posInT19")==0)
2418 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2430 if(strcmp(sys_cmd,
"locNF")==0)
2435 poly
f=(poly)
h->Data();
2437 ideal
m=(ideal)
h->Data();
2440 int n=(int)((
long)
h->Data());
2505 if(strcmp(sys_cmd,
"p")==0)
2510 WarnS(
"Sorry: not available for release build!");
2516 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2520 int k = (int)(
long)
h->Data();
2528 if(strcmp(sys_cmd,
"r")==0)
2533 WarnS(
"Sorry: not available for release build!");
2545 if(strcmp(sys_cmd,
"changeRing")==0)
2549 for (
int i = 1;
i <= varN;
i++)
2552 sprintf(
h,
"x%d",
i);
2557 res->data = (
void*)0L;
2562 if(strcmp(sys_cmd,
"mtrack")==0)
2573 char *fn=(
char*)
h->Data();
2574 fd = fopen(fn,
"w");
2576 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2580 max = (int)(
long)
h->Data();
2589 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2596 if(strcmp(sys_cmd,
"backtrace")==0)
2604#if !defined(OM_NDEBUG)
2606 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2610 PrintS(
"\n[om_Info]: \n");
2612#define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2613 OM_PRINT(MaxBytesSystem);
2614 OM_PRINT(CurrentBytesSystem);
2615 OM_PRINT(MaxBytesSbrk);
2616 OM_PRINT(CurrentBytesSbrk);
2617 OM_PRINT(MaxBytesMmap);
2618 OM_PRINT(CurrentBytesMmap);
2619 OM_PRINT(UsedBytes);
2620 OM_PRINT(AvailBytes);
2621 OM_PRINT(UsedBytesMalloc);
2622 OM_PRINT(AvailBytesMalloc);
2623 OM_PRINT(MaxBytesFromMalloc);
2624 OM_PRINT(CurrentBytesFromMalloc);
2625 OM_PRINT(MaxBytesFromValloc);
2626 OM_PRINT(CurrentBytesFromValloc);
2627 OM_PRINT(UsedBytesFromValloc);
2628 OM_PRINT(AvailBytesFromValloc);
2630 OM_PRINT(UsedPages);
2631 OM_PRINT(AvailPages);
2632 OM_PRINT(MaxRegionsAlloc);
2633 OM_PRINT(CurrentRegionsAlloc);
2638 PrintS(
"\n[om_Opts]: \n");
2639#define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2640 OM_PRINT(
"d", MinTrack);
2641 OM_PRINT(
"d", MinCheck);
2642 OM_PRINT(
"d", MaxTrack);
2643 OM_PRINT(
"d", MaxCheck);
2644 OM_PRINT(
"d", Keep);
2645 OM_PRINT(
"d", HowToReportErrors);
2646 OM_PRINT(
"d", MarkAsStatic);
2647 OM_PRINT(
"u", PagesPerRegion);
2648 OM_PRINT(
"p", OutOfMemoryFunc);
2649 OM_PRINT(
"p", MemoryLowFunc);
2650 OM_PRINT(
"p", ErrorHook);
2655 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2658 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2671 #if defined(PDEBUG) || defined(PDIV_DEBUG)
2672 if(strcmp(sys_cmd,
"pDivStat")==0)
2682 if(strcmp(sys_cmd,
"red")==0)
2697 if(strcmp(sys_cmd,
"fastcomb")==0)
2705 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2710 (ideal)
h->Data(),(poly)
h->next->Data());
2718 if(strcmp(sys_cmd,
"comb")==0)
2726 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2731 (ideal)
h->Data(),(poly)
h->next->Data());
2740 if(strcmp(sys_cmd,
"listall")==0)
2742 void listall(
int showproc);
2744 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2752 if(strcmp(sys_cmd,
"proclist")==0)
2754 void piShowProcList();
2762 if(strcmp(sys_cmd,
"newton")==0)
2766 || (
h->next->next->Typ()!=
INT_CMD))
2768 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2771 poly
p=(poly)(
h->Data());
2790 (
int) (
h->next->Data()),
2791 (
int) (
h->next->next->Data())
2804 L->
m[1].
data=(
void *)(
long)r.achse;
2806 L->
m[2].
data=(
void *)(
long)r.deg;
2810 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2812 int anz = r.anz_punkte;
2815 for (
i=0;
i<anz*
dim;
i++)
2825 (*w)[
i] = r.deg_tab[
i];
2828 while (r.deg_tab[
i-1] != -2);
2839 res->data=(
void *)L;
2862 if (strcmp(sys_cmd,
"minpoly") == 0)
2866 Werror(
"expected exactly one argument: %s",
2867 "a square matrix with number entries");
2877 WerrorS(
"expected exactly one argument: "
2878 "a square matrix with number entries");
2885 res->data = (
void *)theMinPoly;
2886 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2888 delete[] polyCoeffs;
2895 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2903 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2912 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2916 WerrorS(
"shell execution is disallowed in restricted mode");
2926 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2935 if (strcmp(sys_cmd,
"GF") == 0)
2952 if (strcmp(sys_cmd,
"svd") == 0)
2963 if (strcmp(sys_cmd,
"redNF_ring")==0)
2966 poly
f = (poly)
h->Data();
2968 ideal
G = (ideal)
h->Data();
2976 if (strcmp(sys_cmd,
"hilbroune") == 0)
2988 if (strcmp(sys_cmd,
"f5")==0)
2997 ideal
G = (ideal)
h->Data();
3001 opt = (int) (
long)
h->Data();
3009 plus = (int) (
long)
h->Data();
3017 termination = (int) (
long)
h->Data();
3023 res->data=(ideal)
F5main(
G,r,opt,plus,termination);
3030 if (strcmp(sys_cmd,
"NF_ring")==0)
3033 poly
f = (poly)
h->Data();
3035 ideal
G = (ideal)
h->Data();
3041 if (strcmp(sys_cmd,
"spoly")==0)
3043 poly
f =
pCopy((poly)
h->Data());
3045 poly
g =
pCopy((poly)
h->Data());
3052 if (strcmp(sys_cmd,
"testGB")==0)
3054 ideal I = (ideal)
h->Data();
3056 ideal GI = (ideal)
h->Data();
3058 res->data = (
void *)(
long)
testGB(I, GI);
3065 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3071 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3079 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3086 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3092 #ifdef HAVE_RATGRING
3093 if (strcmp(sys_cmd,
"intratNF") == 0)
3108 I=(ideal)
h->CopyD();
3116 is=(int)((
long)(
h->Data()));
3124 for(
k=0;
k < id;
k++)
3128 PrintS(
"starting redRat\n");
3146 if (strcmp(sys_cmd,
"ratNF") == 0)
3165 is=(int)((
long)(
h->Data()));
3180 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3198 is=(int)((
long)(
h->Data()));
3214 if (strcmp(sys_cmd,
"ratVar") == 0)
3231 return (start==0)||(end==0)||(start>end);
3235 if (strcmp(sys_cmd,
"unifastmult")==0)
3237 poly
f = (poly)
h->Data();
3239 poly
g=(poly)
h->Data();
3245 if (strcmp(sys_cmd,
"multifastmult")==0)
3247 poly
f = (poly)
h->Data();
3249 poly
g=(poly)
h->Data();
3255 if (strcmp(sys_cmd,
"mults")==0)
3262 if (strcmp(sys_cmd,
"fastpower")==0)
3265 poly
f = (poly)
h->Data();
3267 int n=(int)((
long)
h->Data());
3273 if (strcmp(sys_cmd,
"normalpower")==0)
3275 poly
f = (poly)
h->Data();
3277 int n=(int)((
long)
h->Data());
3283 if (strcmp(sys_cmd,
"MCpower")==0)
3286 poly
f = (poly)
h->Data();
3288 int n=(int)((
long)
h->Data());
3294 if (strcmp(sys_cmd,
"bit_subst")==0)
3297 poly outer = (poly)
h->Data();
3299 poly inner=(poly)
h->Data();
3306 if (strcmp(sys_cmd,
"gcd") == 0)
3326 int d=(int)(
long)
h->next->Data();
3327 char *
s=(
char *)
h->Data();
3345 if (strcmp(sys_cmd,
"subring") == 0)
3359 if (strcmp(sys_cmd,
"HNF") == 0)
3381 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3389 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3394 char *
s=(
char *)
h->next->Data();
3406 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3410 char* filename = (
char*)
h->Data();
3411 FILE*
f = fopen(filename,
"r");
3414 WerrorS(
"invalid file name (in paths use '/')");
3417 mpz_t
m; mpz_init(
m);
3418 mpz_inp_str(
m,
f, 10);
3422 res->data = (
void*)n;
3427 WerrorS(
"expected valid file name as a string");
3439 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3443 (
h->next->next ==
NULL))
3448 int validEntries = 0;
3449 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3451 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3452 sizeof(
int) * jvec->
rows()) == 0)
3454 if (validEntries == 0)
3458 r->
resize(validEntries + 1);
3459 (*r)[validEntries] =
k + 1;
3465 res->data = (
void*)r;
3470 WerrorS(
"expected two non-empty intvecs as arguments");
3481 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3485 (
h->next->next ==
NULL))
3489 int ir = ivec->
rows();
int jr = jvec->
rows();
3490 int r = jr;
if (ir < jr) r = ir;
3491 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3492 sizeof(
int) * r) != 0))
3495 res->data = (
void*)(
long)r;
3500 WerrorS(
"expected two non-empty intvecs as arguments");
3506 if(strcmp(sys_cmd,
"henselfactors")==0)
3511 (
h->next->next->next !=
NULL) &&
3512 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3513 (
h->next->next->next->next !=
NULL) &&
3514 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3515 (
h->next->next->next->next->next !=
NULL) &&
3516 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3517 (
h->next->next->next->next->next->next ==
NULL))
3519 int xIndex = (int)(
long)
h->Data();
3520 int yIndex = (int)(
long)
h->next->Data();
3521 poly hh = (poly)
h->next->next->Data();
3522 poly f0 = (poly)
h->next->next->next->Data();
3523 poly g0 = (poly)
h->next->next->next->next->Data();
3524 int d = (int)(
long)
h->next->next->next->next->next->Data();
3532 res->data = (
char *)L;
3537 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3544 if (strcmp(sys_cmd,
"astep") == 0)
3549 I=(ideal)
h->CopyD();
3562 if (strcmp(sys_cmd,
"PrintMat") == 0)
3572 a=(int)((
long)(
h->Data()));
3577 b=(int)((
long)(
h->Data()));
3592 metric=(int)((
long)(
h->Data()));
3603 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3616 if(strcmp(sys_cmd,
"NCGetType")==0)
3622 res->data=(
void *)(-1L);
3629 if(strcmp(sys_cmd,
"ForceSCA")==0)
3636 b = (int)((
long)(
h->Data()));
3642 e = (int)((
long)(
h->Data()));
3653 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3665 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3677 if(strcmp(sys_cmd,
"test64")==0)
3693 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3699 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3710 if(strcmp(sys_cmd,
"LU")==0)
3720 res->data=(
char*)bb;
3725 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3732 if(strcmp(sys_cmd,
"sort")==0)
3742 if(strcmp(sys_cmd,
"uniq")==0)
3752 if(strcmp(sys_cmd,
"GF")==0)
3757 int p=(int)(
long)
h->Data();
3758 int n=(int)(
long)
h->next->Data();
3759 char *
v=(
char*)
h->next->next->CopyD();
3775 if(strcmp(sys_cmd,
"power1")==0)
3778 poly
f=(poly)
h->CopyD();
3780 res->data=(
void *)
g;
3784 if(strcmp(sys_cmd,
"power2")==0)
3787 poly
f=(poly)
h->Data();
3789 for(
int i=0;
i<2000;
i++)
3791 res->data=(
void *)
g;
3794 if(strcmp(sys_cmd,
"power3")==0)
3797 poly
f=(poly)
h->Data();
3808 poly p1536=
pMult(p1024,p512);
3809 poly p1792=
pMult(p1536,p256);
3810 poly p1920=
pMult(p1792,p128);
3811 poly p1984=
pMult(p1920,p64);
3812 poly p2000=
pMult(p1984,p16);
3813 res->data=(
void *)p2000;
3834 if(strcmp(sys_cmd,
"ccluster")==0)
3844 int pol_with_complex_coeffs=0;
3846 pol_with_complex_coeffs=1;
3852 fmpq_poly_t fre, fim;
3854 if (pol_with_complex_coeffs==1)
3859 fmpq_t center_re,center_im,boxsize,eps;
3865 int n=fmpq_poly_length(fre);
3866 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3867 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3869 for(
int i=0;
i<n;
i++)
3870 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3875 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3876 strategy = strategy+(nb_threads<<6);
3879 if (pol_with_complex_coeffs==0)
3880 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3882 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3886 for(
int i=0;
i<nn;
i++)
3900 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3904 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3905 fmpq_poly_clear(fre);
3906 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3918 if(strcmp(sys_cmd,
"evaluate")==0)
3920 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3923 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3926 poly
p=(poly)
h->Data();
3933 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3936 pt[
i]=(number)
h->Data();
3944 if(strcmp(sys_cmd,
"DivRem")==0)
3949 poly
p=(poly)
h->CopyD();
3950 poly q=(poly)
h->next->CopyD();
3959 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
3965 if(strcmp(sys_cmd,
"CoeffTerm")==0)
3976 poly
p=(poly)
h->Data();
3977 poly q=(poly)
h->next->Data();
3985 ideal
p=(ideal)
h->Data();
3986 poly q=(poly)
h->next->Data();
3993 poly
p=(poly)
h->Data();
3994 poly q=(poly)
h->next->Data();
4001 ideal
p=(ideal)
h->Data();
4002 poly q=(poly)
h->next->Data();
4009 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)
void error(const char *fmt,...)
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)
void omMarkAsStaticAddr(void *addr)
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)
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 pPrintDivisbleByStat()
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 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 unsigned pLength(poly a)
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)
Compatiblity 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 omPrintUsedTrackAddrs(F, max)