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");
443 WerrorS(
"expected system(\"verifyGB\",<ideal>,..)");
446 ideal F=(ideal)
h->Data();
463 if(strcmp(sys_cmd,
"rcolon") == 0)
468 ideal
i = (ideal)
h->Data();
470 poly
w=(poly)
h->Data();
472 int lV = (int)(
long)
h->Data();
483 if(strcmp(sys_cmd,
"sh")==0)
487 WerrorS(
"shell execution is disallowed in restricted mode");
491 if (
h==
NULL)
res->data = (
void *)(
long) system(
"sh");
493 res->data = (
void*)(
long) system((
char*)(
h->Data()));
500 if(strcmp(sys_cmd,
"reduce_bound")==0)
510 p = (poly)
h->CopyD();
514 pid = (ideal)
h->CopyD();
519 ideal q = (ideal)
h->next->CopyD();
520 int bound = (int)(
long)
h->next->next->Data();
529 if(strcmp(sys_cmd,
"uname")==0)
537 if(strcmp(sys_cmd,
"with")==0)
547 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else
548 char *
s=(
char *)
h->Data();
561 #ifdef TEST_MAC_ORDER
566 #ifdef HAVE_DYNAMIC_LOADING
589 if (strcmp(sys_cmd,
"browsers")==0)
599 if (strcmp(sys_cmd,
"pid")==0)
602 res->data=(
void *)(
long) getpid();
607 if (strcmp(sys_cmd,
"getenv")==0)
612 const char *r=
getenv((
char *)
h->Data());
625 if (strcmp(sys_cmd,
"setenv")==0)
632 setenv((
char *)
h->Data(), (
char *)
h->next->Data(), 1);
642 WerrorS(
"setenv not supported on this platform");
648 if (strcmp(sys_cmd,
"Singular") == 0)
657 if (strcmp(sys_cmd,
"SingularLib") == 0)
666 if (strcmp(sys_cmd,
"SingularBin") == 0)
670 if (r ==
NULL) r=
"/usr/local";
673 #define SINGULAR_PROCS_DIR "/libexec/singular/MOD"
676 if ((strstr(r,
".libs/..")==
NULL)
677 &&(strstr(r,
"Singular/..")==
NULL))
681 if (access(
s,X_OK)==0)
688 strcpy(
s,LIBEXEC_DIR);
689 if (access(
s,X_OK)==0)
712 res->data = (
void*)
s;
717 if (strstr(sys_cmd,
"--") == sys_cmd)
719 if (strcmp(sys_cmd,
"--") == 0)
727 Werror(
"Unknown option %s", sys_cmd);
728 WerrorS(
"Use 'system(\"--\");' for listing of available options");
743 const char *r=(
const char*)
feOptSpec[opt].value;
757 WerrorS(
"Need string or int argument to set option value");
760 const char* errormsg;
765 Werror(
"Need string argument to set value of option %s", sys_cmd);
769 if (errormsg !=
NULL)
770 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)
h->Data()), errormsg);
775 if (errormsg !=
NULL)
776 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*)
h->Data(), errormsg);
783 if (strcmp(sys_cmd,
"HC")==0)
791 if(strcmp(sys_cmd,
"random")==0)
814 if (strcmp(sys_cmd,
"denom_list")==0)
823 if(strcmp(sys_cmd,
"complexNearZero")==0)
830 WerrorS(
"unsupported ground field!");
837 (int)((
long)(
h->next->Data())));
848 if(strcmp(sys_cmd,
"getPrecDigits")==0)
853 WerrorS(
"unsupported ground field!");
864 if(strcmp(sys_cmd,
"lduDecomp")==0)
871 poly
l; poly u; poly prodLU;
872 lduDecomp(aMat, pMat, lMat, dMat, uMat,
l, u, prodLU);
883 res->data = (
char *)L;
893 if(strcmp(sys_cmd,
"lduSolve")==0)
927 poly
l = (poly)
h->next->next->next->next->Data();
928 poly u = (poly)
h->next->next->next->next->next->Data();
929 poly lTimesU = (poly)
h->next->next->next->next->next->next->Data();
930 matrix bVec = (
matrix)
h->next->next->next->next->next->next->next->Data();
934 Werror(
"first matrix (%d x %d) is not quadratic",
940 Werror(
"second matrix (%d x %d) is not quadratic",
946 Werror(
"third matrix (%d x %d) is not quadratic",
952 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
959 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
964 bVec, xVec, homogSolSpace);
987 if (strcmp(sys_cmd,
"shared") == 0)
989 #ifndef SI_COUNTEDREF_AUTOLOAD
996 else if (strcmp(sys_cmd,
"reference") == 0)
998 #ifndef SI_COUNTEDREF_AUTOLOAD
1007#ifdef HAVE_SIMPLEIPC
1008 if (strcmp(sys_cmd,
"semaphore")==0)
1013 if ((
h->next->next!=
NULL)&& (
h->next->next->Typ()==
INT_CMD))
1014 v=(int)(
long)
h->next->next->Data();
1021 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
1028 if (strcmp(sys_cmd,
"reserve")==0)
1035 res->data=(
void*)(
long)
p;
1042 if (strcmp(sys_cmd,
"reservedLink")==0)
1051 if (strcmp(sys_cmd,
"install")==0)
1057 (
int)(
long)
h->next->next->next->Data(),
1064 if (strcmp(sys_cmd,
"newstruct")==0)
1070 char *n=(
char*)
h->Data();
1077 newstruct_desc desc=(newstruct_desc)bb->data;
1081 else Werror(
"'%s' is not a newstruct",n);
1083 else Werror(
"'%s' is not a blackbox object",n);
1089 if (strcmp(sys_cmd,
"blackbox")==0)
1096 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1097 if (strcmp(sys_cmd,
"absFact") == 0)
1114 l->m[0].data=(
void *)
f;
1116 l->m[1].data=(
void *)
v;
1118 l->m[2].data=(
void*) mipos;
1120 l->m[3].data=(
void*) (
long) n;
1121 res->data=(
void *)
l;
1130 if (strcmp(sys_cmd,
"LLL") == 0)
1153 #if __FLINT_RELEASE >= 20500
1154 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1175 WerrorS(
"matrix,int or bigint,int expected");
1180 if(((
int)((
long)(
h->next->Data())) != 0) && (
int)((
long)(
h->next->Data()) != 1))
1182 WerrorS(
"int is different from 0, 1");
1186 if((
long)(
h->next->Data()) == 0)
1201 if((
long)(
h->next->Data()) == 1)
1207 for(
int i = 1;
i<=
m->rows();
i++)
1225 for(
int i = 1;
i<=
m->rows();
i++)
1247 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1248 if(strcmp(sys_cmd,
"rref")==0)
1255 #if defined(HAVE_FLINT)
1257 #elif defined(HAVE_NTL)
1265 ideal
M=(ideal)
h->Data();
1266 #if defined(HAVE_FLINT)
1268 #elif defined(HAVE_NTL)
1276 WerrorS(
"expected system(\"rref\",<matrix>/<smatrix>)");
1284 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1289 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1294 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1299 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1304 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1309 if(strcmp(sys_cmd,
"pcvDim")==0)
1314 if(strcmp(sys_cmd,
"pcvBasis")==0)
1321 #ifdef HAVE_EIGENVAL
1322 if(strcmp(sys_cmd,
"hessenberg")==0)
1329 #ifdef HAVE_EIGENVAL
1330 if(strcmp(sys_cmd,
"eigenvals")==0)
1337 #ifdef HAVE_EIGENVAL
1338 if(strcmp(sys_cmd,
"rowelim")==0)
1345 #ifdef HAVE_EIGENVAL
1346 if(strcmp(sys_cmd,
"rowcolswap")==0)
1354 if(strcmp(sys_cmd,
"gmsnf")==0)
1361 if(strcmp(sys_cmd,
"contributors") == 0)
1365 "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");
1370 #ifdef HAVE_SPECTRUM
1371 if(strcmp(sys_cmd,
"spectrum") == 0)
1385 if(((
long)
h->next->Data())==1L)
1391 if(strcmp(sys_cmd,
"semic") == 0)
1397 if (
h->next->next==
NULL)
1399 else if (
h->next->next->Typ()==
INT_CMD)
1406 if(strcmp(sys_cmd,
"spadd") == 0)
1417 if(strcmp(sys_cmd,
"spmul") == 0)
1429 #define HAVE_SHEAFCOH_TRICKS 1
1431 #ifdef HAVE_SHEAFCOH_TRICKS
1432 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1438 int m = (int)( (
long)
h->Data() );
1439 ideal
M = (ideal)
h->next->Data();
1450 if (strcmp(sys_cmd,
"twostd") == 0)
1455 I=(ideal)
h->CopyD();
1469 if (strcmp(sys_cmd,
"bracket") == 0)
1474 poly
p=(poly)
h->CopyD();
1476 poly q=(poly)
h->Data();
1487 if (strcmp(sys_cmd,
"env")==0)
1491 ring r = (ring)
h->Data();
1498 WerrorS(
"`system(\"env\",<ring>)` expected");
1506 if (strcmp(sys_cmd,
"opp")==0)
1510 ring r=(ring)
h->Data();
1517 WerrorS(
"`system(\"opp\",<ring>)` expected");
1525 if (strcmp(sys_cmd,
"oppose")==0)
1528 && (
h->next!=
NULL))
1530 ring Rop = (ring)
h->Data();
1543 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1553 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1560 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1564 res->data = (
void*) walkNextWeight(((
intvec*)
h->Data()),
1566 (ideal)
h->next->next->Data());
1567 if (
res->data ==
NULL ||
res->data == (
void*) 1L)
1583 if (strcmp(sys_cmd,
"walkInitials") == 0)
1587 WerrorS(
"system(\"walkInitials\", ideal) expected");
1590 res->data = (
void*) walkInitials((ideal)
h->Data());
1600 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1606 res->data = (
intvec*) walkAddIntVec(arg1, arg2);
1615 #ifdef MwaklNextWeight
1616 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1623 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1629 ideal arg3 = (ideal)
h->next->next->Data();
1640 if(strcmp(sys_cmd,
"Mivdp") == 0)
1644 WerrorS(
"system(\"Mivdp\", int) expected");
1647 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1649 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1653 int arg1 = (int) ((
long)(
h->Data()));
1663 if(strcmp(sys_cmd,
"Mivlp") == 0)
1667 WerrorS(
"system(\"Mivlp\", int) expected");
1670 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1672 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1676 int arg1 = (int) ((
long)(
h->Data()));
1687 if(strcmp(sys_cmd,
"MpDiv") == 0)
1691 poly arg1 = (poly)
h->Data();
1692 poly arg2 = (poly)
h->next->Data();
1693 poly
result = MpDiv(arg1, arg2);
1704 if(strcmp(sys_cmd,
"MpMult") == 0)
1708 poly arg1 = (poly)
h->Data();
1709 poly arg2 = (poly)
h->next->Data();
1710 poly
result = MpMult(arg1, arg2);
1720 if (strcmp(sys_cmd,
"MivSame") == 0)
1741 res->data = (
void*)(
long)
MivSame(arg1, arg2);
1748 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1771 res->data = (
void*)(
long)
M3ivSame(arg1, arg2, arg3);
1778 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1784 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1788 ideal
id = (ideal)
h->Data();
1800 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1804 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1817 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1821 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1824 int arg1 = (int) ((
long)(
h->Data()));
1834 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1838 ideal arg1 = (ideal)
h->Data();
1840 int arg3 = (int) ((
long)(
h->next->next->Data()));
1850 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1854 ideal arg1 = (ideal)
h->Data();
1856 int arg3 = (int) ((
long)(
h->next->next->Data()));
1866 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1870 ideal arg1 = (ideal)
h->Data();
1881 if(strcmp(sys_cmd,
"MivUnit") == 0)
1885 int arg1 = (int) ((
long)(
h->Data()));
1895 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1909 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1913 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1927 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1931 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1934 int arg1 = (int) ((
long)(
h->Data()));
1944 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1951 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1957 ideal arg3 = (ideal)
h->next->next->Data();
1967 #ifdef MPertNextWeight
1968 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1974 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1979 ideal arg2 = (ideal)
h->next->Data();
1980 int arg3 = (int)
h->next->next->Data();
1991 #ifdef Mivperttarget
1992 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1996 ideal arg1 = (ideal)
h->Data();
1997 int arg2 = (int)
h->next->Data();
2008 if (strcmp(sys_cmd,
"Mwalk") == 0)
2015 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
2019 ideal arg1 = (ideal)
h->CopyD();
2022 ring arg4 = (ring)
h->next->next->next->Data();
2023 int arg5 = (int) (
long)
h->next->next->next->next->Data();
2024 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2025 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2035 if (strcmp(sys_cmd,
"Mwalk") == 0)
2044 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
2048 ideal arg1 = (ideal)
h->Data();
2051 ring arg4 = (ring)
h->next->next->next->Data();
2052 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
2059 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2066 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2069 ideal arg1 = (ideal)
h->Data();
2070 int arg2 = (int) (
long)
h->next->Data();
2071 int arg3 = (int) (
long)
h->next->next->Data();
2074 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2075 int arg7 = (int) (
long)
h->next->next->next->next->next->next->Data();
2076 int arg8 = (int) (
long)
h->next->next->next->next->next->next->next->Data();
2077 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2087 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2096 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2100 ideal arg1 = (ideal)
h->Data();
2103 int arg4 = (int)(
long)
h->next->next->next->Data();
2104 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2105 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2106 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2107 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2116 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2123 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2127 ideal arg1 = (ideal)
h->Data();
2128 int arg2 = (int) ((
long)(
h->next->Data()));
2129 int arg3 = (int) ((
long)(
h->next->next->Data()));
2142 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2149 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2153 ideal arg1 = (ideal)
h->Data();
2156 int arg4 = (int)
h->next->next->next->Data();
2157 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2167 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2174 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2178 ideal arg1 = (ideal)
h->Data();
2181 int arg4 = (int)(
long)
h->next->next->next->Data();
2182 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2183 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2192 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2209 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2214 ideal arg1 = (ideal)
h->Data();
2217 int arg4 = (int)(
long)
h->next->next->next->Data();
2218 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2219 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2220 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2227 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2236 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2240 ideal arg1 = (ideal)
h->Data();
2243 int arg4 = (int)(
long)
h->next->next->next->Data();
2244 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2245 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2246 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2247 int arg8 = (int)(
long)
h->next->next->next->next->next->next->next->Data();
2248 int arg9 = (int)(
long)
h->next->next->next->next->next->next->next->next->Data();
2249 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2259 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2266 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2270 ideal arg1 = (ideal)
h->Data();
2283 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2290 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2294 ideal arg1 = (ideal)
h->Data();
2306 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2313 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2317 ideal arg1 = (ideal)
h->Data();
2320 int arg4 = (int) ((
long)(
h->next->next->next->Data()));
2331 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2336 h->next->next->next ==
NULL ||
h->next->next->next->Typ() !=
INT_CMD ||
2337 h->next->next->next ==
NULL ||
h->next->next->next->next->Typ() !=
INT_CMD ||
2338 h->next->next->next ==
NULL ||
h->next->next->next->next->next->Typ() !=
INT_CMD)
2340 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2346 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2349 ideal arg1 = (ideal)
h->Data();
2352 int arg4 = (int)(
long)
h->next->next->next->Data();
2353 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2354 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2355 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2365 #ifndef MAKE_DISTRIBUTION
2376#ifdef HAVE_EXTENDED_SYSTEM
2380# include "hc_newton.h"
2387 char *sys_cmd=(
char *)(
h->Data());
2390 if (strcmp(sys_cmd,
"syz") == 0)
2394 const char *
s=(
const char *)
h->Data();
2395 if (strcmp(
s,
"posInT_EcartFDegpLength")==0)
2397 else if (strcmp(
s,
"posInT_FDegpLength")==0)
2399 else if (strcmp(
s,
"posInT_pLength")==0)
2401 else if (strcmp(
s,
"posInT0")==0)
2403 else if (strcmp(
s,
"posInT1")==0)
2405 else if (strcmp(
s,
"posInT2")==0)
2407 else if (strcmp(
s,
"posInT11")==0)
2409 else if (strcmp(
s,
"posInT110")==0)
2411 else if (strcmp(
s,
"posInT13")==0)
2413 else if (strcmp(
s,
"posInT15")==0)
2415 else if (strcmp(
s,
"posInT17")==0)
2417 else if (strcmp(
s,
"posInT17_c")==0)
2419 else if (strcmp(
s,
"posInT19")==0)
2421 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2433 if(strcmp(sys_cmd,
"locNF")==0)
2438 poly
f=(poly)
h->Data();
2440 ideal
m=(ideal)
h->Data();
2443 int n=(int)((
long)
h->Data());
2508 if(strcmp(sys_cmd,
"p")==0)
2513 WarnS(
"Sorry: not available for release build!");
2519 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2523 int k = (int)(
long)
h->Data();
2531 if(strcmp(sys_cmd,
"r")==0)
2536 WarnS(
"Sorry: not available for release build!");
2548 if(strcmp(sys_cmd,
"changeRing")==0)
2552 for (
int i = 1;
i <= varN;
i++)
2555 snprintf(
h,10,
"x%d",
i);
2560 res->data = (
void*)0L;
2565 if(strcmp(sys_cmd,
"mtrack")==0)
2576 char *fn=(
char*)
h->Data();
2577 fd = fopen(fn,
"w");
2579 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2583 max = (int)(
long)
h->Data();
2592 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2599 if(strcmp(sys_cmd,
"backtrace")==0)
2607#if !defined(OM_NDEBUG)
2609 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2613 PrintS(
"\n[om_Info]: \n");
2615#define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2616 OM_PRINT(MaxBytesSystem);
2617 OM_PRINT(CurrentBytesSystem);
2618 OM_PRINT(MaxBytesSbrk);
2619 OM_PRINT(CurrentBytesSbrk);
2620 OM_PRINT(MaxBytesMmap);
2621 OM_PRINT(CurrentBytesMmap);
2622 OM_PRINT(UsedBytes);
2623 OM_PRINT(AvailBytes);
2624 OM_PRINT(UsedBytesMalloc);
2625 OM_PRINT(AvailBytesMalloc);
2626 OM_PRINT(MaxBytesFromMalloc);
2627 OM_PRINT(CurrentBytesFromMalloc);
2628 OM_PRINT(MaxBytesFromValloc);
2629 OM_PRINT(CurrentBytesFromValloc);
2630 OM_PRINT(UsedBytesFromValloc);
2631 OM_PRINT(AvailBytesFromValloc);
2633 OM_PRINT(UsedPages);
2634 OM_PRINT(AvailPages);
2635 OM_PRINT(MaxRegionsAlloc);
2636 OM_PRINT(CurrentRegionsAlloc);
2641 PrintS(
"\n[om_Opts]: \n");
2642#define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2643 OM_PRINT(
"d", MinTrack);
2644 OM_PRINT(
"d", MinCheck);
2645 OM_PRINT(
"d", MaxTrack);
2646 OM_PRINT(
"d", MaxCheck);
2647 OM_PRINT(
"d", Keep);
2648 OM_PRINT(
"d", HowToReportErrors);
2649 OM_PRINT(
"d", MarkAsStatic);
2650 OM_PRINT(
"u", PagesPerRegion);
2651 OM_PRINT(
"p", OutOfMemoryFunc);
2652 OM_PRINT(
"p", MemoryLowFunc);
2653 OM_PRINT(
"p", ErrorHook);
2658 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2661 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2675 if(strcmp(sys_cmd,
"red")==0)
2690 if(strcmp(sys_cmd,
"fastcomb")==0)
2698 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2703 (ideal)
h->Data(),(poly)
h->next->Data());
2711 if(strcmp(sys_cmd,
"comb")==0)
2719 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2724 (ideal)
h->Data(),(poly)
h->next->Data());
2733 if(strcmp(sys_cmd,
"listall")==0)
2735 void listall(
int showproc);
2737 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2745 if(strcmp(sys_cmd,
"proclist")==0)
2747 void piShowProcList();
2755 if(strcmp(sys_cmd,
"newton")==0)
2759 || (
h->next->next->Typ()!=
INT_CMD))
2761 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2764 poly
p=(poly)(
h->Data());
2783 (
int) (
h->next->Data()),
2784 (
int) (
h->next->next->Data())
2797 L->
m[1].
data=(
void *)(
long)r.achse;
2799 L->
m[2].
data=(
void *)(
long)r.deg;
2803 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2805 int anz = r.anz_punkte;
2808 for (
i=0;
i<anz*
dim;
i++)
2818 (*w)[
i] = r.deg_tab[
i];
2821 while (r.deg_tab[
i-1] != -2);
2832 res->data=(
void *)L;
2855 if (strcmp(sys_cmd,
"minpoly") == 0)
2859 Werror(
"expected exactly one argument: %s",
2860 "a square matrix with number entries");
2870 WerrorS(
"expected exactly one argument: "
2871 "a square matrix with number entries");
2878 res->data = (
void *)theMinPoly;
2879 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2881 delete[] polyCoeffs;
2888 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2896 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2905 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2909 WerrorS(
"shell execution is disallowed in restricted mode");
2919 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2928 if (strcmp(sys_cmd,
"GF") == 0)
2945 if (strcmp(sys_cmd,
"svd") == 0)
2956 if (strcmp(sys_cmd,
"redNF_ring")==0)
2959 poly
f = (poly)
h->Data();
2961 ideal
G = (ideal)
h->Data();
2969 if (strcmp(sys_cmd,
"hilbroune") == 0)
2981 if (strcmp(sys_cmd,
"f5")==0)
2990 ideal
G = (ideal)
h->Data();
2994 opt = (int) (
long)
h->Data();
3002 plus = (int) (
long)
h->Data();
3010 termination = (int) (
long)
h->Data();
3016 res->data=(ideal)
F5main(
G,r,opt,plus,termination);
3023 if (strcmp(sys_cmd,
"NF_ring")==0)
3026 poly
f = (poly)
h->Data();
3028 ideal
G = (ideal)
h->Data();
3034 if (strcmp(sys_cmd,
"spoly")==0)
3036 poly
f =
pCopy((poly)
h->Data());
3038 poly
g =
pCopy((poly)
h->Data());
3045 if (strcmp(sys_cmd,
"testGB")==0)
3047 ideal I = (ideal)
h->Data();
3049 ideal GI = (ideal)
h->Data();
3051 res->data = (
void *)(
long)
testGB(I, GI);
3058 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3064 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3072 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3079 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3085 #ifdef HAVE_RATGRING
3086 if (strcmp(sys_cmd,
"intratNF") == 0)
3101 I=(ideal)
h->CopyD();
3109 is=(int)((
long)(
h->Data()));
3117 for(
k=0;
k < id;
k++)
3121 PrintS(
"starting redRat\n");
3139 if (strcmp(sys_cmd,
"ratNF") == 0)
3158 is=(int)((
long)(
h->Data()));
3173 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3191 is=(int)((
long)(
h->Data()));
3207 if (strcmp(sys_cmd,
"ratVar") == 0)
3224 return (start==0)||(end==0)||(start>end);
3228 if (strcmp(sys_cmd,
"unifastmult")==0)
3230 poly
f = (poly)
h->Data();
3232 poly
g=(poly)
h->Data();
3238 if (strcmp(sys_cmd,
"multifastmult")==0)
3240 poly
f = (poly)
h->Data();
3242 poly
g=(poly)
h->Data();
3248 if (strcmp(sys_cmd,
"mults")==0)
3255 if (strcmp(sys_cmd,
"fastpower")==0)
3258 poly
f = (poly)
h->Data();
3260 int n=(int)((
long)
h->Data());
3266 if (strcmp(sys_cmd,
"normalpower")==0)
3268 poly
f = (poly)
h->Data();
3270 int n=(int)((
long)
h->Data());
3276 if (strcmp(sys_cmd,
"MCpower")==0)
3279 poly
f = (poly)
h->Data();
3281 int n=(int)((
long)
h->Data());
3287 if (strcmp(sys_cmd,
"bit_subst")==0)
3290 poly outer = (poly)
h->Data();
3292 poly inner=(poly)
h->Data();
3299 if (strcmp(sys_cmd,
"gcd") == 0)
3319 int d=(int)(
long)
h->next->Data();
3320 char *
s=(
char *)
h->Data();
3338 if (strcmp(sys_cmd,
"subring") == 0)
3352 if (strcmp(sys_cmd,
"HNF") == 0)
3374 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3382 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3387 char *
s=(
char *)
h->next->Data();
3399 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3403 char* filename = (
char*)
h->Data();
3404 FILE*
f = fopen(filename,
"r");
3407 WerrorS(
"invalid file name (in paths use '/')");
3410 mpz_t
m; mpz_init(
m);
3411 mpz_inp_str(
m,
f, 10);
3415 res->data = (
void*)n;
3420 WerrorS(
"expected valid file name as a string");
3432 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3436 (
h->next->next ==
NULL))
3441 int validEntries = 0;
3442 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3444 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3445 sizeof(
int) * jvec->
rows()) == 0)
3447 if (validEntries == 0)
3451 r->
resize(validEntries + 1);
3452 (*r)[validEntries] =
k + 1;
3458 res->data = (
void*)r;
3463 WerrorS(
"expected two non-empty intvecs as arguments");
3474 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3478 (
h->next->next ==
NULL))
3482 int ir = ivec->
rows();
int jr = jvec->
rows();
3483 int r = jr;
if (ir < jr) r = ir;
3484 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3485 sizeof(
int) * r) != 0))
3488 res->data = (
void*)(
long)r;
3493 WerrorS(
"expected two non-empty intvecs as arguments");
3499 if(strcmp(sys_cmd,
"henselfactors")==0)
3504 (
h->next->next->next !=
NULL) &&
3505 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3506 (
h->next->next->next->next !=
NULL) &&
3507 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3508 (
h->next->next->next->next->next !=
NULL) &&
3509 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3510 (
h->next->next->next->next->next->next ==
NULL))
3512 int xIndex = (int)(
long)
h->Data();
3513 int yIndex = (int)(
long)
h->next->Data();
3514 poly hh = (poly)
h->next->next->Data();
3515 poly f0 = (poly)
h->next->next->next->Data();
3516 poly g0 = (poly)
h->next->next->next->next->Data();
3517 int d = (int)(
long)
h->next->next->next->next->next->Data();
3525 res->data = (
char *)L;
3530 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3537 if (strcmp(sys_cmd,
"astep") == 0)
3542 I=(ideal)
h->CopyD();
3555 if (strcmp(sys_cmd,
"PrintMat") == 0)
3565 a=(int)((
long)(
h->Data()));
3570 b=(int)((
long)(
h->Data()));
3585 metric=(int)((
long)(
h->Data()));
3596 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3609 if(strcmp(sys_cmd,
"NCGetType")==0)
3615 res->data=(
void *)(-1L);
3622 if(strcmp(sys_cmd,
"ForceSCA")==0)
3629 b = (int)((
long)(
h->Data()));
3635 e = (int)((
long)(
h->Data()));
3646 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3658 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3670 if(strcmp(sys_cmd,
"test64")==0)
3686 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3692 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3703 if(strcmp(sys_cmd,
"LU")==0)
3713 res->data=(
char*)bb;
3718 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3725 if(strcmp(sys_cmd,
"sort")==0)
3735 if(strcmp(sys_cmd,
"uniq")==0)
3745 if(strcmp(sys_cmd,
"GF")==0)
3750 int p=(int)(
long)
h->Data();
3751 int n=(int)(
long)
h->next->Data();
3752 char *
v=(
char*)
h->next->next->CopyD();
3768 if(strcmp(sys_cmd,
"power1")==0)
3771 poly
f=(poly)
h->CopyD();
3773 res->data=(
void *)
g;
3777 if(strcmp(sys_cmd,
"power2")==0)
3780 poly
f=(poly)
h->Data();
3782 for(
int i=0;
i<2000;
i++)
3784 res->data=(
void *)
g;
3787 if(strcmp(sys_cmd,
"power3")==0)
3790 poly
f=(poly)
h->Data();
3801 poly p1536=
pMult(p1024,p512);
3802 poly p1792=
pMult(p1536,p256);
3803 poly p1920=
pMult(p1792,p128);
3804 poly p1984=
pMult(p1920,p64);
3805 poly p2000=
pMult(p1984,p16);
3806 res->data=(
void *)p2000;
3827 if(strcmp(sys_cmd,
"ccluster")==0)
3837 int pol_with_complex_coeffs=0;
3839 pol_with_complex_coeffs=1;
3845 fmpq_poly_t fre, fim;
3847 if (pol_with_complex_coeffs==1)
3852 fmpq_t center_re,center_im,boxsize,eps;
3858 int n=fmpq_poly_length(fre);
3859 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3860 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3862 for(
int i=0;
i<n;
i++)
3863 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3868 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3869 strategy = strategy+(nb_threads<<6);
3872 if (pol_with_complex_coeffs==0)
3873 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3875 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3879 for(
int i=0;
i<nn;
i++)
3893 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3897 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3898 fmpq_poly_clear(fre);
3899 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3911 if(strcmp(sys_cmd,
"evaluate")==0)
3913 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3916 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3919 poly
p=(poly)
h->Data();
3926 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3929 pt[
i]=(number)
h->Data();
3937 if(strcmp(sys_cmd,
"DivRem")==0)
3942 poly
p=(poly)
h->CopyD();
3943 poly q=(poly)
h->next->CopyD();
3952 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
3958 if(strcmp(sys_cmd,
"DivRemIdU")==0)
3965 ideal
p=(ideal)
h->CopyD();
3966 ideal q=(ideal)
h->next->CopyD();
3983 WerrorS(
"expected system(\"DivRemId\",<ideal>,<ideal>)");
3988 if(strcmp(sys_cmd,
"DivRemId")==0)
3995 ideal
p=(ideal)
h->CopyD();
3996 ideal q=(ideal)
h->next->CopyD();
4010 WerrorS(
"expected system(\"DivRemId\",<ideal>,<ideal>)");
4016 if(strcmp(sys_cmd,
"CoeffTerm")==0)
4029 poly
p=(poly)
h->Data();
4030 poly q=(poly)
h->next->Data();
4038 ideal
p=(ideal)
h->Data();
4039 poly q=(poly)
h->next->Data();
4046 poly
p=(poly)
h->Data();
4047 poly q=(poly)
h->next->Data();
4054 ideal
p=(ideal)
h->Data();
4055 poly q=(poly)
h->next->Data();
4062 poly
p=(poly)
h->Data();
4063 ideal q=(ideal)
h->next->Data();
4070 poly
p=(poly)
h->Data();
4071 ideal q=(ideal)
h->next->Data();
4078 WerrorS(
"expected system(\"CoeffTerm\",<poly>/<vector>,<poly>/<vector>)" "\n or <ideal>/<module>,<poly>/<vector>");
4084 if(strcmp(sys_cmd,
"sat1")==0)
4086 ideal I= (ideal)
h->Data();
4087 ideal J=(ideal)
h->next->Data();
4094 if(strcmp(sys_cmd,
"sat")==0)
4096 ideal I= (ideal)
h->Data();
4097 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
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)
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)
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)