20#include "ccluster/ccluster.h"
25#ifdef TIME_WITH_SYS_TIME
27# ifdef HAVE_SYS_TIME_H
31# ifdef HAVE_SYS_TIME_H
37#ifdef HAVE_SYS_TIMES_H
141#ifndef MAKE_DISTRIBUTION
142#define HAVE_EXTENDED_SYSTEM 1
167#ifndef MAKE_DISTRIBUTION
179 int n = singularMatrix->
rows();
181 unsigned long **longMatrix = 0;
182 longMatrix =
new unsigned long *[n] ;
183 for (
int i = 0 ;
i < n;
i++)
184 longMatrix[
i] =
new unsigned long [n];
186 for (
int r = 0; r < n; r++)
187 for (
int c = 0; c < n; c++)
189 poly
p=
MATELEM(singularMatrix, r + 1, c + 1);
199 longMatrix[r][c] = (
unsigned long)entryAsInt;
214 if ((
int)polyCoeffs[
i] != 0)
235 const char *sys_cmd=(
char *)(args->
Data());
240 if (strcmp(sys_cmd,
"nblocks") == 0)
262 r = (ring)
h->Data();
269 if(strcmp(sys_cmd,
"version")==0)
277 if(strcmp(sys_cmd,
"alarm")==0)
284 struct itimerval t,o;
285 memset(&t,0,
sizeof(t));
286 t.it_value.tv_sec =(unsigned)((
unsigned long)
h->Data());
287 setitimer(ITIMER_VIRTUAL,&t,&o);
295 if(strcmp(sys_cmd,
"content")==0)
300 poly
p=(poly)
h->CopyD();
314 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;
332 if(strcmp(sys_cmd,
"executable")==0)
347 if(strcmp(sys_cmd,
"flatten")==0)
360 if(strcmp(sys_cmd,
"unflatten")==0)
373 if(strcmp(sys_cmd,
"neworder")==0)
387 if(strcmp(sys_cmd,
"nc_hilb") == 0)
395 i = (ideal)
h->Data();
398 WerrorS(
"nc_Hilb:ideal expected");
403 lV = (int)(
long)
h->Data();
406 WerrorS(
"nc_Hilb:int expected");
412 if((
int)(
long)
h->Data() == 1)
414 else if((
int)(
long)
h->Data() == 2)
419 trunDegHs = (int)(
long)
h->Data();
424 WerrorS(
"nc_Hilb:int 1,2, total degree for the truncation, and a string for printing the details are expected");
433 if(strcmp(sys_cmd,
"verifyGB")==0)
437 WerrorS(
"system(\"verifyGB\",<ideal>,..) expects a commutative ring");
443 Werror(
"expected system(\"verifyGB\",<ideal/module>), found <%s>",
Tok2Cmdname(
h->Typ()));
446 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()));
492 if (errno==ECHILD)
res->data=
NULL;
497 if(strcmp(sys_cmd,
"reduce_bound")==0)
507 p = (poly)
h->CopyD();
511 pid = (ideal)
h->CopyD();
516 ideal q = (ideal)
h->next->CopyD();
517 int bound = (int)(
long)
h->next->next->Data();
526 if(strcmp(sys_cmd,
"uname")==0)
534 if(strcmp(sys_cmd,
"with")==0)
544 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else
545 char *
s=(
char *)
h->Data();
558 #ifdef TEST_MAC_ORDER
563 #ifdef HAVE_DYNAMIC_LOADING
586 if (strcmp(sys_cmd,
"browsers")==0)
596 if (strcmp(sys_cmd,
"pid")==0)
599 res->data=(
void *)(
long) getpid();
604 if (strcmp(sys_cmd,
"getenv")==0)
609 const char *r=
getenv((
char *)
h->Data());
622 if (strcmp(sys_cmd,
"setenv")==0)
629 setenv((
char *)
h->Data(), (
char *)
h->next->Data(), 1);
639 WerrorS(
"setenv not supported on this platform");
645 if (strcmp(sys_cmd,
"Singular") == 0)
654 if (strcmp(sys_cmd,
"SingularLib") == 0)
663 if (strcmp(sys_cmd,
"SingularBin") == 0)
667 if (r ==
NULL) r=
"/usr/local";
670 #define SINGULAR_PROCS_DIR "/libexec/singular/MOD"
673 if ((strstr(r,
".libs/..")==
NULL)
674 &&(strstr(r,
"Singular/..")==
NULL))
678 if (access(
s,X_OK)==0)
685 strcpy(
s,LIBEXEC_DIR);
686 if (access(
s,X_OK)==0)
709 res->data = (
void*)
s;
714 if (strstr(sys_cmd,
"--") == sys_cmd)
716 if (strcmp(sys_cmd,
"--") == 0)
724 Werror(
"Unknown option %s", sys_cmd);
725 WerrorS(
"Use 'system(\"--\");' for listing of available options");
740 const char *r=(
const char*)
feOptSpec[opt].value;
751 const char* errormsg=
NULL;
756 Werror(
"Need string argument to set value of option %s", sys_cmd);
760 if (errormsg !=
NULL)
761 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)
h->Data()), errormsg);
766 if (errormsg !=
NULL)
767 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*)
h->Data(), errormsg);
771 WerrorS(
"Need string or int argument to set option value");
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)
1031 res->data=(
void*)(
long)
p;
1038 if (strcmp(sys_cmd,
"reservedLink")==0)
1047 if (strcmp(sys_cmd,
"install")==0)
1053 (
int)(
long)
h->next->next->next->Data(),
1060 if (strcmp(sys_cmd,
"newstruct")==0)
1066 char *n=(
char*)
h->Data();
1073 newstruct_desc desc=(newstruct_desc)bb->data;
1077 else Werror(
"'%s' is not a newstruct",n);
1079 else Werror(
"'%s' is not a blackbox object",n);
1085 if (strcmp(sys_cmd,
"blackbox")==0)
1092 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1093 if (strcmp(sys_cmd,
"absFact") == 0)
1110 l->m[0].data=(
void *)
f;
1112 l->m[1].data=(
void *)
v;
1114 l->m[2].data=(
void*) mipos;
1116 l->m[3].data=(
void*) (
long) n;
1117 res->data=(
void *)
l;
1126 if (strcmp(sys_cmd,
"LLL") == 0)
1149 #if __FLINT_RELEASE >= 20500
1150 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1171 WerrorS(
"matrix,int or bigint,int expected");
1176 if(((
int)((
long)(
h->next->Data())) != 0) && (
int)((
long)(
h->next->Data()) != 1))
1178 WerrorS(
"int is different from 0, 1");
1182 if((
long)(
h->next->Data()) == 0)
1197 if((
long)(
h->next->Data()) == 1)
1203 for(
int i = 1;
i<=
m->rows();
i++)
1221 for(
int i = 1;
i<=
m->rows();
i++)
1243 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1244 if(strcmp(sys_cmd,
"rref")==0)
1251 #if defined(HAVE_FLINT)
1253 #elif defined(HAVE_NTL)
1261 ideal
M=(ideal)
h->Data();
1262 #if defined(HAVE_FLINT)
1264 #elif defined(HAVE_NTL)
1272 WerrorS(
"expected system(\"rref\",<matrix>/<smatrix>)");
1280 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1285 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1290 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1295 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1300 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1305 if(strcmp(sys_cmd,
"pcvDim")==0)
1310 if(strcmp(sys_cmd,
"pcvBasis")==0)
1317 #ifdef HAVE_EIGENVAL
1318 if(strcmp(sys_cmd,
"hessenberg")==0)
1325 #ifdef HAVE_EIGENVAL
1326 if(strcmp(sys_cmd,
"eigenvals")==0)
1333 #ifdef HAVE_EIGENVAL
1334 if(strcmp(sys_cmd,
"rowelim")==0)
1341 #ifdef HAVE_EIGENVAL
1342 if(strcmp(sys_cmd,
"rowcolswap")==0)
1350 if(strcmp(sys_cmd,
"gmsnf")==0)
1357 if(strcmp(sys_cmd,
"contributors") == 0)
1361 "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");
1366 #ifdef HAVE_SPECTRUM
1367 if(strcmp(sys_cmd,
"spectrum") == 0)
1381 if(((
long)
h->next->Data())==1L)
1387 if(strcmp(sys_cmd,
"semic") == 0)
1393 if (
h->next->next==
NULL)
1395 else if (
h->next->next->Typ()==
INT_CMD)
1402 if(strcmp(sys_cmd,
"spadd") == 0)
1413 if(strcmp(sys_cmd,
"spmul") == 0)
1425 #define HAVE_SHEAFCOH_TRICKS 1
1427 #ifdef HAVE_SHEAFCOH_TRICKS
1428 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1434 int m = (int)( (
long)
h->Data() );
1435 ideal
M = (ideal)
h->next->Data();
1446 if (strcmp(sys_cmd,
"twostd") == 0)
1451 I=(ideal)
h->CopyD();
1465 if (strcmp(sys_cmd,
"bracket") == 0)
1470 poly
p=(poly)
h->CopyD();
1472 poly q=(poly)
h->Data();
1483 if (strcmp(sys_cmd,
"env")==0)
1487 ring r = (ring)
h->Data();
1494 WerrorS(
"`system(\"env\",<ring>)` expected");
1502 if (strcmp(sys_cmd,
"opp")==0)
1506 ring r=(ring)
h->Data();
1513 WerrorS(
"`system(\"opp\",<ring>)` expected");
1521 if (strcmp(sys_cmd,
"oppose")==0)
1524 && (
h->next!=
NULL))
1526 ring Rop = (ring)
h->Data();
1539 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1546 if(strcmp(sys_cmd,
"sat")==0)
1548 ideal I= (ideal)
h->Data();
1549 ideal J=(ideal)
h->next->Data();
1562 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1569 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1573 res->data = (
void*) walkNextWeight(((
intvec*)
h->Data()),
1575 (ideal)
h->next->next->Data());
1576 if (
res->data ==
NULL ||
res->data == (
void*) 1L)
1592 if (strcmp(sys_cmd,
"walkInitials") == 0)
1596 WerrorS(
"system(\"walkInitials\", ideal) expected");
1599 res->data = (
void*) walkInitials((ideal)
h->Data());
1609 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1615 res->data = (
intvec*) walkAddIntVec(arg1, arg2);
1624 #ifdef MwaklNextWeight
1625 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1632 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1638 ideal arg3 = (ideal)
h->next->next->Data();
1649 if(strcmp(sys_cmd,
"Mivdp") == 0)
1653 WerrorS(
"system(\"Mivdp\", int) expected");
1656 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1658 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1662 int arg1 = (int) ((
long)(
h->Data()));
1672 if(strcmp(sys_cmd,
"Mivlp") == 0)
1676 WerrorS(
"system(\"Mivlp\", int) expected");
1679 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1681 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1685 int arg1 = (int) ((
long)(
h->Data()));
1696 if(strcmp(sys_cmd,
"MpDiv") == 0)
1700 poly arg1 = (poly)
h->Data();
1701 poly arg2 = (poly)
h->next->Data();
1702 poly
result = MpDiv(arg1, arg2);
1713 if(strcmp(sys_cmd,
"MpMult") == 0)
1717 poly arg1 = (poly)
h->Data();
1718 poly arg2 = (poly)
h->next->Data();
1719 poly
result = MpMult(arg1, arg2);
1729 if (strcmp(sys_cmd,
"MivSame") == 0)
1750 res->data = (
void*)(
long)
MivSame(arg1, arg2);
1757 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1780 res->data = (
void*)(
long)
M3ivSame(arg1, arg2, arg3);
1787 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1793 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1797 ideal
id = (ideal)
h->Data();
1809 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1813 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1826 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1830 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1833 int arg1 = (int) ((
long)(
h->Data()));
1843 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1847 ideal arg1 = (ideal)
h->Data();
1849 int arg3 = (int) ((
long)(
h->next->next->Data()));
1859 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1863 ideal arg1 = (ideal)
h->Data();
1865 int arg3 = (int) ((
long)(
h->next->next->Data()));
1875 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1879 ideal arg1 = (ideal)
h->Data();
1890 if(strcmp(sys_cmd,
"MivUnit") == 0)
1894 int arg1 = (int) ((
long)(
h->Data()));
1904 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1918 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1922 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1936 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1940 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1943 int arg1 = (int) ((
long)(
h->Data()));
1953 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1960 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1966 ideal arg3 = (ideal)
h->next->next->Data();
1976 #ifdef MPertNextWeight
1977 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1983 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1988 ideal arg2 = (ideal)
h->next->Data();
1989 int arg3 = (int)
h->next->next->Data();
2000 #ifdef Mivperttarget
2001 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
2005 ideal arg1 = (ideal)
h->Data();
2006 int arg2 = (int)
h->next->Data();
2017 if (strcmp(sys_cmd,
"Mwalk") == 0)
2024 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
2028 ideal arg1 = (ideal)
h->CopyD();
2031 ring arg4 = (ring)
h->next->next->next->Data();
2032 int arg5 = (int) (
long)
h->next->next->next->next->Data();
2033 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2034 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2044 if (strcmp(sys_cmd,
"Mwalk") == 0)
2053 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
2057 ideal arg1 = (ideal)
h->Data();
2060 ring arg4 = (ring)
h->next->next->next->Data();
2061 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
2068 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2072 if(((
intvec*)
h->next->next->next->Data())->length() !=
currRing->N &&
2075 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2078 ideal arg1 = (ideal)
h->Data();
2079 int arg2 = (int) (
long)
h->next->Data();
2080 int arg3 = (int) (
long)
h->next->next->Data();
2083 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2084 int arg7 = (int) (
long)
h->next->next->next->next->next->next->Data();
2085 int arg8 = (int) (
long)
h->next->next->next->next->next->next->next->Data();
2086 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2096 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2105 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2109 ideal arg1 = (ideal)
h->Data();
2112 int arg4 = (int)(
long)
h->next->next->next->Data();
2113 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2114 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2115 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2116 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2125 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2129 if (((
intvec*)
h->next->next->next->Data())->length() !=
currRing->N &&
2132 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2136 ideal arg1 = (ideal)
h->Data();
2137 int arg2 = (int) ((
long)(
h->next->Data()));
2138 int arg3 = (int) ((
long)(
h->next->next->Data()));
2151 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2158 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2162 ideal arg1 = (ideal)
h->Data();
2165 int arg4 = (int)
h->next->next->next->Data();
2166 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2176 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2183 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2187 ideal arg1 = (ideal)
h->Data();
2190 int arg4 = (int)(
long)
h->next->next->next->Data();
2191 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2192 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2201 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2218 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2223 ideal arg1 = (ideal)
h->Data();
2226 int arg4 = (int)(
long)
h->next->next->next->Data();
2227 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2228 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2229 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2236 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2245 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2249 ideal arg1 = (ideal)
h->Data();
2252 int arg4 = (int)(
long)
h->next->next->next->Data();
2253 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2254 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2255 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2256 int arg8 = (int)(
long)
h->next->next->next->next->next->next->next->Data();
2257 int arg9 = (int)(
long)
h->next->next->next->next->next->next->next->next->Data();
2258 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2268 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2275 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2279 ideal arg1 = (ideal)
h->Data();
2292 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2299 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2303 ideal arg1 = (ideal)
h->Data();
2315 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2322 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2326 ideal arg1 = (ideal)
h->Data();
2329 int arg4 = (int) ((
long)(
h->next->next->next->Data()));
2340 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2345 h->next->next->next ==
NULL ||
h->next->next->next->Typ() !=
INT_CMD ||
2346 h->next->next->next ==
NULL ||
h->next->next->next->next->Typ() !=
INT_CMD ||
2347 h->next->next->next ==
NULL ||
h->next->next->next->next->next->Typ() !=
INT_CMD)
2349 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2355 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2358 ideal arg1 = (ideal)
h->Data();
2361 int arg4 = (int)(
long)
h->next->next->next->Data();
2362 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2363 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2364 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2374 #ifndef MAKE_DISTRIBUTION
2385#ifdef HAVE_EXTENDED_SYSTEM
2389# include "hc_newton.h"
2396 char *sys_cmd=(
char *)(
h->Data());
2399 if (strcmp(sys_cmd,
"syz") == 0)
2403 const char *
s=(
const char *)
h->Data();
2404 if (strcmp(
s,
"posInT_EcartFDegpLength")==0)
2406 else if (strcmp(
s,
"posInT_FDegpLength")==0)
2408 else if (strcmp(
s,
"posInT_pLength")==0)
2410 else if (strcmp(
s,
"posInT0")==0)
2412 else if (strcmp(
s,
"posInT1")==0)
2414 else if (strcmp(
s,
"posInT2")==0)
2416 else if (strcmp(
s,
"posInT11")==0)
2418 else if (strcmp(
s,
"posInT110")==0)
2420 else if (strcmp(
s,
"posInT13")==0)
2422 else if (strcmp(
s,
"posInT15")==0)
2424 else if (strcmp(
s,
"posInT17")==0)
2426 else if (strcmp(
s,
"posInT17_c")==0)
2428 else if (strcmp(
s,
"posInT19")==0)
2430 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2442 if(strcmp(sys_cmd,
"locNF")==0)
2447 poly
f=(poly)
h->Data();
2449 ideal
m=(ideal)
h->Data();
2452 int n=(int)((
long)
h->Data());
2517 if(strcmp(sys_cmd,
"p")==0)
2522 WarnS(
"Sorry: not available for release build!");
2528 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2532 int k = (int)(
long)
h->Data();
2540 if(strcmp(sys_cmd,
"r")==0)
2545 WarnS(
"Sorry: not available for release build!");
2557 if(strcmp(sys_cmd,
"changeRing")==0)
2561 for (
int i = 1;
i <= varN;
i++)
2564 snprintf(
h,10,
"x%d",
i);
2569 res->data = (
void*)0L;
2574 if(strcmp(sys_cmd,
"mtrack")==0)
2585 char *fn=(
char*)
h->Data();
2586 fd = fopen(fn,
"w");
2588 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2592 max = (int)(
long)
h->Data();
2601 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2608 if(strcmp(sys_cmd,
"backtrace")==0)
2616#if !defined(OM_NDEBUG)
2618 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2622 PrintS(
"\n[om_Info]: \n");
2624#define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2625 OM_PRINT(MaxBytesSystem);
2626 OM_PRINT(CurrentBytesSystem);
2627 OM_PRINT(MaxBytesSbrk);
2628 OM_PRINT(CurrentBytesSbrk);
2629 OM_PRINT(MaxBytesMmap);
2630 OM_PRINT(CurrentBytesMmap);
2631 OM_PRINT(UsedBytes);
2632 OM_PRINT(AvailBytes);
2633 OM_PRINT(UsedBytesMalloc);
2634 OM_PRINT(AvailBytesMalloc);
2635 OM_PRINT(MaxBytesFromMalloc);
2636 OM_PRINT(CurrentBytesFromMalloc);
2637 OM_PRINT(MaxBytesFromValloc);
2638 OM_PRINT(CurrentBytesFromValloc);
2639 OM_PRINT(UsedBytesFromValloc);
2640 OM_PRINT(AvailBytesFromValloc);
2642 OM_PRINT(UsedPages);
2643 OM_PRINT(AvailPages);
2644 OM_PRINT(MaxRegionsAlloc);
2645 OM_PRINT(CurrentRegionsAlloc);
2650 PrintS(
"\n[om_Opts]: \n");
2651#define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2652 OM_PRINT(
"d", MinTrack);
2653 OM_PRINT(
"d", MinCheck);
2654 OM_PRINT(
"d", MaxTrack);
2655 OM_PRINT(
"d", MaxCheck);
2656 OM_PRINT(
"d", Keep);
2657 OM_PRINT(
"d", HowToReportErrors);
2658 OM_PRINT(
"d", MarkAsStatic);
2659 OM_PRINT(
"u", PagesPerRegion);
2660 OM_PRINT(
"p", OutOfMemoryFunc);
2661 OM_PRINT(
"p", MemoryLowFunc);
2662 OM_PRINT(
"p", ErrorHook);
2667 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2670 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2684 if(strcmp(sys_cmd,
"red")==0)
2699 if(strcmp(sys_cmd,
"fastcomb")==0)
2707 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2712 (ideal)
h->Data(),(poly)
h->next->Data());
2720 if(strcmp(sys_cmd,
"comb")==0)
2728 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2733 (ideal)
h->Data(),(poly)
h->next->Data());
2742 if(strcmp(sys_cmd,
"listall")==0)
2744 void listall(
int showproc);
2746 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2754 if(strcmp(sys_cmd,
"proclist")==0)
2756 void piShowProcList();
2764 if(strcmp(sys_cmd,
"newton")==0)
2768 || (
h->next->next->Typ()!=
INT_CMD))
2770 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2773 poly
p=(poly)(
h->Data());
2792 (
int) (
h->next->Data()),
2793 (
int) (
h->next->next->Data())
2806 L->
m[1].
data=(
void *)(
long)r.achse;
2808 L->
m[2].
data=(
void *)(
long)r.deg;
2812 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2814 int anz = r.anz_punkte;
2817 for (
i=0;
i<anz*
dim;
i++)
2827 (*w)[
i] = r.deg_tab[
i];
2830 while (r.deg_tab[
i-1] != -2);
2841 res->data=(
void *)L;
2864 if (strcmp(sys_cmd,
"minpoly") == 0)
2868 Werror(
"expected exactly one argument: %s",
2869 "a square matrix with number entries");
2879 WerrorS(
"expected exactly one argument: "
2880 "a square matrix with number entries");
2887 res->data = (
void *)theMinPoly;
2888 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2890 delete[] polyCoeffs;
2897 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2905 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2914 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2918 WerrorS(
"shell execution is disallowed in restricted mode");
2928 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2937 if (strcmp(sys_cmd,
"GF") == 0)
2954 if (strcmp(sys_cmd,
"svd") == 0)
2964 if (strcmp(sys_cmd,
"redNF_ring")==0)
2967 poly
f = (poly)
h->Data();
2969 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);
3029 if (strcmp(sys_cmd,
"NF_ring")==0)
3032 poly
f = (poly)
h->Data();
3034 ideal
G = (ideal)
h->Data();
3040 if (strcmp(sys_cmd,
"spoly")==0)
3042 poly
f =
pCopy((poly)
h->Data());
3044 poly
g =
pCopy((poly)
h->Data());
3051 if (strcmp(sys_cmd,
"testGB")==0)
3053 ideal I = (ideal)
h->Data();
3055 ideal GI = (ideal)
h->Data();
3057 res->data = (
void *)(
long)
testGB(I, GI);
3063 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3069 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3077 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3084 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3090 #ifdef HAVE_RATGRING
3091 if (strcmp(sys_cmd,
"intratNF") == 0)
3106 I=(ideal)
h->CopyD();
3114 is=(int)((
long)(
h->Data()));
3122 for(
k=0;
k < id;
k++)
3126 PrintS(
"starting redRat\n");
3144 if (strcmp(sys_cmd,
"ratNF") == 0)
3163 is=(int)((
long)(
h->Data()));
3178 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3196 is=(int)((
long)(
h->Data()));
3212 if (strcmp(sys_cmd,
"ratVar") == 0)
3229 return (start==0)||(end==0)||(start>end);
3233 if (strcmp(sys_cmd,
"unifastmult")==0)
3235 poly
f = (poly)
h->Data();
3237 poly
g=(poly)
h->Data();
3243 if (strcmp(sys_cmd,
"multifastmult")==0)
3245 poly
f = (poly)
h->Data();
3247 poly
g=(poly)
h->Data();
3253 if (strcmp(sys_cmd,
"mults")==0)
3260 if (strcmp(sys_cmd,
"fastpower")==0)
3263 poly
f = (poly)
h->Data();
3265 int n=(int)((
long)
h->Data());
3271 if (strcmp(sys_cmd,
"normalpower")==0)
3273 poly
f = (poly)
h->Data();
3275 int n=(int)((
long)
h->Data());
3281 if (strcmp(sys_cmd,
"MCpower")==0)
3284 poly
f = (poly)
h->Data();
3286 int n=(int)((
long)
h->Data());
3292 if (strcmp(sys_cmd,
"bit_subst")==0)
3295 poly outer = (poly)
h->Data();
3297 poly inner=(poly)
h->Data();
3304 if (strcmp(sys_cmd,
"gcd") == 0)
3324 int d=(int)(
long)
h->next->Data();
3325 char *
s=(
char *)
h->Data();
3343 if (strcmp(sys_cmd,
"subring") == 0)
3357 if (strcmp(sys_cmd,
"HNF") == 0)
3379 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3387 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3392 char *
s=(
char *)
h->next->Data();
3404 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3408 char* filename = (
char*)
h->Data();
3409 FILE*
f = fopen(filename,
"r");
3412 WerrorS(
"invalid file name (in paths use '/')");
3415 mpz_t
m; mpz_init(
m);
3416 mpz_inp_str(
m,
f, 10);
3420 res->data = (
void*)n;
3425 WerrorS(
"expected valid file name as a string");
3437 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3441 (
h->next->next ==
NULL))
3446 int validEntries = 0;
3447 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3449 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3450 sizeof(
int) * jvec->
rows()) == 0)
3452 if (validEntries == 0)
3456 r->
resize(validEntries + 1);
3457 (*r)[validEntries] =
k + 1;
3463 res->data = (
void*)r;
3468 WerrorS(
"expected two non-empty intvecs as arguments");
3479 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3483 (
h->next->next ==
NULL))
3487 int ir = ivec->
rows();
int jr = jvec->
rows();
3488 int r = jr;
if (ir < jr) r = ir;
3489 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3490 sizeof(
int) * r) != 0))
3493 res->data = (
void*)(
long)r;
3498 WerrorS(
"expected two non-empty intvecs as arguments");
3504 if(strcmp(sys_cmd,
"henselfactors")==0)
3509 (
h->next->next->next !=
NULL) &&
3510 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3511 (
h->next->next->next->next !=
NULL) &&
3512 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3513 (
h->next->next->next->next->next !=
NULL) &&
3514 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3515 (
h->next->next->next->next->next->next ==
NULL))
3517 int xIndex = (int)(
long)
h->Data();
3518 int yIndex = (int)(
long)
h->next->Data();
3519 poly hh = (poly)
h->next->next->Data();
3520 poly f0 = (poly)
h->next->next->next->Data();
3521 poly g0 = (poly)
h->next->next->next->next->Data();
3522 int d = (int)(
long)
h->next->next->next->next->next->Data();
3530 res->data = (
char *)L;
3535 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3542 if (strcmp(sys_cmd,
"astep") == 0)
3547 I=(ideal)
h->CopyD();
3560 if (strcmp(sys_cmd,
"PrintMat") == 0)
3570 a=(int)((
long)(
h->Data()));
3575 b=(int)((
long)(
h->Data()));
3590 metric=(int)((
long)(
h->Data()));
3601 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3614 if(strcmp(sys_cmd,
"NCGetType")==0)
3620 res->data=(
void *)(-1L);
3627 if(strcmp(sys_cmd,
"ForceSCA")==0)
3634 b = (int)((
long)(
h->Data()));
3640 e = (int)((
long)(
h->Data()));
3651 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3663 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3675 if(strcmp(sys_cmd,
"test64")==0)
3691 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3697 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3708 if(strcmp(sys_cmd,
"LU")==0)
3718 res->data=(
char*)bb;
3723 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3730 if(strcmp(sys_cmd,
"sort")==0)
3740 if(strcmp(sys_cmd,
"uniq")==0)
3750 if(strcmp(sys_cmd,
"GF")==0)
3755 int p=(int)(
long)
h->Data();
3756 int n=(int)(
long)
h->next->Data();
3757 char *
v=(
char*)
h->next->next->CopyD();
3773 if(strcmp(sys_cmd,
"power1")==0)
3776 poly
f=(poly)
h->CopyD();
3778 res->data=(
void *)
g;
3782 if(strcmp(sys_cmd,
"power2")==0)
3785 poly
f=(poly)
h->Data();
3787 for(
int i=0;
i<2000;
i++)
3789 res->data=(
void *)
g;
3792 if(strcmp(sys_cmd,
"power3")==0)
3795 poly
f=(poly)
h->Data();
3806 poly p1536=
pMult(p1024,p512);
3807 poly p1792=
pMult(p1536,p256);
3808 poly p1920=
pMult(p1792,p128);
3809 poly p1984=
pMult(p1920,p64);
3810 poly p2000=
pMult(p1984,p16);
3811 res->data=(
void *)p2000;
3831#if defined(HAVE_CCLUSTER) && defined(HAVE_FLINT)
3832 if(strcmp(sys_cmd,
"ccluster")==0)
3842 int pol_with_complex_coeffs=0;
3844 pol_with_complex_coeffs=1;
3850 fmpq_poly_t fre, fim;
3852 if (pol_with_complex_coeffs==1)
3857 fmpq_t center_re,center_im,boxsize,eps;
3863 int n=fmpq_poly_length(fre);
3864 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3865 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3867 for(
int i=0;
i<n;
i++)
3868 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3873 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3874 strategy = strategy+(nb_threads<<6);
3877 if (pol_with_complex_coeffs==0)
3878 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3880 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3884 for(
int i=0;
i<nn;
i++)
3898 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3902 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3903 fmpq_poly_clear(fre);
3904 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3916 if(strcmp(sys_cmd,
"evaluate")==0)
3918 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3921 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3924 poly
p=(poly)
h->Data();
3931 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3934 pt[
i]=(number)
h->Data();
3942 if(strcmp(sys_cmd,
"DivRem")==0)
3947 poly
p=(poly)
h->CopyD();
3948 poly q=(poly)
h->next->CopyD();
3957 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
3963 if(strcmp(sys_cmd,
"DivRemIdU")==0)
3970 ideal
p=(ideal)
h->CopyD();
3971 ideal q=(ideal)
h->next->CopyD();
3974 ideal rest=
idDivRem(
p,q,factors,&unit,0);
3989 WerrorS(
"expected system(\"DivRemId\",<ideal>,<ideal>)");
3994 if(strcmp(sys_cmd,
"DivRemId")==0)
4001 ideal
p=(ideal)
h->CopyD();
4002 ideal q=(ideal)
h->next->CopyD();
4016 WerrorS(
"expected system(\"DivRemId\",<ideal>,<ideal>)");
4022 if(strcmp(sys_cmd,
"CoeffTerm")==0)
4035 poly
p=(poly)
h->Data();
4036 poly q=(poly)
h->next->Data();
4044 ideal
p=(ideal)
h->Data();
4045 poly q=(poly)
h->next->Data();
4052 poly
p=(poly)
h->Data();
4053 poly q=(poly)
h->next->Data();
4060 ideal
p=(ideal)
h->Data();
4061 poly q=(poly)
h->next->Data();
4068 poly
p=(poly)
h->Data();
4069 ideal q=(ideal)
h->next->Data();
4076 poly
p=(poly)
h->Data();
4077 ideal q=(ideal)
h->next->Data();
4084 WerrorS(
"expected system(\"CoeffTerm\",<poly>/<vector>,<poly>/<vector>)" "\n or <ideal>/<module>,<poly>/<vector>");
4090 if(strcmp(sys_cmd,
"sat1")==0)
4092 ideal I= (ideal)
h->Data();
4093 ideal J=(ideal)
h->next->Data();
4100 if(strcmp(sys_cmd,
"minres_with_map")==0)
4108 res->next->data=(
void*)trans;
4115 if(strcmp(sys_cmd,
"sat_with_exp")==0)
4117 ideal I= (ideal)
h->Data();
4118 ideal J=(ideal)
h->next->Data();
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)
INLINE_THIS void Init(int l=0)
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ....
@ n_transExt
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
static FORCE_INLINE number n_convFactoryNSingN(const CanonicalForm n, const coeffs r)
void n_Print(number &a, const coeffs r)
print a number (BEWARE of string buffers!) mostly for debugging
static FORCE_INLINE CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
static FORCE_INLINE BOOLEAN nCoeff_is_Ring(const coeffs r)
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
static FORCE_INLINE number n_InitMPZ(mpz_t n, const coeffs r)
conversion of a GMP integer to number
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Creation data needed for finite fields.
void countedref_reference_load()
Initialize blackbox types 'reference' and 'shared', or both.
void countedref_shared_load()
poly uni_subst_bits(poly outer_uni, poly inner_multi, ring r)
matrix evRowElim(matrix M, int i, int j, int k)
matrix evHessenberg(matrix M)
matrix evSwap(matrix M, int i, int j)
lists evEigenvals(matrix M)
ideal F5main(ideal id, ring r, int opt, int plus, int termination)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
CFList int bool & irred
[in,out] Is A irreducible?
int probIrredTest(const CanonicalForm &F, double error)
given some error probIrredTest detects irreducibility or reducibility of F with confidence level 1-er...
‘factory.h’ is the user interface to Factory.
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
const char * Tok2Cmdname(int tok)
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_Sat_principal(ideal I, ideal J, const ring origR)
ideal idSaturate_intern(ideal I, ideal J, int &k, BOOLEAN isIdeal, BOOLEAN isSB)
ideal id_TensorModuleMult(const int m, const ideal M, const ring rRing)
STATIC_VAR coordinates * points
#define IMATELEM(M, I, J)
BOOLEAN jjSORTLIST(leftv, leftv arg)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
EXTERN_VAR omBin sleftv_bin
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)
ideal idDivRem(ideal A, const ideal quot, ideal &factor, ideal *unit, int lazyReduce)
poly fglmLinearCombination(ideal source, poly monset)
poly fglmNewLinearCombination(ideal source, poly monset)
poly kNFBound(ideal F, ideal Q, poly p, int bound, int syzComp, int lazyReduce)
VAR int(* test_PosInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
VAR int(* test_PosInT)(const TSet T, const int tl, LObject &h)
int posInT17(const TSet set, const int length, LObject &p)
int posInT11(const TSet set, const int length, LObject &p)
int posInT1(const TSet set, const int length, LObject &p)
int posInT0(const TSet, const int length, LObject &)
int posInT2(const TSet set, const int length, LObject &p)
int posInT_pLength(const TSet set, const int length, LObject &p)
int posInT13(const TSet set, const int length, LObject &p)
int posInT17_c(const TSet set, const int length, LObject &p)
int posInT_EcartFDegpLength(const TSet set, const int length, LObject &p)
int posInT15(const TSet set, const int length, LObject &p)
int posInT110(const TSet set, const int length, LObject &p)
int posInT19(const TSet set, const int length, LObject &p)
int posInT_FDegpLength(const TSet set, const int length, LObject &p)
BOOLEAN kVerify2(ideal F, ideal Q)
BOOLEAN kVerify1(ideal F, ideal Q)
static bool rIsSCA(const ring r)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
static nc_type & ncRingType(nc_struct *p)
int setNCExtensions(int iMask)
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
matrix nc_PrintMat(int a, int b, ring r, int metric)
returns matrix with the info on noncomm multiplication
bool sca_Force(ring rGR, int b, int e)
bool luSolveViaLDUDecomp(const matrix pMat, const matrix lMat, const matrix dMat, const matrix uMat, const poly l, const poly u, const poly lTimesU, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LDU-decomposit...
void henselFactors(const int xIndex, const int yIndex, const poly h, const poly f0, const poly g0, const int d, poly &f, poly &g)
Computes a factorization of a polynomial h(x, y) in K[[x]][y] up to a certain degree in x,...
void lduDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &dMat, matrix &uMat, poly &l, poly &u, poly &lTimesU)
LU-decomposition of a given (m x n)-matrix with performing only those divisions that yield zero remai...
matrix mp_Transp(matrix a, const ring R)
ideal sm_UnFlatten(ideal a, int col, const ring R)
matrix mp_InitI(int r, int c, int v, const ring R)
make it a v * unit matrix
matrix mpNew(int r, int c)
create a r x c zero-matrix
ideal sm_Flatten(ideal a, const ring R)
#define MATELEM(mat, i, j)
1-based access to matrix
void mult(unsigned long *result, unsigned long *a, unsigned long *b, unsigned long p, int dega, int degb)
unsigned long * computeMinimalPolynomial(unsigned long **matrix, unsigned n, unsigned long p)
This file provides miscellaneous functionality.
EXTERN_VAR size_t gmp_output_digits
bool complexNearZero(gmp_complex *c, int digits)
The main handler for Singular numbers which are suitable for Singular polynomials.
BOOLEAN ncInitSpecialPairMultiplication(ring r)
ideal Approx_Step(ideal L)
Ann: ???
ideal twostd(ideal I)
Compute two-sided GB:
void newstructShow(newstruct_desc d)
BOOLEAN newstruct_set_proc(const char *bbname, const char *func, int args, procinfov pr)
#define omFreeSize(addr, size)
const char * omError2String(omError_t error)
const char * omError2Serror(omError_t error)
omError_t om_InternalErrorStatus
char * omFindExec(const char *name, char *exec)
#define omPrintCurrentBackTrace(fd)
poly p_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
poly p_CoeffTermMo(poly v, ideal m, const ring r)
find coeffs of a vector of a matrix(module) of given monomials
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)
matrix id_Module2Matrix(ideal mod, const ring R)
int ssiReservePort(int clients)
BOOLEAN assumeStdFlag(leftv h)
void syMinimize_with_map(syStrategy res, ideal &trans)
syStrategy syCopy(syStrategy syzstr)
int M3ivSame(intvec *temp, intvec *u, intvec *v)
intvec * MivWeightOrderdp(intvec *ivstart)
ideal TranMImprovwalk(ideal G, intvec *curr_weight, intvec *target_tmp, int nP)
intvec * MivMatrixOrderdp(int nV)
ideal Mfwalk(ideal G, intvec *ivstart, intvec *ivtarget, int reduction, int printout)
intvec * MPertVectors(ideal G, intvec *ivtarget, int pdeg)
intvec * MivWeightOrderlp(intvec *ivstart)
ideal Mprwalk(ideal Go, intvec *orig_M, intvec *target_M, int weight_rad, int op_deg, int tp_deg, int nP, int reduction, int printout)
intvec * MivMatrixOrder(intvec *iv)
ideal MAltwalk2(ideal Go, intvec *curr_weight, intvec *target_weight)
ideal MAltwalk1(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight)
ideal Mrwalk(ideal Go, intvec *orig_M, intvec *target_M, int weight_rad, int pert_deg, int reduction, int printout)
ideal Mfrwalk(ideal G, intvec *ivstart, intvec *ivtarget, int weight_rad, int reduction, int printout)
ideal Mwalk(ideal Go, intvec *orig_M, intvec *target_M, ring baseRing, int reduction, int printout)
ideal Mpwalk(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight, int nP, int reduction, int printout)
int MivSame(intvec *u, intvec *v)
ideal MwalkInitialForm(ideal G, intvec *ivw)
intvec * MivMatrixOrderlp(int nV)
intvec * Mfpertvector(ideal G, intvec *ivtarget)
intvec * MPertVectorslp(ideal G, intvec *ivtarget, int pdeg)
intvec * MkInterRedNextWeight(intvec *iva, intvec *ivb, ideal G)
intvec * MwalkNextWeight(intvec *curr_weight, intvec *target_weight, ideal G)
intvec * Mivperttarget(ideal G, int ndeg)
intvec * MPertNextWeight(intvec *iva, ideal G, int deg)
int * iv2array(intvec *iv, const ring R)
#define omMarkAsStaticAddr(A)
#define omPrintUsedTrackAddrs(F, max)