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",
2672 if(strcmp(sys_cmd,
"red")==0)
2687 if(strcmp(sys_cmd,
"fastcomb")==0)
2695 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2700 (ideal)
h->Data(),(poly)
h->next->Data());
2708 if(strcmp(sys_cmd,
"comb")==0)
2716 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2721 (ideal)
h->Data(),(poly)
h->next->Data());
2730 if(strcmp(sys_cmd,
"listall")==0)
2732 void listall(
int showproc);
2734 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2742 if(strcmp(sys_cmd,
"proclist")==0)
2744 void piShowProcList();
2752 if(strcmp(sys_cmd,
"newton")==0)
2756 || (
h->next->next->Typ()!=
INT_CMD))
2758 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2761 poly
p=(poly)(
h->Data());
2780 (
int) (
h->next->Data()),
2781 (
int) (
h->next->next->Data())
2794 L->
m[1].
data=(
void *)(
long)r.achse;
2796 L->
m[2].
data=(
void *)(
long)r.deg;
2800 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2802 int anz = r.anz_punkte;
2805 for (
i=0;
i<anz*
dim;
i++)
2815 (*w)[
i] = r.deg_tab[
i];
2818 while (r.deg_tab[
i-1] != -2);
2829 res->data=(
void *)L;
2852 if (strcmp(sys_cmd,
"minpoly") == 0)
2856 Werror(
"expected exactly one argument: %s",
2857 "a square matrix with number entries");
2867 WerrorS(
"expected exactly one argument: "
2868 "a square matrix with number entries");
2875 res->data = (
void *)theMinPoly;
2876 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2878 delete[] polyCoeffs;
2885 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2893 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2902 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2906 WerrorS(
"shell execution is disallowed in restricted mode");
2916 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2925 if (strcmp(sys_cmd,
"GF") == 0)
2942 if (strcmp(sys_cmd,
"svd") == 0)
2953 if (strcmp(sys_cmd,
"redNF_ring")==0)
2956 poly
f = (poly)
h->Data();
2958 ideal
G = (ideal)
h->Data();
2966 if (strcmp(sys_cmd,
"hilbroune") == 0)
2978 if (strcmp(sys_cmd,
"f5")==0)
2987 ideal
G = (ideal)
h->Data();
2991 opt = (int) (
long)
h->Data();
2999 plus = (int) (
long)
h->Data();
3007 termination = (int) (
long)
h->Data();
3013 res->data=(ideal)
F5main(
G,r,opt,plus,termination);
3020 if (strcmp(sys_cmd,
"NF_ring")==0)
3023 poly
f = (poly)
h->Data();
3025 ideal
G = (ideal)
h->Data();
3031 if (strcmp(sys_cmd,
"spoly")==0)
3033 poly
f =
pCopy((poly)
h->Data());
3035 poly
g =
pCopy((poly)
h->Data());
3042 if (strcmp(sys_cmd,
"testGB")==0)
3044 ideal I = (ideal)
h->Data();
3046 ideal GI = (ideal)
h->Data();
3048 res->data = (
void *)(
long)
testGB(I, GI);
3055 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3061 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3069 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3076 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3082 #ifdef HAVE_RATGRING
3083 if (strcmp(sys_cmd,
"intratNF") == 0)
3098 I=(ideal)
h->CopyD();
3106 is=(int)((
long)(
h->Data()));
3114 for(
k=0;
k < id;
k++)
3118 PrintS(
"starting redRat\n");
3136 if (strcmp(sys_cmd,
"ratNF") == 0)
3155 is=(int)((
long)(
h->Data()));
3170 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3188 is=(int)((
long)(
h->Data()));
3204 if (strcmp(sys_cmd,
"ratVar") == 0)
3221 return (start==0)||(end==0)||(start>end);
3225 if (strcmp(sys_cmd,
"unifastmult")==0)
3227 poly
f = (poly)
h->Data();
3229 poly
g=(poly)
h->Data();
3235 if (strcmp(sys_cmd,
"multifastmult")==0)
3237 poly
f = (poly)
h->Data();
3239 poly
g=(poly)
h->Data();
3245 if (strcmp(sys_cmd,
"mults")==0)
3252 if (strcmp(sys_cmd,
"fastpower")==0)
3255 poly
f = (poly)
h->Data();
3257 int n=(int)((
long)
h->Data());
3263 if (strcmp(sys_cmd,
"normalpower")==0)
3265 poly
f = (poly)
h->Data();
3267 int n=(int)((
long)
h->Data());
3273 if (strcmp(sys_cmd,
"MCpower")==0)
3276 poly
f = (poly)
h->Data();
3278 int n=(int)((
long)
h->Data());
3284 if (strcmp(sys_cmd,
"bit_subst")==0)
3287 poly outer = (poly)
h->Data();
3289 poly inner=(poly)
h->Data();
3296 if (strcmp(sys_cmd,
"gcd") == 0)
3316 int d=(int)(
long)
h->next->Data();
3317 char *
s=(
char *)
h->Data();
3335 if (strcmp(sys_cmd,
"subring") == 0)
3349 if (strcmp(sys_cmd,
"HNF") == 0)
3371 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3379 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3384 char *
s=(
char *)
h->next->Data();
3396 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3400 char* filename = (
char*)
h->Data();
3401 FILE*
f = fopen(filename,
"r");
3404 WerrorS(
"invalid file name (in paths use '/')");
3407 mpz_t
m; mpz_init(
m);
3408 mpz_inp_str(
m,
f, 10);
3412 res->data = (
void*)n;
3417 WerrorS(
"expected valid file name as a string");
3429 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3433 (
h->next->next ==
NULL))
3438 int validEntries = 0;
3439 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3441 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3442 sizeof(
int) * jvec->
rows()) == 0)
3444 if (validEntries == 0)
3448 r->
resize(validEntries + 1);
3449 (*r)[validEntries] =
k + 1;
3455 res->data = (
void*)r;
3460 WerrorS(
"expected two non-empty intvecs as arguments");
3471 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3475 (
h->next->next ==
NULL))
3479 int ir = ivec->
rows();
int jr = jvec->
rows();
3480 int r = jr;
if (ir < jr) r = ir;
3481 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3482 sizeof(
int) * r) != 0))
3485 res->data = (
void*)(
long)r;
3490 WerrorS(
"expected two non-empty intvecs as arguments");
3496 if(strcmp(sys_cmd,
"henselfactors")==0)
3501 (
h->next->next->next !=
NULL) &&
3502 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3503 (
h->next->next->next->next !=
NULL) &&
3504 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3505 (
h->next->next->next->next->next !=
NULL) &&
3506 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3507 (
h->next->next->next->next->next->next ==
NULL))
3509 int xIndex = (int)(
long)
h->Data();
3510 int yIndex = (int)(
long)
h->next->Data();
3511 poly hh = (poly)
h->next->next->Data();
3512 poly f0 = (poly)
h->next->next->next->Data();
3513 poly g0 = (poly)
h->next->next->next->next->Data();
3514 int d = (int)(
long)
h->next->next->next->next->next->Data();
3522 res->data = (
char *)L;
3527 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3534 if (strcmp(sys_cmd,
"astep") == 0)
3539 I=(ideal)
h->CopyD();
3552 if (strcmp(sys_cmd,
"PrintMat") == 0)
3562 a=(int)((
long)(
h->Data()));
3567 b=(int)((
long)(
h->Data()));
3582 metric=(int)((
long)(
h->Data()));
3593 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3606 if(strcmp(sys_cmd,
"NCGetType")==0)
3612 res->data=(
void *)(-1L);
3619 if(strcmp(sys_cmd,
"ForceSCA")==0)
3626 b = (int)((
long)(
h->Data()));
3632 e = (int)((
long)(
h->Data()));
3643 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3655 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3667 if(strcmp(sys_cmd,
"test64")==0)
3683 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3689 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3700 if(strcmp(sys_cmd,
"LU")==0)
3710 res->data=(
char*)bb;
3715 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3722 if(strcmp(sys_cmd,
"sort")==0)
3732 if(strcmp(sys_cmd,
"uniq")==0)
3742 if(strcmp(sys_cmd,
"GF")==0)
3747 int p=(int)(
long)
h->Data();
3748 int n=(int)(
long)
h->next->Data();
3749 char *
v=(
char*)
h->next->next->CopyD();
3765 if(strcmp(sys_cmd,
"power1")==0)
3768 poly
f=(poly)
h->CopyD();
3770 res->data=(
void *)
g;
3774 if(strcmp(sys_cmd,
"power2")==0)
3777 poly
f=(poly)
h->Data();
3779 for(
int i=0;
i<2000;
i++)
3781 res->data=(
void *)
g;
3784 if(strcmp(sys_cmd,
"power3")==0)
3787 poly
f=(poly)
h->Data();
3798 poly p1536=
pMult(p1024,p512);
3799 poly p1792=
pMult(p1536,p256);
3800 poly p1920=
pMult(p1792,p128);
3801 poly p1984=
pMult(p1920,p64);
3802 poly p2000=
pMult(p1984,p16);
3803 res->data=(
void *)p2000;
3824 if(strcmp(sys_cmd,
"ccluster")==0)
3834 int pol_with_complex_coeffs=0;
3836 pol_with_complex_coeffs=1;
3842 fmpq_poly_t fre, fim;
3844 if (pol_with_complex_coeffs==1)
3849 fmpq_t center_re,center_im,boxsize,eps;
3855 int n=fmpq_poly_length(fre);
3856 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3857 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3859 for(
int i=0;
i<n;
i++)
3860 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3865 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3866 strategy = strategy+(nb_threads<<6);
3869 if (pol_with_complex_coeffs==0)
3870 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3872 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3876 for(
int i=0;
i<nn;
i++)
3890 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3894 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3895 fmpq_poly_clear(fre);
3896 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3908 if(strcmp(sys_cmd,
"evaluate")==0)
3910 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3913 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3916 poly
p=(poly)
h->Data();
3923 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3926 pt[
i]=(number)
h->Data();
3934 if(strcmp(sys_cmd,
"DivRem")==0)
3939 poly
p=(poly)
h->CopyD();
3940 poly q=(poly)
h->next->CopyD();
3949 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
3955 if(strcmp(sys_cmd,
"CoeffTerm")==0)
3968 poly
p=(poly)
h->Data();
3969 poly q=(poly)
h->next->Data();
3977 ideal
p=(ideal)
h->Data();
3978 poly q=(poly)
h->next->Data();
3985 poly
p=(poly)
h->Data();
3986 poly q=(poly)
h->next->Data();
3993 ideal
p=(ideal)
h->Data();
3994 poly q=(poly)
h->next->Data();
4001 poly
p=(poly)
h->Data();
4002 ideal q=(ideal)
h->next->Data();
4009 poly
p=(poly)
h->Data();
4010 ideal q=(ideal)
h->next->Data();
4017 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)
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 omPrintUsedTrackAddrs(F, max)