19#include "ccluster/ccluster.h"
22#include "factory/factory.h"
24#ifdef TIME_WITH_SYS_TIME
26# ifdef HAVE_SYS_TIME_H
30# ifdef HAVE_SYS_TIME_H
36#ifdef HAVE_SYS_TIMES_H
142#ifndef MAKE_DISTRIBUTION
143#define HAVE_EXTENDED_SYSTEM 1
168#ifndef MAKE_DISTRIBUTION
180 int n = singularMatrix->
rows();
182 unsigned long **longMatrix = 0;
183 longMatrix =
new unsigned long *[n] ;
184 for (
int i = 0 ;
i < n;
i++)
185 longMatrix[
i] =
new unsigned long [n];
187 for (
int r = 0; r < n; r++)
188 for (
int c = 0; c < n; c++)
190 poly
p=
MATELEM(singularMatrix, r + 1, c + 1);
200 longMatrix[r][c] = (
unsigned long)entryAsInt;
215 if ((
int)polyCoeffs[
i] != 0)
236 const char *sys_cmd=(
char *)(args->
Data());
241 if (strcmp(sys_cmd,
"nblocks") == 0)
263 r = (ring)
h->Data();
270 if(strcmp(sys_cmd,
"version")==0)
278 if(strcmp(sys_cmd,
"alarm")==0)
285 struct itimerval t,o;
286 memset(&t,0,
sizeof(t));
287 t.it_value.tv_sec =(unsigned)((
unsigned long)
h->Data());
288 setitimer(ITIMER_VIRTUAL,&t,&o);
296 if(strcmp(sys_cmd,
"content")==0)
301 poly
p=(poly)
h->CopyD();
315 if(strcmp(sys_cmd,
"cpu")==0)
319 #ifdef _SC_NPROCESSORS_ONLN
320 cpu=sysconf(_SC_NPROCESSORS_ONLN);
321 #elif defined(_SC_NPROCESSORS_CONF)
322 cpu=sysconf(_SC_NPROCESSORS_CONF);
324 res->data=(
void *)cpu;
333 if(strcmp(sys_cmd,
"executable")==0)
348 if(strcmp(sys_cmd,
"flatten")==0)
361 if(strcmp(sys_cmd,
"unflatten")==0)
374 if(strcmp(sys_cmd,
"neworder")==0)
388 if(strcmp(sys_cmd,
"nc_hilb") == 0)
396 i = (ideal)
h->Data();
399 WerrorS(
"nc_Hilb:ideal expected");
404 lV = (int)(
long)
h->Data();
407 WerrorS(
"nc_Hilb:int expected");
413 if((
int)(
long)
h->Data() == 1)
415 else if((
int)(
long)
h->Data() == 2)
420 trunDegHs = (int)(
long)
h->Data();
425 WerrorS(
"nc_Hilb:int 1,2, total degree for the truncation, and a string for printing the details are expected");
434 if(strcmp(sys_cmd,
"verifyGB")==0)
438 WerrorS(
"system(\"verifyGB\",<ideal>,..) expects a commutative ring");
444 Werror(
"expected system(\"verifyGB\",<ideal/module>), found <%s>",
Tok2Cmdname(
h->Typ()));
447 ideal F=(ideal)
h->Data();
460 if(strcmp(sys_cmd,
"rcolon") == 0)
465 ideal
i = (ideal)
h->Data();
467 poly
w=(poly)
h->Data();
469 int lV = (int)(
long)
h->Data();
480 if(strcmp(sys_cmd,
"sh")==0)
484 WerrorS(
"shell execution is disallowed in restricted mode");
488 if (
h==
NULL)
res->data = (
void *)(
long) system(
"sh");
490 res->data = (
void*)(
long) system((
char*)(
h->Data()));
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;
754 WerrorS(
"Need string or int argument to set option value");
757 const char* errormsg;
762 Werror(
"Need string argument to set value of option %s", sys_cmd);
766 if (errormsg !=
NULL)
767 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)
h->Data()), errormsg);
772 if (errormsg !=
NULL)
773 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*)
h->Data(), errormsg);
780 if (strcmp(sys_cmd,
"HC")==0)
788 if(strcmp(sys_cmd,
"random")==0)
811 if (strcmp(sys_cmd,
"denom_list")==0)
820 if(strcmp(sys_cmd,
"complexNearZero")==0)
827 WerrorS(
"unsupported ground field!");
834 (int)((
long)(
h->next->Data())));
845 if(strcmp(sys_cmd,
"getPrecDigits")==0)
850 WerrorS(
"unsupported ground field!");
861 if(strcmp(sys_cmd,
"lduDecomp")==0)
868 poly
l; poly u; poly prodLU;
869 lduDecomp(aMat, pMat, lMat, dMat, uMat,
l, u, prodLU);
880 res->data = (
char *)L;
890 if(strcmp(sys_cmd,
"lduSolve")==0)
924 poly
l = (poly)
h->next->next->next->next->Data();
925 poly u = (poly)
h->next->next->next->next->next->Data();
926 poly lTimesU = (poly)
h->next->next->next->next->next->next->Data();
927 matrix bVec = (
matrix)
h->next->next->next->next->next->next->next->Data();
931 Werror(
"first matrix (%d x %d) is not quadratic",
937 Werror(
"second matrix (%d x %d) is not quadratic",
943 Werror(
"third matrix (%d x %d) is not quadratic",
949 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
956 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
961 bVec, xVec, homogSolSpace);
984 if (strcmp(sys_cmd,
"shared") == 0)
986 #ifndef SI_COUNTEDREF_AUTOLOAD
993 else if (strcmp(sys_cmd,
"reference") == 0)
995 #ifndef SI_COUNTEDREF_AUTOLOAD
1004#ifdef HAVE_SIMPLEIPC
1005 if (strcmp(sys_cmd,
"semaphore")==0)
1010 if ((
h->next->next!=
NULL)&& (
h->next->next->Typ()==
INT_CMD))
1011 v=(int)(
long)
h->next->next->Data();
1018 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
1025 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");
1547 if(strcmp(sys_cmd,
"sat")==0)
1549 ideal I= (ideal)
h->Data();
1550 ideal J=(ideal)
h->next->Data();
1563 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1570 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1574 res->data = (
void*) walkNextWeight(((
intvec*)
h->Data()),
1576 (ideal)
h->next->next->Data());
1577 if (
res->data ==
NULL ||
res->data == (
void*) 1L)
1593 if (strcmp(sys_cmd,
"walkInitials") == 0)
1597 WerrorS(
"system(\"walkInitials\", ideal) expected");
1600 res->data = (
void*) walkInitials((ideal)
h->Data());
1610 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1616 res->data = (
intvec*) walkAddIntVec(arg1, arg2);
1625 #ifdef MwaklNextWeight
1626 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1633 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1639 ideal arg3 = (ideal)
h->next->next->Data();
1650 if(strcmp(sys_cmd,
"Mivdp") == 0)
1654 WerrorS(
"system(\"Mivdp\", int) expected");
1657 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1659 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1663 int arg1 = (int) ((
long)(
h->Data()));
1673 if(strcmp(sys_cmd,
"Mivlp") == 0)
1677 WerrorS(
"system(\"Mivlp\", int) expected");
1680 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1682 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1686 int arg1 = (int) ((
long)(
h->Data()));
1697 if(strcmp(sys_cmd,
"MpDiv") == 0)
1701 poly arg1 = (poly)
h->Data();
1702 poly arg2 = (poly)
h->next->Data();
1703 poly
result = MpDiv(arg1, arg2);
1714 if(strcmp(sys_cmd,
"MpMult") == 0)
1718 poly arg1 = (poly)
h->Data();
1719 poly arg2 = (poly)
h->next->Data();
1720 poly
result = MpMult(arg1, arg2);
1730 if (strcmp(sys_cmd,
"MivSame") == 0)
1751 res->data = (
void*)(
long)
MivSame(arg1, arg2);
1758 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1781 res->data = (
void*)(
long)
M3ivSame(arg1, arg2, arg3);
1788 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1794 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1798 ideal
id = (ideal)
h->Data();
1810 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1814 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1827 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1831 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1834 int arg1 = (int) ((
long)(
h->Data()));
1844 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1848 ideal arg1 = (ideal)
h->Data();
1850 int arg3 = (int) ((
long)(
h->next->next->Data()));
1860 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1864 ideal arg1 = (ideal)
h->Data();
1866 int arg3 = (int) ((
long)(
h->next->next->Data()));
1876 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1880 ideal arg1 = (ideal)
h->Data();
1891 if(strcmp(sys_cmd,
"MivUnit") == 0)
1895 int arg1 = (int) ((
long)(
h->Data()));
1905 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1919 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1923 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1937 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1941 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1944 int arg1 = (int) ((
long)(
h->Data()));
1954 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1961 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1967 ideal arg3 = (ideal)
h->next->next->Data();
1977 #ifdef MPertNextWeight
1978 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1984 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1989 ideal arg2 = (ideal)
h->next->Data();
1990 int arg3 = (int)
h->next->next->Data();
2001 #ifdef Mivperttarget
2002 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
2006 ideal arg1 = (ideal)
h->Data();
2007 int arg2 = (int)
h->next->Data();
2018 if (strcmp(sys_cmd,
"Mwalk") == 0)
2025 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
2029 ideal arg1 = (ideal)
h->CopyD();
2032 ring arg4 = (ring)
h->next->next->next->Data();
2033 int arg5 = (int) (
long)
h->next->next->next->next->Data();
2034 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2035 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2045 if (strcmp(sys_cmd,
"Mwalk") == 0)
2054 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
2058 ideal arg1 = (ideal)
h->Data();
2061 ring arg4 = (ring)
h->next->next->next->Data();
2062 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
2069 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2076 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2079 ideal arg1 = (ideal)
h->Data();
2080 int arg2 = (int) (
long)
h->next->Data();
2081 int arg3 = (int) (
long)
h->next->next->Data();
2084 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2085 int arg7 = (int) (
long)
h->next->next->next->next->next->next->Data();
2086 int arg8 = (int) (
long)
h->next->next->next->next->next->next->next->Data();
2087 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2097 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2106 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2110 ideal arg1 = (ideal)
h->Data();
2113 int arg4 = (int)(
long)
h->next->next->next->Data();
2114 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2115 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2116 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2117 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2126 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2133 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2137 ideal arg1 = (ideal)
h->Data();
2138 int arg2 = (int) ((
long)(
h->next->Data()));
2139 int arg3 = (int) ((
long)(
h->next->next->Data()));
2152 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2159 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2163 ideal arg1 = (ideal)
h->Data();
2166 int arg4 = (int)
h->next->next->next->Data();
2167 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2177 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2184 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2188 ideal arg1 = (ideal)
h->Data();
2191 int arg4 = (int)(
long)
h->next->next->next->Data();
2192 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2193 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2202 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2219 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2224 ideal arg1 = (ideal)
h->Data();
2227 int arg4 = (int)(
long)
h->next->next->next->Data();
2228 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2229 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2230 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2237 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2246 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2250 ideal arg1 = (ideal)
h->Data();
2253 int arg4 = (int)(
long)
h->next->next->next->Data();
2254 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2255 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2256 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2257 int arg8 = (int)(
long)
h->next->next->next->next->next->next->next->Data();
2258 int arg9 = (int)(
long)
h->next->next->next->next->next->next->next->next->Data();
2259 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2269 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2276 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2280 ideal arg1 = (ideal)
h->Data();
2293 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2300 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2304 ideal arg1 = (ideal)
h->Data();
2316 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2323 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2327 ideal arg1 = (ideal)
h->Data();
2330 int arg4 = (int) ((
long)(
h->next->next->next->Data()));
2341 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2346 h->next->next->next ==
NULL ||
h->next->next->next->Typ() !=
INT_CMD ||
2347 h->next->next->next ==
NULL ||
h->next->next->next->next->Typ() !=
INT_CMD ||
2348 h->next->next->next ==
NULL ||
h->next->next->next->next->next->Typ() !=
INT_CMD)
2350 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2356 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2359 ideal arg1 = (ideal)
h->Data();
2362 int arg4 = (int)(
long)
h->next->next->next->Data();
2363 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2364 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2365 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2375 #ifndef MAKE_DISTRIBUTION
2386#ifdef HAVE_EXTENDED_SYSTEM
2390# include "hc_newton.h"
2397 char *sys_cmd=(
char *)(
h->Data());
2400 if (strcmp(sys_cmd,
"syz") == 0)
2404 const char *
s=(
const char *)
h->Data();
2405 if (strcmp(
s,
"posInT_EcartFDegpLength")==0)
2407 else if (strcmp(
s,
"posInT_FDegpLength")==0)
2409 else if (strcmp(
s,
"posInT_pLength")==0)
2411 else if (strcmp(
s,
"posInT0")==0)
2413 else if (strcmp(
s,
"posInT1")==0)
2415 else if (strcmp(
s,
"posInT2")==0)
2417 else if (strcmp(
s,
"posInT11")==0)
2419 else if (strcmp(
s,
"posInT110")==0)
2421 else if (strcmp(
s,
"posInT13")==0)
2423 else if (strcmp(
s,
"posInT15")==0)
2425 else if (strcmp(
s,
"posInT17")==0)
2427 else if (strcmp(
s,
"posInT17_c")==0)
2429 else if (strcmp(
s,
"posInT19")==0)
2431 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2443 if(strcmp(sys_cmd,
"locNF")==0)
2448 poly
f=(poly)
h->Data();
2450 ideal
m=(ideal)
h->Data();
2453 int n=(int)((
long)
h->Data());
2518 if(strcmp(sys_cmd,
"p")==0)
2523 WarnS(
"Sorry: not available for release build!");
2529 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2533 int k = (int)(
long)
h->Data();
2541 if(strcmp(sys_cmd,
"r")==0)
2546 WarnS(
"Sorry: not available for release build!");
2558 if(strcmp(sys_cmd,
"changeRing")==0)
2562 for (
int i = 1;
i <= varN;
i++)
2565 snprintf(
h,10,
"x%d",
i);
2570 res->data = (
void*)0L;
2575 if(strcmp(sys_cmd,
"mtrack")==0)
2586 char *fn=(
char*)
h->Data();
2587 fd = fopen(fn,
"w");
2589 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2593 max = (int)(
long)
h->Data();
2602 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2609 if(strcmp(sys_cmd,
"backtrace")==0)
2617#if !defined(OM_NDEBUG)
2619 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2623 PrintS(
"\n[om_Info]: \n");
2625#define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2626 OM_PRINT(MaxBytesSystem);
2627 OM_PRINT(CurrentBytesSystem);
2628 OM_PRINT(MaxBytesSbrk);
2629 OM_PRINT(CurrentBytesSbrk);
2630 OM_PRINT(MaxBytesMmap);
2631 OM_PRINT(CurrentBytesMmap);
2632 OM_PRINT(UsedBytes);
2633 OM_PRINT(AvailBytes);
2634 OM_PRINT(UsedBytesMalloc);
2635 OM_PRINT(AvailBytesMalloc);
2636 OM_PRINT(MaxBytesFromMalloc);
2637 OM_PRINT(CurrentBytesFromMalloc);
2638 OM_PRINT(MaxBytesFromValloc);
2639 OM_PRINT(CurrentBytesFromValloc);
2640 OM_PRINT(UsedBytesFromValloc);
2641 OM_PRINT(AvailBytesFromValloc);
2643 OM_PRINT(UsedPages);
2644 OM_PRINT(AvailPages);
2645 OM_PRINT(MaxRegionsAlloc);
2646 OM_PRINT(CurrentRegionsAlloc);
2651 PrintS(
"\n[om_Opts]: \n");
2652#define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2653 OM_PRINT(
"d", MinTrack);
2654 OM_PRINT(
"d", MinCheck);
2655 OM_PRINT(
"d", MaxTrack);
2656 OM_PRINT(
"d", MaxCheck);
2657 OM_PRINT(
"d", Keep);
2658 OM_PRINT(
"d", HowToReportErrors);
2659 OM_PRINT(
"d", MarkAsStatic);
2660 OM_PRINT(
"u", PagesPerRegion);
2661 OM_PRINT(
"p", OutOfMemoryFunc);
2662 OM_PRINT(
"p", MemoryLowFunc);
2663 OM_PRINT(
"p", ErrorHook);
2668 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2671 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2685 if(strcmp(sys_cmd,
"red")==0)
2700 if(strcmp(sys_cmd,
"fastcomb")==0)
2708 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2713 (ideal)
h->Data(),(poly)
h->next->Data());
2721 if(strcmp(sys_cmd,
"comb")==0)
2729 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2734 (ideal)
h->Data(),(poly)
h->next->Data());
2743 if(strcmp(sys_cmd,
"listall")==0)
2745 void listall(
int showproc);
2747 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2755 if(strcmp(sys_cmd,
"proclist")==0)
2757 void piShowProcList();
2765 if(strcmp(sys_cmd,
"newton")==0)
2769 || (
h->next->next->Typ()!=
INT_CMD))
2771 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2774 poly
p=(poly)(
h->Data());
2793 (
int) (
h->next->Data()),
2794 (
int) (
h->next->next->Data())
2807 L->
m[1].
data=(
void *)(
long)r.achse;
2809 L->
m[2].
data=(
void *)(
long)r.deg;
2813 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2815 int anz = r.anz_punkte;
2818 for (
i=0;
i<anz*
dim;
i++)
2828 (*w)[
i] = r.deg_tab[
i];
2831 while (r.deg_tab[
i-1] != -2);
2842 res->data=(
void *)L;
2865 if (strcmp(sys_cmd,
"minpoly") == 0)
2869 Werror(
"expected exactly one argument: %s",
2870 "a square matrix with number entries");
2880 WerrorS(
"expected exactly one argument: "
2881 "a square matrix with number entries");
2888 res->data = (
void *)theMinPoly;
2889 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2891 delete[] polyCoeffs;
2898 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2906 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2915 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2919 WerrorS(
"shell execution is disallowed in restricted mode");
2929 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2938 if (strcmp(sys_cmd,
"GF") == 0)
2955 if (strcmp(sys_cmd,
"svd") == 0)
2966 if (strcmp(sys_cmd,
"redNF_ring")==0)
2969 poly
f = (poly)
h->Data();
2971 ideal
G = (ideal)
h->Data();
2979 if (strcmp(sys_cmd,
"hilbroune") == 0)
2991 if (strcmp(sys_cmd,
"f5")==0)
3000 ideal
G = (ideal)
h->Data();
3004 opt = (int) (
long)
h->Data();
3012 plus = (int) (
long)
h->Data();
3020 termination = (int) (
long)
h->Data();
3026 res->data=(ideal)
F5main(
G,r,opt,plus,termination);
3033 if (strcmp(sys_cmd,
"NF_ring")==0)
3036 poly
f = (poly)
h->Data();
3038 ideal
G = (ideal)
h->Data();
3044 if (strcmp(sys_cmd,
"spoly")==0)
3046 poly
f =
pCopy((poly)
h->Data());
3048 poly
g =
pCopy((poly)
h->Data());
3055 if (strcmp(sys_cmd,
"testGB")==0)
3057 ideal I = (ideal)
h->Data();
3059 ideal GI = (ideal)
h->Data();
3061 res->data = (
void *)(
long)
testGB(I, GI);
3068 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3074 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3082 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3089 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3095 #ifdef HAVE_RATGRING
3096 if (strcmp(sys_cmd,
"intratNF") == 0)
3111 I=(ideal)
h->CopyD();
3119 is=(int)((
long)(
h->Data()));
3127 for(
k=0;
k < id;
k++)
3131 PrintS(
"starting redRat\n");
3149 if (strcmp(sys_cmd,
"ratNF") == 0)
3168 is=(int)((
long)(
h->Data()));
3183 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3201 is=(int)((
long)(
h->Data()));
3217 if (strcmp(sys_cmd,
"ratVar") == 0)
3234 return (start==0)||(end==0)||(start>end);
3238 if (strcmp(sys_cmd,
"unifastmult")==0)
3240 poly
f = (poly)
h->Data();
3242 poly
g=(poly)
h->Data();
3248 if (strcmp(sys_cmd,
"multifastmult")==0)
3250 poly
f = (poly)
h->Data();
3252 poly
g=(poly)
h->Data();
3258 if (strcmp(sys_cmd,
"mults")==0)
3265 if (strcmp(sys_cmd,
"fastpower")==0)
3268 poly
f = (poly)
h->Data();
3270 int n=(int)((
long)
h->Data());
3276 if (strcmp(sys_cmd,
"normalpower")==0)
3278 poly
f = (poly)
h->Data();
3280 int n=(int)((
long)
h->Data());
3286 if (strcmp(sys_cmd,
"MCpower")==0)
3289 poly
f = (poly)
h->Data();
3291 int n=(int)((
long)
h->Data());
3297 if (strcmp(sys_cmd,
"bit_subst")==0)
3300 poly outer = (poly)
h->Data();
3302 poly inner=(poly)
h->Data();
3309 if (strcmp(sys_cmd,
"gcd") == 0)
3329 int d=(int)(
long)
h->next->Data();
3330 char *
s=(
char *)
h->Data();
3348 if (strcmp(sys_cmd,
"subring") == 0)
3362 if (strcmp(sys_cmd,
"HNF") == 0)
3384 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3392 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3397 char *
s=(
char *)
h->next->Data();
3409 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3413 char* filename = (
char*)
h->Data();
3414 FILE*
f = fopen(filename,
"r");
3417 WerrorS(
"invalid file name (in paths use '/')");
3420 mpz_t
m; mpz_init(
m);
3421 mpz_inp_str(
m,
f, 10);
3425 res->data = (
void*)n;
3430 WerrorS(
"expected valid file name as a string");
3442 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3446 (
h->next->next ==
NULL))
3451 int validEntries = 0;
3452 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3454 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3455 sizeof(
int) * jvec->
rows()) == 0)
3457 if (validEntries == 0)
3461 r->
resize(validEntries + 1);
3462 (*r)[validEntries] =
k + 1;
3468 res->data = (
void*)r;
3473 WerrorS(
"expected two non-empty intvecs as arguments");
3484 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3488 (
h->next->next ==
NULL))
3492 int ir = ivec->
rows();
int jr = jvec->
rows();
3493 int r = jr;
if (ir < jr) r = ir;
3494 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3495 sizeof(
int) * r) != 0))
3498 res->data = (
void*)(
long)r;
3503 WerrorS(
"expected two non-empty intvecs as arguments");
3509 if(strcmp(sys_cmd,
"henselfactors")==0)
3514 (
h->next->next->next !=
NULL) &&
3515 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3516 (
h->next->next->next->next !=
NULL) &&
3517 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3518 (
h->next->next->next->next->next !=
NULL) &&
3519 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3520 (
h->next->next->next->next->next->next ==
NULL))
3522 int xIndex = (int)(
long)
h->Data();
3523 int yIndex = (int)(
long)
h->next->Data();
3524 poly hh = (poly)
h->next->next->Data();
3525 poly f0 = (poly)
h->next->next->next->Data();
3526 poly g0 = (poly)
h->next->next->next->next->Data();
3527 int d = (int)(
long)
h->next->next->next->next->next->Data();
3535 res->data = (
char *)L;
3540 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3547 if (strcmp(sys_cmd,
"astep") == 0)
3552 I=(ideal)
h->CopyD();
3565 if (strcmp(sys_cmd,
"PrintMat") == 0)
3575 a=(int)((
long)(
h->Data()));
3580 b=(int)((
long)(
h->Data()));
3595 metric=(int)((
long)(
h->Data()));
3606 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3619 if(strcmp(sys_cmd,
"NCGetType")==0)
3625 res->data=(
void *)(-1L);
3632 if(strcmp(sys_cmd,
"ForceSCA")==0)
3639 b = (int)((
long)(
h->Data()));
3645 e = (int)((
long)(
h->Data()));
3656 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3668 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3680 if(strcmp(sys_cmd,
"test64")==0)
3696 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3702 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3713 if(strcmp(sys_cmd,
"LU")==0)
3723 res->data=(
char*)bb;
3728 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3735 if(strcmp(sys_cmd,
"sort")==0)
3745 if(strcmp(sys_cmd,
"uniq")==0)
3755 if(strcmp(sys_cmd,
"GF")==0)
3760 int p=(int)(
long)
h->Data();
3761 int n=(int)(
long)
h->next->Data();
3762 char *
v=(
char*)
h->next->next->CopyD();
3778 if(strcmp(sys_cmd,
"power1")==0)
3781 poly
f=(poly)
h->CopyD();
3783 res->data=(
void *)
g;
3787 if(strcmp(sys_cmd,
"power2")==0)
3790 poly
f=(poly)
h->Data();
3792 for(
int i=0;
i<2000;
i++)
3794 res->data=(
void *)
g;
3797 if(strcmp(sys_cmd,
"power3")==0)
3800 poly
f=(poly)
h->Data();
3811 poly p1536=
pMult(p1024,p512);
3812 poly p1792=
pMult(p1536,p256);
3813 poly p1920=
pMult(p1792,p128);
3814 poly p1984=
pMult(p1920,p64);
3815 poly p2000=
pMult(p1984,p16);
3816 res->data=(
void *)p2000;
3837 if(strcmp(sys_cmd,
"ccluster")==0)
3847 int pol_with_complex_coeffs=0;
3849 pol_with_complex_coeffs=1;
3855 fmpq_poly_t fre, fim;
3857 if (pol_with_complex_coeffs==1)
3862 fmpq_t center_re,center_im,boxsize,eps;
3868 int n=fmpq_poly_length(fre);
3869 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3870 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3872 for(
int i=0;
i<n;
i++)
3873 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3878 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3879 strategy = strategy+(nb_threads<<6);
3882 if (pol_with_complex_coeffs==0)
3883 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3885 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3889 for(
int i=0;
i<nn;
i++)
3903 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3907 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3908 fmpq_poly_clear(fre);
3909 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3921 if(strcmp(sys_cmd,
"evaluate")==0)
3923 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3926 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3929 poly
p=(poly)
h->Data();
3936 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3939 pt[
i]=(number)
h->Data();
3947 if(strcmp(sys_cmd,
"DivRem")==0)
3952 poly
p=(poly)
h->CopyD();
3953 poly q=(poly)
h->next->CopyD();
3962 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
3968 if(strcmp(sys_cmd,
"DivRemIdU")==0)
3975 ideal
p=(ideal)
h->CopyD();
3976 ideal q=(ideal)
h->next->CopyD();
3993 WerrorS(
"expected system(\"DivRemId\",<ideal>,<ideal>)");
3998 if(strcmp(sys_cmd,
"DivRemId")==0)
4005 ideal
p=(ideal)
h->CopyD();
4006 ideal q=(ideal)
h->next->CopyD();
4020 WerrorS(
"expected system(\"DivRemId\",<ideal>,<ideal>)");
4026 if(strcmp(sys_cmd,
"CoeffTerm")==0)
4039 poly
p=(poly)
h->Data();
4040 poly q=(poly)
h->next->Data();
4048 ideal
p=(ideal)
h->Data();
4049 poly q=(poly)
h->next->Data();
4056 poly
p=(poly)
h->Data();
4057 poly q=(poly)
h->next->Data();
4064 ideal
p=(ideal)
h->Data();
4065 poly q=(poly)
h->next->Data();
4072 poly
p=(poly)
h->Data();
4073 ideal q=(ideal)
h->next->Data();
4080 poly
p=(poly)
h->Data();
4081 ideal q=(ideal)
h->next->Data();
4088 WerrorS(
"expected system(\"CoeffTerm\",<poly>/<vector>,<poly>/<vector>)" "\n or <ideal>/<module>,<poly>/<vector>");
4094 if(strcmp(sys_cmd,
"sat1")==0)
4096 ideal I= (ideal)
h->Data();
4097 ideal J=(ideal)
h->next->Data();
4104 if(strcmp(sys_cmd,
"mres_with_map")==0)
4106 ideal I= (ideal)
h->Data();
4107 int l=(int)(
long)
h->next->Data();
4112 res->next->data=(
void*)trans;
4118 if(strcmp(sys_cmd,
"minres_with_map")==0)
4126 res->next->data=(
void*)trans;
4133 if(strcmp(sys_cmd,
"sat_with_exp")==0)
4135 ideal I= (ideal)
h->Data();
4136 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)
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
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(ideal I, ideal J, int &k, BOOLEAN isIdeal)
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)
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)
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)
matrix id_Module2Matrix(ideal mod, const ring R)
int ssiReservePort(int clients)
BOOLEAN assumeStdFlag(leftv h)
syStrategy syMres_with_map(ideal arg, int maxlength, intvec *w, ideal &trans)
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 omPrintUsedTrackAddrs(F, max)