18 #include "ccluster/ccluster.h"
21 #include "factory/factory.h"
23 #ifdef TIME_WITH_SYS_TIME
25 # ifdef HAVE_SYS_TIME_H
26 # include <sys/time.h>
29 # ifdef HAVE_SYS_TIME_H
30 # include <sys/time.h>
35 #ifdef HAVE_SYS_TIMES_H
36 #include <sys/times.h>
140 #ifndef MAKE_DISTRIBUTION
141 #define HAVE_EXTENDED_SYSTEM 1
158 #ifdef HAVE_SIMPLEIPC
166 #ifndef MAKE_DISTRIBUTION
177 int n = singularMatrix->
rows();
179 unsigned long **longMatrix = 0;
180 longMatrix =
new unsigned long *[n] ;
181 for (
int i = 0 ;
i < n;
i++)
182 longMatrix[
i] =
new unsigned long [n];
184 for (
int r = 0; r < n; r++)
185 for (
int c = 0; c < n; c++)
187 poly
p=
MATELEM(singularMatrix, r + 1, c + 1);
197 longMatrix[r][c] = (
unsigned long)entryAsInt;
212 if ((
int)polyCoeffs[
i] != 0)
233 const char *sys_cmd=(
char *)(args->
Data());
238 if (strcmp(sys_cmd,
"nblocks") == 0)
260 r = (ring)
h->Data();
267 if(strcmp(sys_cmd,
"version")==0)
275 if(strcmp(sys_cmd,
"alarm")==0)
282 struct itimerval t,o;
283 memset(&t,0,
sizeof(t));
284 t.it_value.tv_sec =(unsigned)((
unsigned long)
h->Data());
285 setitimer(ITIMER_VIRTUAL,&t,&o);
293 if(strcmp(sys_cmd,
"content")==0)
298 poly
p=(poly)
h->CopyD();
312 if(strcmp(sys_cmd,
"cpu")==0)
315 #ifdef _SC_NPROCESSORS_ONLN
316 cpu=sysconf(_SC_NPROCESSORS_ONLN);
317 #elif defined(_SC_NPROCESSORS_CONF)
318 cpu=sysconf(_SC_NPROCESSORS_CONF);
320 res->data=(
void *)cpu;
326 if(strcmp(sys_cmd,
"executable")==0)
341 if(strcmp(sys_cmd,
"flatten")==0)
354 if(strcmp(sys_cmd,
"unflatten")==0)
367 if(strcmp(sys_cmd,
"neworder")==0)
381 if(strcmp(sys_cmd,
"nc_hilb") == 0)
389 i = (ideal)
h->Data();
392 WerrorS(
"nc_Hilb:ideal expected");
397 lV = (int)(
long)
h->Data();
400 WerrorS(
"nc_Hilb:int expected");
406 if((
int)(
long)
h->Data() == 1)
408 else if((
int)(
long)
h->Data() == 2)
413 trunDegHs = (int)(
long)
h->Data();
418 WerrorS(
"nc_Hilb:int 1,2, total degree for the truncation, and a string for printing the details are expected");
427 if(strcmp(sys_cmd,
"verifyGB")==0)
431 WerrorS(
"system(\"verifyGB\",<ideal>,..) expects a commutative ring");
436 WerrorS(
"expected system(\"verifyGB\",<ideal>,..)");
439 ideal F=(ideal)
h->Data();
456 if(strcmp(sys_cmd,
"rcolon") == 0)
461 ideal
i = (ideal)
h->Data();
463 poly
w=(poly)
h->Data();
465 int lV = (int)(
long)
h->Data();
476 if(strcmp(sys_cmd,
"sh")==0)
480 WerrorS(
"shell execution is disallowed in restricted mode");
486 res->data = (
void*)(
long)
system((
char*)(
h->Data()));
493 if(strcmp(sys_cmd,
"reduce_bound")==0)
503 p = (poly)
h->CopyD();
507 pid = (ideal)
h->CopyD();
512 ideal q = (ideal)
h->next->CopyD();
513 int bound = (int)(
long)
h->next->next->Data();
522 if(strcmp(sys_cmd,
"uname")==0)
530 if(strcmp(sys_cmd,
"with")==0)
540 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else
541 char *
s=(
char *)
h->Data();
554 #ifdef TEST_MAC_ORDER
559 #ifdef HAVE_DYNAMIC_LOADING
582 if (strcmp(sys_cmd,
"browsers")==0)
592 if (strcmp(sys_cmd,
"pid")==0)
595 res->data=(
void *)(
long) getpid();
600 if (strcmp(sys_cmd,
"getenv")==0)
605 const char *r=
getenv((
char *)
h->Data());
618 if (strcmp(sys_cmd,
"setenv")==0)
625 setenv((
char *)
h->Data(), (
char *)
h->next->Data(), 1);
635 WerrorS(
"setenv not supported on this platform");
641 if (strcmp(sys_cmd,
"Singular") == 0)
650 if (strcmp(sys_cmd,
"SingularLib") == 0)
659 if (strcmp(sys_cmd,
"SingularBin") == 0)
669 if (strstr(sys_cmd,
"--") == sys_cmd)
671 if (strcmp(sys_cmd,
"--") == 0)
679 Werror(
"Unknown option %s", sys_cmd);
680 WerrorS(
"Use 'system(\"--\");' for listing of available options");
695 const char *r=(
const char*)
feOptSpec[opt].value;
709 WerrorS(
"Need string or int argument to set option value");
712 const char* errormsg;
717 Werror(
"Need string argument to set value of option %s", sys_cmd);
721 if (errormsg !=
NULL)
722 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)
h->Data()), errormsg);
727 if (errormsg !=
NULL)
728 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*)
h->Data(), errormsg);
735 if (strcmp(sys_cmd,
"HC")==0)
743 if(strcmp(sys_cmd,
"random")==0)
766 if (strcmp(sys_cmd,
"denom_list")==0)
775 if(strcmp(sys_cmd,
"complexNearZero")==0)
782 WerrorS(
"unsupported ground field!");
789 (int)((
long)(
h->next->Data())));
800 if(strcmp(sys_cmd,
"getPrecDigits")==0)
805 WerrorS(
"unsupported ground field!");
816 if(strcmp(sys_cmd,
"lduDecomp")==0)
823 poly
l; poly u; poly prodLU;
824 lduDecomp(aMat, pMat, lMat, dMat, uMat,
l, u, prodLU);
835 res->data = (
char *)L;
845 if(strcmp(sys_cmd,
"lduSolve")==0)
879 poly
l = (poly)
h->next->next->next->next->Data();
880 poly u = (poly)
h->next->next->next->next->next->Data();
881 poly lTimesU = (poly)
h->next->next->next->next->next->next->Data();
882 matrix bVec = (
matrix)
h->next->next->next->next->next->next->next->Data();
886 Werror(
"first matrix (%d x %d) is not quadratic",
892 Werror(
"second matrix (%d x %d) is not quadratic",
898 Werror(
"third matrix (%d x %d) is not quadratic",
904 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
911 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
916 bVec, xVec, homogSolSpace);
939 if (strcmp(sys_cmd,
"shared") == 0)
941 #ifndef SI_COUNTEDREF_AUTOLOAD
948 else if (strcmp(sys_cmd,
"reference") == 0)
950 #ifndef SI_COUNTEDREF_AUTOLOAD
959 #ifdef HAVE_SIMPLEIPC
960 if (strcmp(sys_cmd,
"semaphore")==0)
966 v=(int)(
long)
h->next->next->Data();
973 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
980 if (strcmp(sys_cmd,
"reserve")==0)
988 res->data=(
void*)(
long)
p;
995 if (strcmp(sys_cmd,
"reservedLink")==0)
1004 if (strcmp(sys_cmd,
"install")==0)
1010 (
int)(
long)
h->next->next->next->Data(),
1017 if (strcmp(sys_cmd,
"newstruct")==0)
1023 char *n=(
char*)
h->Data();
1030 newstruct_desc desc=(newstruct_desc)bb->data;
1034 else Werror(
"'%s' is not a newstruct",n);
1036 else Werror(
"'%s' is not a blackbox object",n);
1042 if (strcmp(sys_cmd,
"blackbox")==0)
1049 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1050 if (strcmp(sys_cmd,
"absFact") == 0)
1067 l->m[0].data=(
void *)
f;
1069 l->m[1].data=(
void *)
v;
1071 l->m[2].data=(
void*) mipos;
1073 l->m[3].data=(
void*) (
long) n;
1074 res->data=(
void *)
l;
1083 if (strcmp(sys_cmd,
"LLL") == 0)
1106 #if __FLINT_RELEASE >= 20500
1107 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1128 WerrorS(
"matrix,int or bigint,int expected");
1133 if(((
int)((
long)(
h->next->Data())) != 0) && (
int)((
long)(
h->next->Data()) != 1))
1135 WerrorS(
"int is different from 0, 1");
1139 if((
long)(
h->next->Data()) == 0)
1154 if((
long)(
h->next->Data()) == 1)
1160 for(
int i = 1;
i<=
m->rows();
i++)
1178 for(
int i = 1;
i<=
m->rows();
i++)
1201 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1206 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1211 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1216 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1221 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1226 if(strcmp(sys_cmd,
"pcvDim")==0)
1231 if(strcmp(sys_cmd,
"pcvBasis")==0)
1238 #ifdef HAVE_EIGENVAL
1239 if(strcmp(sys_cmd,
"hessenberg")==0)
1246 #ifdef HAVE_EIGENVAL
1247 if(strcmp(sys_cmd,
"eigenvals")==0)
1254 #ifdef HAVE_EIGENVAL
1255 if(strcmp(sys_cmd,
"rowelim")==0)
1262 #ifdef HAVE_EIGENVAL
1263 if(strcmp(sys_cmd,
"rowcolswap")==0)
1271 if(strcmp(sys_cmd,
"gmsnf")==0)
1278 if(strcmp(sys_cmd,
"contributors") == 0)
1282 "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");
1287 #ifdef HAVE_SPECTRUM
1288 if(strcmp(sys_cmd,
"spectrum") == 0)
1302 if(((
long)
h->next->Data())==1L)
1308 if(strcmp(sys_cmd,
"semic") == 0)
1314 if (
h->next->next==
NULL)
1316 else if (
h->next->next->Typ()==
INT_CMD)
1323 if(strcmp(sys_cmd,
"spadd") == 0)
1334 if(strcmp(sys_cmd,
"spmul") == 0)
1346 #define HAVE_SHEAFCOH_TRICKS 1
1348 #ifdef HAVE_SHEAFCOH_TRICKS
1349 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1355 int m = (int)( (
long)
h->Data() );
1356 ideal
M = (ideal)
h->next->Data();
1367 if (strcmp(sys_cmd,
"twostd") == 0)
1372 I=(ideal)
h->CopyD();
1386 if (strcmp(sys_cmd,
"bracket") == 0)
1391 poly
p=(poly)
h->CopyD();
1393 poly q=(poly)
h->Data();
1404 if (strcmp(sys_cmd,
"env")==0)
1408 ring r = (ring)
h->Data();
1415 WerrorS(
"`system(\"env\",<ring>)` expected");
1423 if (strcmp(sys_cmd,
"opp")==0)
1427 ring r=(ring)
h->Data();
1434 WerrorS(
"`system(\"opp\",<ring>)` expected");
1442 if (strcmp(sys_cmd,
"oppose")==0)
1445 && (
h->next!=
NULL))
1447 ring Rop = (ring)
h->Data();
1460 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1470 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1477 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1481 res->data = (
void*) walkNextWeight(((
intvec*)
h->Data()),
1483 (ideal)
h->next->next->Data());
1484 if (
res->data ==
NULL ||
res->data == (
void*) 1L)
1500 if (strcmp(sys_cmd,
"walkInitials") == 0)
1504 WerrorS(
"system(\"walkInitials\", ideal) expected");
1507 res->data = (
void*) walkInitials((ideal)
h->Data());
1517 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1523 res->data = (
intvec*) walkAddIntVec(arg1, arg2);
1532 #ifdef MwaklNextWeight
1533 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1540 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1546 ideal arg3 = (ideal)
h->next->next->Data();
1557 if(strcmp(sys_cmd,
"Mivdp") == 0)
1561 WerrorS(
"system(\"Mivdp\", int) expected");
1564 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1566 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1570 int arg1 = (int) ((
long)(
h->Data()));
1580 if(strcmp(sys_cmd,
"Mivlp") == 0)
1584 WerrorS(
"system(\"Mivlp\", int) expected");
1587 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1589 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1593 int arg1 = (int) ((
long)(
h->Data()));
1604 if(strcmp(sys_cmd,
"MpDiv") == 0)
1608 poly arg1 = (poly)
h->Data();
1609 poly arg2 = (poly)
h->next->Data();
1610 poly
result = MpDiv(arg1, arg2);
1621 if(strcmp(sys_cmd,
"MpMult") == 0)
1625 poly arg1 = (poly)
h->Data();
1626 poly arg2 = (poly)
h->next->Data();
1627 poly
result = MpMult(arg1, arg2);
1637 if (strcmp(sys_cmd,
"MivSame") == 0)
1658 res->data = (
void*)(
long)
MivSame(arg1, arg2);
1665 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1688 res->data = (
void*)(
long)
M3ivSame(arg1, arg2, arg3);
1695 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1701 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1705 ideal
id = (ideal)
h->Data();
1717 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1721 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1734 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1738 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1741 int arg1 = (int) ((
long)(
h->Data()));
1751 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1755 ideal arg1 = (ideal)
h->Data();
1757 int arg3 = (int) ((
long)(
h->next->next->Data()));
1767 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1771 ideal arg1 = (ideal)
h->Data();
1773 int arg3 = (int) ((
long)(
h->next->next->Data()));
1783 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1787 ideal arg1 = (ideal)
h->Data();
1798 if(strcmp(sys_cmd,
"MivUnit") == 0)
1802 int arg1 = (int) ((
long)(
h->Data()));
1812 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1826 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1830 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1844 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1848 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1851 int arg1 = (int) ((
long)(
h->Data()));
1861 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1868 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1874 ideal arg3 = (ideal)
h->next->next->Data();
1884 #ifdef MPertNextWeight
1885 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1891 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1896 ideal arg2 = (ideal)
h->next->Data();
1897 int arg3 = (int)
h->next->next->Data();
1908 #ifdef Mivperttarget
1909 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1913 ideal arg1 = (ideal)
h->Data();
1914 int arg2 = (int)
h->next->Data();
1925 if (strcmp(sys_cmd,
"Mwalk") == 0)
1932 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
1936 ideal arg1 = (ideal)
h->CopyD();
1939 ring arg4 = (ring)
h->next->next->next->Data();
1940 int arg5 = (int) (
long)
h->next->next->next->next->Data();
1941 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
1942 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
1952 if (strcmp(sys_cmd,
"Mwalk") == 0)
1961 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
1965 ideal arg1 = (ideal)
h->Data();
1968 ring arg4 = (ring)
h->next->next->next->Data();
1969 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
1976 if (strcmp(sys_cmd,
"Mpwalk") == 0)
1983 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
1986 ideal arg1 = (ideal)
h->Data();
1987 int arg2 = (int) (
long)
h->next->Data();
1988 int arg3 = (int) (
long)
h->next->next->Data();
1991 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
1992 int arg7 = (int) (
long)
h->next->next->next->next->next->next->Data();
1993 int arg8 = (int) (
long)
h->next->next->next->next->next->next->next->Data();
1994 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2004 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2013 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2017 ideal arg1 = (ideal)
h->Data();
2020 int arg4 = (int)(
long)
h->next->next->next->Data();
2021 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2022 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2023 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2024 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2033 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2040 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2044 ideal arg1 = (ideal)
h->Data();
2045 int arg2 = (int) ((
long)(
h->next->Data()));
2046 int arg3 = (int) ((
long)(
h->next->next->Data()));
2059 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2066 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2070 ideal arg1 = (ideal)
h->Data();
2073 int arg4 = (int)
h->next->next->next->Data();
2074 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2084 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2091 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2095 ideal arg1 = (ideal)
h->Data();
2098 int arg4 = (int)(
long)
h->next->next->next->Data();
2099 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2100 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2109 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2126 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2131 ideal arg1 = (ideal)
h->Data();
2134 int arg4 = (int)(
long)
h->next->next->next->Data();
2135 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2136 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2137 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2144 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2153 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2157 ideal arg1 = (ideal)
h->Data();
2160 int arg4 = (int)(
long)
h->next->next->next->Data();
2161 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2162 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2163 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2164 int arg8 = (int)(
long)
h->next->next->next->next->next->next->next->Data();
2165 int arg9 = (int)(
long)
h->next->next->next->next->next->next->next->next->Data();
2166 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2176 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2183 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2187 ideal arg1 = (ideal)
h->Data();
2200 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2207 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2211 ideal arg1 = (ideal)
h->Data();
2223 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2230 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2234 ideal arg1 = (ideal)
h->Data();
2237 int arg4 = (int) ((
long)(
h->next->next->next->Data()));
2248 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2253 h->next->next->next ==
NULL ||
h->next->next->next->Typ() !=
INT_CMD ||
2254 h->next->next->next ==
NULL ||
h->next->next->next->next->Typ() !=
INT_CMD ||
2255 h->next->next->next ==
NULL ||
h->next->next->next->next->next->Typ() !=
INT_CMD)
2257 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2263 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2266 ideal arg1 = (ideal)
h->Data();
2269 int arg4 = (int)(
long)
h->next->next->next->Data();
2270 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2271 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2272 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2282 #ifndef MAKE_DISTRIBUTION
2293 #ifdef HAVE_EXTENDED_SYSTEM
2297 # include "hc_newton.h"
2304 char *sys_cmd=(
char *)(
h->Data());
2307 if (strcmp(sys_cmd,
"syz") == 0)
2311 const char *
s=(
const char *)
h->Data();
2312 if (strcmp(
s,
"posInT_EcartFDegpLength")==0)
2314 else if (strcmp(
s,
"posInT_FDegpLength")==0)
2316 else if (strcmp(
s,
"posInT_pLength")==0)
2318 else if (strcmp(
s,
"posInT0")==0)
2320 else if (strcmp(
s,
"posInT1")==0)
2322 else if (strcmp(
s,
"posInT2")==0)
2324 else if (strcmp(
s,
"posInT11")==0)
2326 else if (strcmp(
s,
"posInT110")==0)
2328 else if (strcmp(
s,
"posInT13")==0)
2330 else if (strcmp(
s,
"posInT15")==0)
2332 else if (strcmp(
s,
"posInT17")==0)
2334 else if (strcmp(
s,
"posInT17_c")==0)
2336 else if (strcmp(
s,
"posInT19")==0)
2338 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2350 if(strcmp(sys_cmd,
"locNF")==0)
2355 poly
f=(poly)
h->Data();
2357 ideal
m=(ideal)
h->Data();
2360 int n=(int)((
long)
h->Data());
2425 if(strcmp(sys_cmd,
"p")==0)
2430 WarnS(
"Sorry: not available for release build!");
2436 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2440 int k = (int)(
long)
h->Data();
2448 if(strcmp(sys_cmd,
"r")==0)
2453 WarnS(
"Sorry: not available for release build!");
2465 if(strcmp(sys_cmd,
"changeRing")==0)
2469 for (
int i = 1;
i <= varN;
i++)
2472 sprintf(
h,
"x%d",
i);
2477 res->data = (
void*)0L;
2482 if(strcmp(sys_cmd,
"mtrack")==0)
2493 char *fn=(
char*)
h->Data();
2494 fd = fopen(fn,
"w");
2496 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2500 max = (int)(
long)
h->Data();
2509 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2516 if(strcmp(sys_cmd,
"backtrace")==0)
2524 #if !defined(OM_NDEBUG)
2526 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2530 PrintS(
"\n[om_Info]: \n");
2532 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2533 OM_PRINT(MaxBytesSystem);
2534 OM_PRINT(CurrentBytesSystem);
2535 OM_PRINT(MaxBytesSbrk);
2536 OM_PRINT(CurrentBytesSbrk);
2537 OM_PRINT(MaxBytesMmap);
2538 OM_PRINT(CurrentBytesMmap);
2539 OM_PRINT(UsedBytes);
2540 OM_PRINT(AvailBytes);
2541 OM_PRINT(UsedBytesMalloc);
2542 OM_PRINT(AvailBytesMalloc);
2543 OM_PRINT(MaxBytesFromMalloc);
2544 OM_PRINT(CurrentBytesFromMalloc);
2545 OM_PRINT(MaxBytesFromValloc);
2546 OM_PRINT(CurrentBytesFromValloc);
2547 OM_PRINT(UsedBytesFromValloc);
2548 OM_PRINT(AvailBytesFromValloc);
2550 OM_PRINT(UsedPages);
2551 OM_PRINT(AvailPages);
2552 OM_PRINT(MaxRegionsAlloc);
2553 OM_PRINT(CurrentRegionsAlloc);
2558 PrintS(
"\n[om_Opts]: \n");
2559 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2560 OM_PRINT(
"d", MinTrack);
2561 OM_PRINT(
"d", MinCheck);
2562 OM_PRINT(
"d", MaxTrack);
2563 OM_PRINT(
"d", MaxCheck);
2564 OM_PRINT(
"d", Keep);
2565 OM_PRINT(
"d", HowToReportErrors);
2566 OM_PRINT(
"d", MarkAsStatic);
2567 OM_PRINT(
"u", PagesPerRegion);
2568 OM_PRINT(
"p", OutOfMemoryFunc);
2569 OM_PRINT(
"p", MemoryLowFunc);
2570 OM_PRINT(
"p", ErrorHook);
2575 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2578 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2591 #if defined(PDEBUG) || defined(PDIV_DEBUG)
2592 if(strcmp(sys_cmd,
"pDivStat")==0)
2602 if(strcmp(sys_cmd,
"red")==0)
2617 if(strcmp(sys_cmd,
"fastcomb")==0)
2625 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2630 (ideal)
h->Data(),(poly)
h->next->Data());
2638 if(strcmp(sys_cmd,
"comb")==0)
2646 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2651 (ideal)
h->Data(),(poly)
h->next->Data());
2660 if(strcmp(sys_cmd,
"listall")==0)
2662 void listall(
int showproc);
2664 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2672 if(strcmp(sys_cmd,
"proclist")==0)
2674 void piShowProcList();
2682 if(strcmp(sys_cmd,
"newton")==0)
2686 || (
h->next->next->Typ()!=
INT_CMD))
2688 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2691 poly
p=(poly)(
h->Data());
2710 (
int) (
h->next->Data()),
2711 (
int) (
h->next->next->Data())
2724 L->
m[1].
data=(
void *)(
long)r.achse;
2726 L->
m[2].
data=(
void *)(
long)r.deg;
2730 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2732 int anz = r.anz_punkte;
2735 for (
i=0;
i<anz*
dim;
i++)
2745 (*w)[
i] = r.deg_tab[
i];
2748 while (r.deg_tab[
i-1] != -2);
2759 res->data=(
void *)L;
2782 if (strcmp(sys_cmd,
"minpoly") == 0)
2786 Werror(
"expected exactly one argument: %s",
2787 "a square matrix with number entries");
2797 WerrorS(
"expected exactly one argument: "
2798 "a square matrix with number entries");
2805 res->data = (
void *)theMinPoly;
2806 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2808 delete[] polyCoeffs;
2815 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2823 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2832 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2841 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2850 if (strcmp(sys_cmd,
"GF") == 0)
2867 if (strcmp(sys_cmd,
"svd") == 0)
2878 if (strcmp(sys_cmd,
"redNF_ring")==0)
2881 poly
f = (poly)
h->Data();
2883 ideal
G = (ideal)
h->Data();
2891 if (strcmp(sys_cmd,
"hilbroune") == 0)
2903 if (strcmp(sys_cmd,
"f5")==0)
2912 ideal
G = (ideal)
h->Data();
2916 opt = (int) (
long)
h->Data();
2924 plus = (int) (
long)
h->Data();
2932 termination = (int) (
long)
h->Data();
2938 res->data=(ideal)
F5main(
G,r,opt,plus,termination);
2945 if (strcmp(sys_cmd,
"NF_ring")==0)
2948 poly
f = (poly)
h->Data();
2950 ideal
G = (ideal)
h->Data();
2956 if (strcmp(sys_cmd,
"spoly")==0)
2958 poly
f =
pCopy((poly)
h->Data());
2960 poly
g =
pCopy((poly)
h->Data());
2967 if (strcmp(sys_cmd,
"testGB")==0)
2969 ideal I = (ideal)
h->Data();
2971 ideal GI = (ideal)
h->Data();
2973 res->data = (
void *)(
long)
testGB(I, GI);
2980 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
2986 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
2994 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3001 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3007 #ifdef HAVE_RATGRING
3008 if (strcmp(sys_cmd,
"intratNF") == 0)
3023 I=(ideal)
h->CopyD();
3031 is=(int)((
long)(
h->Data()));
3039 for(
k=0;
k < id;
k++)
3043 PrintS(
"starting redRat\n");
3061 if (strcmp(sys_cmd,
"ratNF") == 0)
3080 is=(int)((
long)(
h->Data()));
3095 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3113 is=(int)((
long)(
h->Data()));
3129 if (strcmp(sys_cmd,
"ratVar") == 0)
3146 return (start==0)||(end==0)||(start>end);
3150 if (strcmp(sys_cmd,
"unifastmult")==0)
3152 poly
f = (poly)
h->Data();
3154 poly
g=(poly)
h->Data();
3160 if (strcmp(sys_cmd,
"multifastmult")==0)
3162 poly
f = (poly)
h->Data();
3164 poly
g=(poly)
h->Data();
3170 if (strcmp(sys_cmd,
"mults")==0)
3177 if (strcmp(sys_cmd,
"fastpower")==0)
3180 poly
f = (poly)
h->Data();
3182 int n=(int)((
long)
h->Data());
3188 if (strcmp(sys_cmd,
"normalpower")==0)
3190 poly
f = (poly)
h->Data();
3192 int n=(int)((
long)
h->Data());
3198 if (strcmp(sys_cmd,
"MCpower")==0)
3201 poly
f = (poly)
h->Data();
3203 int n=(int)((
long)
h->Data());
3209 if (strcmp(sys_cmd,
"bit_subst")==0)
3212 poly outer = (poly)
h->Data();
3214 poly inner=(poly)
h->Data();
3221 if (strcmp(sys_cmd,
"gcd") == 0)
3241 int d=(int)(
long)
h->next->Data();
3242 char *
s=(
char *)
h->Data();
3260 if (strcmp(sys_cmd,
"subring") == 0)
3274 if (strcmp(sys_cmd,
"HNF") == 0)
3296 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3304 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3309 char *
s=(
char *)
h->next->Data();
3321 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3325 char* filename = (
char*)
h->Data();
3326 FILE*
f = fopen(filename,
"r");
3329 WerrorS(
"invalid file name (in paths use '/')");
3332 mpz_t
m; mpz_init(
m);
3333 mpz_inp_str(
m,
f, 10);
3337 res->data = (
void*)n;
3342 WerrorS(
"expected valid file name as a string");
3354 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3358 (
h->next->next ==
NULL))
3363 int validEntries = 0;
3364 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3366 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3367 sizeof(
int) * jvec->
rows()) == 0)
3369 if (validEntries == 0)
3373 r->
resize(validEntries + 1);
3374 (*r)[validEntries] =
k + 1;
3380 res->data = (
void*)r;
3385 WerrorS(
"expected two non-empty intvecs as arguments");
3396 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3400 (
h->next->next ==
NULL))
3404 int ir = ivec->
rows();
int jr = jvec->
rows();
3405 int r = jr;
if (ir < jr) r = ir;
3406 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3407 sizeof(
int) * r) != 0))
3410 res->data = (
void*)(
long)r;
3415 WerrorS(
"expected two non-empty intvecs as arguments");
3421 if(strcmp(sys_cmd,
"henselfactors")==0)
3426 (
h->next->next->next !=
NULL) &&
3427 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3428 (
h->next->next->next->next !=
NULL) &&
3429 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3430 (
h->next->next->next->next->next !=
NULL) &&
3431 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3432 (
h->next->next->next->next->next->next ==
NULL))
3434 int xIndex = (int)(
long)
h->Data();
3435 int yIndex = (int)(
long)
h->next->Data();
3436 poly hh = (poly)
h->next->next->Data();
3437 poly f0 = (poly)
h->next->next->next->Data();
3438 poly g0 = (poly)
h->next->next->next->next->Data();
3439 int d = (int)(
long)
h->next->next->next->next->next->Data();
3447 res->data = (
char *)L;
3452 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3459 if (strcmp(sys_cmd,
"astep") == 0)
3464 I=(ideal)
h->CopyD();
3477 if (strcmp(sys_cmd,
"PrintMat") == 0)
3487 a=(int)((
long)(
h->Data()));
3492 b=(int)((
long)(
h->Data()));
3507 metric=(int)((
long)(
h->Data()));
3518 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3531 if(strcmp(sys_cmd,
"NCGetType")==0)
3537 res->data=(
void *)(-1L);
3544 if(strcmp(sys_cmd,
"ForceSCA")==0)
3551 b = (int)((
long)(
h->Data()));
3557 e = (int)((
long)(
h->Data()));
3568 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3580 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3592 if(strcmp(sys_cmd,
"test64")==0)
3608 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3614 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3625 if(strcmp(sys_cmd,
"LU")==0)
3635 res->data=(
char*)bb;
3640 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3647 if(strcmp(sys_cmd,
"sort")==0)
3657 if(strcmp(sys_cmd,
"uniq")==0)
3667 if(strcmp(sys_cmd,
"GF")==0)
3672 int p=(int)(
long)
h->Data();
3673 int n=(int)(
long)
h->next->Data();
3674 char *
v=(
char*)
h->next->next->CopyD();
3690 if(strcmp(sys_cmd,
"power1")==0)
3693 poly
f=(poly)
h->CopyD();
3695 res->data=(
void *)
g;
3699 if(strcmp(sys_cmd,
"power2")==0)
3702 poly
f=(poly)
h->Data();
3704 for(
int i=0;
i<2000;
i++)
3706 res->data=(
void *)
g;
3709 if(strcmp(sys_cmd,
"power3")==0)
3712 poly
f=(poly)
h->Data();
3723 poly p1536=
pMult(p1024,p512);
3724 poly p1792=
pMult(p1536,p256);
3725 poly p1920=
pMult(p1792,p128);
3726 poly p1984=
pMult(p1920,p64);
3727 poly p2000=
pMult(p1984,p16);
3728 res->data=(
void *)p2000;
3748 #ifdef HAVE_CCLUSTER
3749 if(strcmp(sys_cmd,
"ccluster")==0)
3759 int pol_with_complex_coeffs=0;
3761 pol_with_complex_coeffs=1;
3767 fmpq_poly_t fre, fim;
3769 if (pol_with_complex_coeffs==1)
3774 fmpq_t center_re,center_im,boxsize,eps;
3780 int n=fmpq_poly_length(fre);
3781 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3782 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3784 for(
int i=0;
i<n;
i++)
3785 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3790 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3791 strategy = strategy+(nb_threads<<6);
3794 if (pol_with_complex_coeffs==0)
3795 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3797 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3801 for(
int i=0;
i<nn;
i++)
3815 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3819 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3820 fmpq_poly_clear(fre);
3821 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3833 if(strcmp(sys_cmd,
"evaluate")==0)
3835 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3838 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3841 poly
p=(poly)
h->Data();
3848 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3851 pt[
i]=(number)
h->Data();
3859 if(strcmp(sys_cmd,
"DivRem")==0)
3864 poly
p=(poly)
h->CopyD();
3865 poly q=(poly)
h->next->CopyD();
3874 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
#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)
char * singclap_neworder(ideal I, const ring r)
matrix singntl_HNF(matrix m, const ring s)
matrix singntl_LLL(matrix m, const ring s)
ideal singclap_absFactorize(poly f, ideal &mipos, intvec **exps, int &numFactors, 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)
const char * feSetOptValue(feOptIndex opt, char *optarg)
feOptIndex feGetOptIndex(const char *name)
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)
bigintmat * singflint_LLL(bigintmat *A, bigintmat *T)
void convFlintNSingN(mpz_t z, fmpz_t f)
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!)
int setNCExtensions(int iMask)
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
static nc_type & ncRingType(nc_struct *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
unsigned long * computeMinimalPolynomial(unsigned long **matrix, unsigned n, unsigned long p)
void mult(unsigned long *result, unsigned long *a, unsigned long *b, unsigned long p, int dega, int degb)
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)
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 int rBlocks(ring r)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static BOOLEAN rField_is_long_C(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 * MivMatrixOrderlp(int nV)
intvec * MivMatrixOrder(intvec *iv)
intvec * MkInterRedNextWeight(intvec *iva, intvec *ivb, ideal G)
intvec * Mfpertvector(ideal G, intvec *ivtarget)
ideal TranMImprovwalk(ideal G, intvec *curr_weight, intvec *target_tmp, int nP)
ideal Mfwalk(ideal G, intvec *ivstart, intvec *ivtarget, int reduction, int printout)
intvec * MPertVectors(ideal G, intvec *ivtarget, int pdeg)
intvec * MPertVectorslp(ideal G, intvec *ivtarget, int pdeg)
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 * MivWeightOrderdp(intvec *ivstart)
intvec * MivMatrixOrderdp(int nV)
intvec * MivWeightOrderlp(intvec *ivstart)
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 * MPertNextWeight(intvec *iva, ideal G, int deg)
intvec * MwalkNextWeight(intvec *curr_weight, intvec *target_weight, ideal G)
intvec * Mivperttarget(ideal G, int ndeg)
int * iv2array(intvec *iv, const ring R)
#define omPrintUsedTrackAddrs(F, max)