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
141#ifndef MAKE_DISTRIBUTION
142#define HAVE_EXTENDED_SYSTEM 1
167#ifndef MAKE_DISTRIBUTION
179 int n = singularMatrix->
rows();
181 unsigned long **longMatrix = 0;
182 longMatrix =
new unsigned long *[n] ;
183 for (
int i = 0 ;
i < n;
i++)
184 longMatrix[
i] =
new unsigned long [n];
186 for (
int r = 0; r < n; r++)
187 for (
int c = 0; c < n; c++)
189 poly
p=
MATELEM(singularMatrix, r + 1, c + 1);
199 longMatrix[r][c] = (
unsigned long)entryAsInt;
214 if ((
int)polyCoeffs[
i] != 0)
235 const char *sys_cmd=(
char *)(args->
Data());
240 if (strcmp(sys_cmd,
"nblocks") == 0)
262 r = (ring)
h->Data();
269 if(strcmp(sys_cmd,
"version")==0)
277 if(strcmp(sys_cmd,
"alarm")==0)
284 struct itimerval t,o;
285 memset(&t,0,
sizeof(t));
286 t.it_value.tv_sec =(unsigned)((
unsigned long)
h->Data());
287 setitimer(ITIMER_VIRTUAL,&t,&o);
295 if(strcmp(sys_cmd,
"content")==0)
300 poly
p=(poly)
h->CopyD();
314 if(strcmp(sys_cmd,
"cpu")==0)
317 #ifdef _SC_NPROCESSORS_ONLN
318 cpu=sysconf(_SC_NPROCESSORS_ONLN);
319 #elif defined(_SC_NPROCESSORS_CONF)
320 cpu=sysconf(_SC_NPROCESSORS_CONF);
322 res->data=(
void *)cpu;
328 if(strcmp(sys_cmd,
"executable")==0)
343 if(strcmp(sys_cmd,
"flatten")==0)
356 if(strcmp(sys_cmd,
"unflatten")==0)
369 if(strcmp(sys_cmd,
"neworder")==0)
383 if(strcmp(sys_cmd,
"nc_hilb") == 0)
391 i = (ideal)
h->Data();
394 WerrorS(
"nc_Hilb:ideal expected");
399 lV = (int)(
long)
h->Data();
402 WerrorS(
"nc_Hilb:int expected");
408 if((
int)(
long)
h->Data() == 1)
410 else if((
int)(
long)
h->Data() == 2)
415 trunDegHs = (int)(
long)
h->Data();
420 WerrorS(
"nc_Hilb:int 1,2, total degree for the truncation, and a string for printing the details are expected");
429 if(strcmp(sys_cmd,
"verifyGB")==0)
433 WerrorS(
"system(\"verifyGB\",<ideal>,..) expects a commutative ring");
438 WerrorS(
"expected system(\"verifyGB\",<ideal>,..)");
441 ideal F=(ideal)
h->Data();
458 if(strcmp(sys_cmd,
"rcolon") == 0)
463 ideal
i = (ideal)
h->Data();
465 poly
w=(poly)
h->Data();
467 int lV = (int)(
long)
h->Data();
478 if(strcmp(sys_cmd,
"sh")==0)
482 WerrorS(
"shell execution is disallowed in restricted mode");
486 if (
h==
NULL)
res->data = (
void *)(
long) system(
"sh");
488 res->data = (
void*)(
long) system((
char*)(
h->Data()));
495 if(strcmp(sys_cmd,
"reduce_bound")==0)
505 p = (poly)
h->CopyD();
509 pid = (ideal)
h->CopyD();
514 ideal q = (ideal)
h->next->CopyD();
515 int bound = (int)(
long)
h->next->next->Data();
524 if(strcmp(sys_cmd,
"uname")==0)
532 if(strcmp(sys_cmd,
"with")==0)
542 #define TEST_FOR(A) if(strcmp(s,A)==0) res->data=(void *)1; else
543 char *
s=(
char *)
h->Data();
556 #ifdef TEST_MAC_ORDER
561 #ifdef HAVE_DYNAMIC_LOADING
584 if (strcmp(sys_cmd,
"browsers")==0)
594 if (strcmp(sys_cmd,
"pid")==0)
597 res->data=(
void *)(
long) getpid();
602 if (strcmp(sys_cmd,
"getenv")==0)
607 const char *r=
getenv((
char *)
h->Data());
620 if (strcmp(sys_cmd,
"setenv")==0)
627 setenv((
char *)
h->Data(), (
char *)
h->next->Data(), 1);
637 WerrorS(
"setenv not supported on this platform");
643 if (strcmp(sys_cmd,
"Singular") == 0)
652 if (strcmp(sys_cmd,
"SingularLib") == 0)
661 if (strcmp(sys_cmd,
"SingularBin") == 0)
665 if (r ==
NULL) r=
"/usr/local";
668 #define SINGULAR_PROCS_DIR "/libexec/singular/MOD"
671 if ((strstr(r,
".libs/..")==
NULL)
672 &&(strstr(r,
"Singular/..")==
NULL))
676 if (access(
s,X_OK)==0)
683 strcpy(
s,LIBEXEC_DIR);
684 if (access(
s,X_OK)==0)
707 res->data = (
void*)
s;
712 if (strstr(sys_cmd,
"--") == sys_cmd)
714 if (strcmp(sys_cmd,
"--") == 0)
722 Werror(
"Unknown option %s", sys_cmd);
723 WerrorS(
"Use 'system(\"--\");' for listing of available options");
738 const char *r=(
const char*)
feOptSpec[opt].value;
752 WerrorS(
"Need string or int argument to set option value");
755 const char* errormsg;
760 Werror(
"Need string argument to set value of option %s", sys_cmd);
764 if (errormsg !=
NULL)
765 Werror(
"Option '--%s=%d' %s", sys_cmd, (
int) ((
long)
h->Data()), errormsg);
770 if (errormsg !=
NULL)
771 Werror(
"Option '--%s=%s' %s", sys_cmd, (
char*)
h->Data(), errormsg);
778 if (strcmp(sys_cmd,
"HC")==0)
786 if(strcmp(sys_cmd,
"random")==0)
809 if (strcmp(sys_cmd,
"denom_list")==0)
818 if(strcmp(sys_cmd,
"complexNearZero")==0)
825 WerrorS(
"unsupported ground field!");
832 (int)((
long)(
h->next->Data())));
843 if(strcmp(sys_cmd,
"getPrecDigits")==0)
848 WerrorS(
"unsupported ground field!");
859 if(strcmp(sys_cmd,
"lduDecomp")==0)
866 poly
l; poly u; poly prodLU;
867 lduDecomp(aMat, pMat, lMat, dMat, uMat,
l, u, prodLU);
878 res->data = (
char *)L;
888 if(strcmp(sys_cmd,
"lduSolve")==0)
922 poly
l = (poly)
h->next->next->next->next->Data();
923 poly u = (poly)
h->next->next->next->next->next->Data();
924 poly lTimesU = (poly)
h->next->next->next->next->next->next->Data();
925 matrix bVec = (
matrix)
h->next->next->next->next->next->next->next->Data();
929 Werror(
"first matrix (%d x %d) is not quadratic",
935 Werror(
"second matrix (%d x %d) is not quadratic",
941 Werror(
"third matrix (%d x %d) is not quadratic",
947 Werror(
"third matrix (%d x %d) and fourth matrix (%d x %d) %s",
954 Werror(
"fourth matrix (%d x %d) and vector (%d x 1) do not fit",
959 bVec, xVec, homogSolSpace);
982 if (strcmp(sys_cmd,
"shared") == 0)
984 #ifndef SI_COUNTEDREF_AUTOLOAD
991 else if (strcmp(sys_cmd,
"reference") == 0)
993 #ifndef SI_COUNTEDREF_AUTOLOAD
1002#ifdef HAVE_SIMPLEIPC
1003 if (strcmp(sys_cmd,
"semaphore")==0)
1008 if ((
h->next->next!=
NULL)&& (
h->next->next->Typ()==
INT_CMD))
1009 v=(int)(
long)
h->next->next->Data();
1016 WerrorS(
"Usage: system(\"semaphore\",<cmd>,int)");
1023 if (strcmp(sys_cmd,
"reserve")==0)
1031 res->data=(
void*)(
long)
p;
1038 if (strcmp(sys_cmd,
"reservedLink")==0)
1047 if (strcmp(sys_cmd,
"install")==0)
1053 (
int)(
long)
h->next->next->next->Data(),
1060 if (strcmp(sys_cmd,
"newstruct")==0)
1066 char *n=(
char*)
h->Data();
1073 newstruct_desc desc=(newstruct_desc)bb->data;
1077 else Werror(
"'%s' is not a newstruct",n);
1079 else Werror(
"'%s' is not a blackbox object",n);
1085 if (strcmp(sys_cmd,
"blackbox")==0)
1092 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1093 if (strcmp(sys_cmd,
"absFact") == 0)
1110 l->m[0].data=(
void *)
f;
1112 l->m[1].data=(
void *)
v;
1114 l->m[2].data=(
void*) mipos;
1116 l->m[3].data=(
void*) (
long) n;
1117 res->data=(
void *)
l;
1126 if (strcmp(sys_cmd,
"LLL") == 0)
1149 #if __FLINT_RELEASE >= 20500
1150 if (strcmp(sys_cmd,
"LLL_Flint") == 0)
1171 WerrorS(
"matrix,int or bigint,int expected");
1176 if(((
int)((
long)(
h->next->Data())) != 0) && (
int)((
long)(
h->next->Data()) != 1))
1178 WerrorS(
"int is different from 0, 1");
1182 if((
long)(
h->next->Data()) == 0)
1197 if((
long)(
h->next->Data()) == 1)
1203 for(
int i = 1;
i<=
m->rows();
i++)
1221 for(
int i = 1;
i<=
m->rows();
i++)
1243 #if defined(HAVE_FLINT) || defined(HAVE_NTL)
1244 if(strcmp(sys_cmd,
"rref")==0)
1251 #if defined(HAVE_FLINT)
1253 #elif defined(HAVE_NTL)
1261 ideal
M=(ideal)
h->Data();
1262 #if defined(HAVE_FLINT)
1264 #elif defined(HAVE_NTL)
1272 WerrorS(
"expected system(\"rref\",<matrix>/<smatrix>)");
1280 if(strcmp(sys_cmd,
"pcvLAddL")==0)
1285 if(strcmp(sys_cmd,
"pcvPMulL")==0)
1290 if(strcmp(sys_cmd,
"pcvMinDeg")==0)
1295 if(strcmp(sys_cmd,
"pcvP2CV")==0)
1300 if(strcmp(sys_cmd,
"pcvCV2P")==0)
1305 if(strcmp(sys_cmd,
"pcvDim")==0)
1310 if(strcmp(sys_cmd,
"pcvBasis")==0)
1317 #ifdef HAVE_EIGENVAL
1318 if(strcmp(sys_cmd,
"hessenberg")==0)
1325 #ifdef HAVE_EIGENVAL
1326 if(strcmp(sys_cmd,
"eigenvals")==0)
1333 #ifdef HAVE_EIGENVAL
1334 if(strcmp(sys_cmd,
"rowelim")==0)
1341 #ifdef HAVE_EIGENVAL
1342 if(strcmp(sys_cmd,
"rowcolswap")==0)
1350 if(strcmp(sys_cmd,
"gmsnf")==0)
1357 if(strcmp(sys_cmd,
"contributors") == 0)
1361 "Olaf Bachmann, Michael Brickenstein, Hubert Grassmann, Kai Krueger, Victor Levandovskyy, Wolfgang Neumann, Thomas Nuessler, Wilfred Pohl, Jens Schmidt, Mathias Schulze, Thomas Siebert, Ruediger Stobbe, Moritz Wenk, Tim Wichmann");
1366 #ifdef HAVE_SPECTRUM
1367 if(strcmp(sys_cmd,
"spectrum") == 0)
1381 if(((
long)
h->next->Data())==1L)
1387 if(strcmp(sys_cmd,
"semic") == 0)
1393 if (
h->next->next==
NULL)
1395 else if (
h->next->next->Typ()==
INT_CMD)
1402 if(strcmp(sys_cmd,
"spadd") == 0)
1413 if(strcmp(sys_cmd,
"spmul") == 0)
1425 #define HAVE_SHEAFCOH_TRICKS 1
1427 #ifdef HAVE_SHEAFCOH_TRICKS
1428 if(strcmp(sys_cmd,
"tensorModuleMult")==0)
1434 int m = (int)( (
long)
h->Data() );
1435 ideal
M = (ideal)
h->next->Data();
1446 if (strcmp(sys_cmd,
"twostd") == 0)
1451 I=(ideal)
h->CopyD();
1465 if (strcmp(sys_cmd,
"bracket") == 0)
1470 poly
p=(poly)
h->CopyD();
1472 poly q=(poly)
h->Data();
1483 if (strcmp(sys_cmd,
"env")==0)
1487 ring r = (ring)
h->Data();
1494 WerrorS(
"`system(\"env\",<ring>)` expected");
1502 if (strcmp(sys_cmd,
"opp")==0)
1506 ring r=(ring)
h->Data();
1513 WerrorS(
"`system(\"opp\",<ring>)` expected");
1521 if (strcmp(sys_cmd,
"oppose")==0)
1524 && (
h->next!=
NULL))
1526 ring Rop = (ring)
h->Data();
1539 WerrorS(
"`system(\"oppose\",<ring>,<poly>)` expected");
1549 if (strcmp(sys_cmd,
"walkNextWeight") == 0)
1556 Werror(
"system(\"walkNextWeight\" ...) intvecs not of length %d\n",
1560 res->data = (
void*) walkNextWeight(((
intvec*)
h->Data()),
1562 (ideal)
h->next->next->Data());
1563 if (
res->data ==
NULL ||
res->data == (
void*) 1L)
1579 if (strcmp(sys_cmd,
"walkInitials") == 0)
1583 WerrorS(
"system(\"walkInitials\", ideal) expected");
1586 res->data = (
void*) walkInitials((ideal)
h->Data());
1596 if (strcmp(sys_cmd,
"walkAddIntVec") == 0)
1602 res->data = (
intvec*) walkAddIntVec(arg1, arg2);
1611 #ifdef MwaklNextWeight
1612 if (strcmp(sys_cmd,
"MwalkNextWeight") == 0)
1619 Werror(
"system(\"MwalkNextWeight\" ...) intvecs not of length %d\n",
1625 ideal arg3 = (ideal)
h->next->next->Data();
1636 if(strcmp(sys_cmd,
"Mivdp") == 0)
1640 WerrorS(
"system(\"Mivdp\", int) expected");
1643 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1645 Werror(
"system(\"Mivdp\" ...) intvecs not of length %d\n",
1649 int arg1 = (int) ((
long)(
h->Data()));
1659 if(strcmp(sys_cmd,
"Mivlp") == 0)
1663 WerrorS(
"system(\"Mivlp\", int) expected");
1666 if ((
int) ((
long)(
h->Data())) !=
currRing->N)
1668 Werror(
"system(\"Mivlp\" ...) intvecs not of length %d\n",
1672 int arg1 = (int) ((
long)(
h->Data()));
1683 if(strcmp(sys_cmd,
"MpDiv") == 0)
1687 poly arg1 = (poly)
h->Data();
1688 poly arg2 = (poly)
h->next->Data();
1689 poly
result = MpDiv(arg1, arg2);
1700 if(strcmp(sys_cmd,
"MpMult") == 0)
1704 poly arg1 = (poly)
h->Data();
1705 poly arg2 = (poly)
h->next->Data();
1706 poly
result = MpMult(arg1, arg2);
1716 if (strcmp(sys_cmd,
"MivSame") == 0)
1737 res->data = (
void*)(
long)
MivSame(arg1, arg2);
1744 if (strcmp(sys_cmd,
"M3ivSame") == 0)
1767 res->data = (
void*)(
long)
M3ivSame(arg1, arg2, arg3);
1774 if(strcmp(sys_cmd,
"MwalkInitialForm") == 0)
1780 Werror(
"system \"MwalkInitialForm\"...) intvec not of length %d\n",
1784 ideal
id = (ideal)
h->Data();
1796 if(strcmp(sys_cmd,
"MivMatrixOrder") == 0)
1800 WerrorS(
"system(\"MivMatrixOrder\",intvec) expected");
1813 if(strcmp(sys_cmd,
"MivMatrixOrderdp") == 0)
1817 WerrorS(
"system(\"MivMatrixOrderdp\",intvec) expected");
1820 int arg1 = (int) ((
long)(
h->Data()));
1830 if(strcmp(sys_cmd,
"MPertVectors") == 0)
1834 ideal arg1 = (ideal)
h->Data();
1836 int arg3 = (int) ((
long)(
h->next->next->Data()));
1846 if(strcmp(sys_cmd,
"MPertVectorslp") == 0)
1850 ideal arg1 = (ideal)
h->Data();
1852 int arg3 = (int) ((
long)(
h->next->next->Data()));
1862 if(strcmp(sys_cmd,
"Mfpertvector") == 0)
1866 ideal arg1 = (ideal)
h->Data();
1877 if(strcmp(sys_cmd,
"MivUnit") == 0)
1881 int arg1 = (int) ((
long)(
h->Data()));
1891 if(strcmp(sys_cmd,
"MivWeightOrderlp") == 0)
1905 if(strcmp(sys_cmd,
"MivWeightOrderdp") == 0)
1909 WerrorS(
"system(\"MivWeightOrderdp\",intvec) expected");
1923 if(strcmp(sys_cmd,
"MivMatrixOrderlp") == 0)
1927 WerrorS(
"system(\"MivMatrixOrderlp\",int) expected");
1930 int arg1 = (int) ((
long)(
h->Data()));
1940 if (strcmp(sys_cmd,
"MkInterRedNextWeight") == 0)
1947 Werror(
"system(\"MkInterRedNextWeight\" ...) intvecs not of length %d\n",
1953 ideal arg3 = (ideal)
h->next->next->Data();
1963 #ifdef MPertNextWeight
1964 if (strcmp(sys_cmd,
"MPertNextWeight") == 0)
1970 Werror(
"system(\"MPertNextWeight\" ...) intvecs not of length %d\n",
1975 ideal arg2 = (ideal)
h->next->Data();
1976 int arg3 = (int)
h->next->next->Data();
1987 #ifdef Mivperttarget
1988 if (strcmp(sys_cmd,
"Mivperttarget") == 0)
1992 ideal arg1 = (ideal)
h->Data();
1993 int arg2 = (int)
h->next->Data();
2004 if (strcmp(sys_cmd,
"Mwalk") == 0)
2011 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d\n",
2015 ideal arg1 = (ideal)
h->CopyD();
2018 ring arg4 = (ring)
h->next->next->next->Data();
2019 int arg5 = (int) (
long)
h->next->next->next->next->Data();
2020 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2021 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2031 if (strcmp(sys_cmd,
"Mwalk") == 0)
2040 Werror(
"system(\"Mwalk\" ...) intvecs not of length %d or %d\n",
2044 ideal arg1 = (ideal)
h->Data();
2047 ring arg4 = (ring)
h->next->next->next->Data();
2048 ideal
result = (ideal)
Mwalk(arg1, arg2, arg3,arg4);
2055 if (strcmp(sys_cmd,
"Mpwalk") == 0)
2062 Werror(
"system(\"Mpwalk\" ...) intvecs not of length %d\n",
currRing->N);
2065 ideal arg1 = (ideal)
h->Data();
2066 int arg2 = (int) (
long)
h->next->Data();
2067 int arg3 = (int) (
long)
h->next->next->Data();
2070 int arg6 = (int) (
long)
h->next->next->next->next->next->Data();
2071 int arg7 = (int) (
long)
h->next->next->next->next->next->next->Data();
2072 int arg8 = (int) (
long)
h->next->next->next->next->next->next->next->Data();
2073 ideal
result = (ideal)
Mpwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
2083 if (strcmp(sys_cmd,
"Mrwalk") == 0)
2092 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2096 ideal arg1 = (ideal)
h->Data();
2099 int arg4 = (int)(
long)
h->next->next->next->Data();
2100 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2101 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2102 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2103 ideal
result = (ideal)
Mrwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
2112 if (strcmp(sys_cmd,
"MAltwalk1") == 0)
2119 Werror(
"system(\"MAltwalk1\" ...) intvecs not of length %d\n",
2123 ideal arg1 = (ideal)
h->Data();
2124 int arg2 = (int) ((
long)(
h->next->Data()));
2125 int arg3 = (int) ((
long)(
h->next->next->Data()));
2138 if (strcmp(sys_cmd,
"Mfwalk_alt") == 0)
2145 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2149 ideal arg1 = (ideal)
h->Data();
2152 int arg4 = (int)
h->next->next->next->Data();
2153 ideal
result = (ideal) Mfwalk_alt(arg1, arg2, arg3, arg4);
2163 if (strcmp(sys_cmd,
"Mfwalk") == 0)
2170 Werror(
"system(\"Mfwalk\" ...) intvecs not of length %d\n",
2174 ideal arg1 = (ideal)
h->Data();
2177 int arg4 = (int)(
long)
h->next->next->next->Data();
2178 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2179 ideal
result = (ideal)
Mfwalk(arg1, arg2, arg3, arg4, arg5);
2188 if (strcmp(sys_cmd,
"Mfrwalk") == 0)
2205 Werror(
"system(\"Mfrwalk\" ...) intvecs not of length %d or %d\n",
2210 ideal arg1 = (ideal)
h->Data();
2213 int arg4 = (int)(
long)
h->next->next->next->Data();
2214 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2215 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2216 ideal
result = (ideal)
Mfrwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2223 if (strcmp(sys_cmd,
"Mprwalk") == 0)
2232 Werror(
"system(\"Mrwalk\" ...) intvecs not of length %d or %d\n",
2236 ideal arg1 = (ideal)
h->Data();
2239 int arg4 = (int)(
long)
h->next->next->next->Data();
2240 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2241 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2242 int arg7 = (int)(
long)
h->next->next->next->next->next->next->Data();
2243 int arg8 = (int)(
long)
h->next->next->next->next->next->next->next->Data();
2244 int arg9 = (int)(
long)
h->next->next->next->next->next->next->next->next->Data();
2245 ideal
result = (ideal)
Mprwalk(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
2255 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2262 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2266 ideal arg1 = (ideal)
h->Data();
2279 if (strcmp(sys_cmd,
"MAltwalk2") == 0)
2286 Werror(
"system(\"MAltwalk2\" ...) intvecs not of length %d\n",
2290 ideal arg1 = (ideal)
h->Data();
2302 if (strcmp(sys_cmd,
"TranMImprovwalk") == 0)
2309 Werror(
"system(\"TranMImprovwalk\" ...) intvecs not of length %d\n",
2313 ideal arg1 = (ideal)
h->Data();
2316 int arg4 = (int) ((
long)(
h->next->next->next->Data()));
2327 if (strcmp(sys_cmd,
"TranMrImprovwalk") == 0)
2332 h->next->next->next ==
NULL ||
h->next->next->next->Typ() !=
INT_CMD ||
2333 h->next->next->next ==
NULL ||
h->next->next->next->next->Typ() !=
INT_CMD ||
2334 h->next->next->next ==
NULL ||
h->next->next->next->next->next->Typ() !=
INT_CMD)
2336 WerrorS(
"system(\"TranMrImprovwalk\", ideal, intvec, intvec) expected");
2342 Werror(
"system(\"TranMrImprovwalk\" ...) intvecs not of length %d\n",
currRing->N);
2345 ideal arg1 = (ideal)
h->Data();
2348 int arg4 = (int)(
long)
h->next->next->next->Data();
2349 int arg5 = (int)(
long)
h->next->next->next->next->Data();
2350 int arg6 = (int)(
long)
h->next->next->next->next->next->Data();
2351 ideal
result = (ideal) TranMrImprovwalk(arg1, arg2, arg3, arg4, arg5, arg6);
2361 #ifndef MAKE_DISTRIBUTION
2372#ifdef HAVE_EXTENDED_SYSTEM
2376# include "hc_newton.h"
2383 char *sys_cmd=(
char *)(
h->Data());
2386 if (strcmp(sys_cmd,
"syz") == 0)
2390 const char *
s=(
const char *)
h->Data();
2391 if (strcmp(
s,
"posInT_EcartFDegpLength")==0)
2393 else if (strcmp(
s,
"posInT_FDegpLength")==0)
2395 else if (strcmp(
s,
"posInT_pLength")==0)
2397 else if (strcmp(
s,
"posInT0")==0)
2399 else if (strcmp(
s,
"posInT1")==0)
2401 else if (strcmp(
s,
"posInT2")==0)
2403 else if (strcmp(
s,
"posInT11")==0)
2405 else if (strcmp(
s,
"posInT110")==0)
2407 else if (strcmp(
s,
"posInT13")==0)
2409 else if (strcmp(
s,
"posInT15")==0)
2411 else if (strcmp(
s,
"posInT17")==0)
2413 else if (strcmp(
s,
"posInT17_c")==0)
2415 else if (strcmp(
s,
"posInT19")==0)
2417 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2429 if(strcmp(sys_cmd,
"locNF")==0)
2434 poly
f=(poly)
h->Data();
2436 ideal
m=(ideal)
h->Data();
2439 int n=(int)((
long)
h->Data());
2504 if(strcmp(sys_cmd,
"p")==0)
2509 WarnS(
"Sorry: not available for release build!");
2515 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2519 int k = (int)(
long)
h->Data();
2527 if(strcmp(sys_cmd,
"r")==0)
2532 WarnS(
"Sorry: not available for release build!");
2544 if(strcmp(sys_cmd,
"changeRing")==0)
2548 for (
int i = 1;
i <= varN;
i++)
2551 sprintf(
h,
"x%d",
i);
2556 res->data = (
void*)0L;
2561 if(strcmp(sys_cmd,
"mtrack")==0)
2572 char *fn=(
char*)
h->Data();
2573 fd = fopen(fn,
"w");
2575 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2579 max = (int)(
long)
h->Data();
2588 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2595 if(strcmp(sys_cmd,
"backtrace")==0)
2603#if !defined(OM_NDEBUG)
2605 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2609 PrintS(
"\n[om_Info]: \n");
2611#define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2612 OM_PRINT(MaxBytesSystem);
2613 OM_PRINT(CurrentBytesSystem);
2614 OM_PRINT(MaxBytesSbrk);
2615 OM_PRINT(CurrentBytesSbrk);
2616 OM_PRINT(MaxBytesMmap);
2617 OM_PRINT(CurrentBytesMmap);
2618 OM_PRINT(UsedBytes);
2619 OM_PRINT(AvailBytes);
2620 OM_PRINT(UsedBytesMalloc);
2621 OM_PRINT(AvailBytesMalloc);
2622 OM_PRINT(MaxBytesFromMalloc);
2623 OM_PRINT(CurrentBytesFromMalloc);
2624 OM_PRINT(MaxBytesFromValloc);
2625 OM_PRINT(CurrentBytesFromValloc);
2626 OM_PRINT(UsedBytesFromValloc);
2627 OM_PRINT(AvailBytesFromValloc);
2629 OM_PRINT(UsedPages);
2630 OM_PRINT(AvailPages);
2631 OM_PRINT(MaxRegionsAlloc);
2632 OM_PRINT(CurrentRegionsAlloc);
2637 PrintS(
"\n[om_Opts]: \n");
2638#define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2639 OM_PRINT(
"d", MinTrack);
2640 OM_PRINT(
"d", MinCheck);
2641 OM_PRINT(
"d", MaxTrack);
2642 OM_PRINT(
"d", MaxCheck);
2643 OM_PRINT(
"d", Keep);
2644 OM_PRINT(
"d", HowToReportErrors);
2645 OM_PRINT(
"d", MarkAsStatic);
2646 OM_PRINT(
"u", PagesPerRegion);
2647 OM_PRINT(
"p", OutOfMemoryFunc);
2648 OM_PRINT(
"p", MemoryLowFunc);
2649 OM_PRINT(
"p", ErrorHook);
2654 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2657 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2670 #if defined(PDEBUG) || defined(PDIV_DEBUG)
2671 if(strcmp(sys_cmd,
"pDivStat")==0)
2681 if(strcmp(sys_cmd,
"red")==0)
2696 if(strcmp(sys_cmd,
"fastcomb")==0)
2704 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2709 (ideal)
h->Data(),(poly)
h->next->Data());
2717 if(strcmp(sys_cmd,
"comb")==0)
2725 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2730 (ideal)
h->Data(),(poly)
h->next->Data());
2739 if(strcmp(sys_cmd,
"listall")==0)
2741 void listall(
int showproc);
2743 if ((
h!=
NULL) && (
h->Typ()==
INT_CMD)) showproc=(int)((
long)
h->Data());
2751 if(strcmp(sys_cmd,
"proclist")==0)
2753 void piShowProcList();
2761 if(strcmp(sys_cmd,
"newton")==0)
2765 || (
h->next->next->Typ()!=
INT_CMD))
2767 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2770 poly
p=(poly)(
h->Data());
2789 (
int) (
h->next->Data()),
2790 (
int) (
h->next->next->Data())
2803 L->
m[1].
data=(
void *)(
long)r.achse;
2805 L->
m[2].
data=(
void *)(
long)r.deg;
2809 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2811 int anz = r.anz_punkte;
2814 for (
i=0;
i<anz*
dim;
i++)
2824 (*w)[
i] = r.deg_tab[
i];
2827 while (r.deg_tab[
i-1] != -2);
2838 res->data=(
void *)L;
2861 if (strcmp(sys_cmd,
"minpoly") == 0)
2865 Werror(
"expected exactly one argument: %s",
2866 "a square matrix with number entries");
2876 WerrorS(
"expected exactly one argument: "
2877 "a square matrix with number entries");
2884 res->data = (
void *)theMinPoly;
2885 for (
int i = 0;
i < n;
i++)
delete[] ml[
i];
2887 delete[] polyCoeffs;
2894 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2902 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2911 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2915 WerrorS(
"shell execution is disallowed in restricted mode");
2925 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2934 if (strcmp(sys_cmd,
"GF") == 0)
2951 if (strcmp(sys_cmd,
"svd") == 0)
2962 if (strcmp(sys_cmd,
"redNF_ring")==0)
2965 poly
f = (poly)
h->Data();
2967 ideal
G = (ideal)
h->Data();
2975 if (strcmp(sys_cmd,
"hilbroune") == 0)
2987 if (strcmp(sys_cmd,
"f5")==0)
2996 ideal
G = (ideal)
h->Data();
3000 opt = (int) (
long)
h->Data();
3008 plus = (int) (
long)
h->Data();
3016 termination = (int) (
long)
h->Data();
3022 res->data=(ideal)
F5main(
G,r,opt,plus,termination);
3029 if (strcmp(sys_cmd,
"NF_ring")==0)
3032 poly
f = (poly)
h->Data();
3034 ideal
G = (ideal)
h->Data();
3040 if (strcmp(sys_cmd,
"spoly")==0)
3042 poly
f =
pCopy((poly)
h->Data());
3044 poly
g =
pCopy((poly)
h->Data());
3051 if (strcmp(sys_cmd,
"testGB")==0)
3053 ideal I = (ideal)
h->Data();
3055 ideal GI = (ideal)
h->Data();
3057 res->data = (
void *)(
long)
testGB(I, GI);
3064 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3070 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3078 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3085 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3091 #ifdef HAVE_RATGRING
3092 if (strcmp(sys_cmd,
"intratNF") == 0)
3107 I=(ideal)
h->CopyD();
3115 is=(int)((
long)(
h->Data()));
3123 for(
k=0;
k < id;
k++)
3127 PrintS(
"starting redRat\n");
3145 if (strcmp(sys_cmd,
"ratNF") == 0)
3164 is=(int)((
long)(
h->Data()));
3179 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3197 is=(int)((
long)(
h->Data()));
3213 if (strcmp(sys_cmd,
"ratVar") == 0)
3230 return (start==0)||(end==0)||(start>end);
3234 if (strcmp(sys_cmd,
"unifastmult")==0)
3236 poly
f = (poly)
h->Data();
3238 poly
g=(poly)
h->Data();
3244 if (strcmp(sys_cmd,
"multifastmult")==0)
3246 poly
f = (poly)
h->Data();
3248 poly
g=(poly)
h->Data();
3254 if (strcmp(sys_cmd,
"mults")==0)
3261 if (strcmp(sys_cmd,
"fastpower")==0)
3264 poly
f = (poly)
h->Data();
3266 int n=(int)((
long)
h->Data());
3272 if (strcmp(sys_cmd,
"normalpower")==0)
3274 poly
f = (poly)
h->Data();
3276 int n=(int)((
long)
h->Data());
3282 if (strcmp(sys_cmd,
"MCpower")==0)
3285 poly
f = (poly)
h->Data();
3287 int n=(int)((
long)
h->Data());
3293 if (strcmp(sys_cmd,
"bit_subst")==0)
3296 poly outer = (poly)
h->Data();
3298 poly inner=(poly)
h->Data();
3305 if (strcmp(sys_cmd,
"gcd") == 0)
3325 int d=(int)(
long)
h->next->Data();
3326 char *
s=(
char *)
h->Data();
3344 if (strcmp(sys_cmd,
"subring") == 0)
3358 if (strcmp(sys_cmd,
"HNF") == 0)
3380 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3388 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3393 char *
s=(
char *)
h->next->Data();
3405 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3409 char* filename = (
char*)
h->Data();
3410 FILE*
f = fopen(filename,
"r");
3413 WerrorS(
"invalid file name (in paths use '/')");
3416 mpz_t
m; mpz_init(
m);
3417 mpz_inp_str(
m,
f, 10);
3421 res->data = (
void*)n;
3426 WerrorS(
"expected valid file name as a string");
3438 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3442 (
h->next->next ==
NULL))
3447 int validEntries = 0;
3448 for (
int k = 0;
k <= ivec->
rows() - jvec->
rows();
k++)
3450 if (memcmp(&(*ivec)[
k], &(*jvec)[0],
3451 sizeof(
int) * jvec->
rows()) == 0)
3453 if (validEntries == 0)
3457 r->
resize(validEntries + 1);
3458 (*r)[validEntries] =
k + 1;
3464 res->data = (
void*)r;
3469 WerrorS(
"expected two non-empty intvecs as arguments");
3480 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3484 (
h->next->next ==
NULL))
3488 int ir = ivec->
rows();
int jr = jvec->
rows();
3489 int r = jr;
if (ir < jr) r = ir;
3490 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3491 sizeof(
int) * r) != 0))
3494 res->data = (
void*)(
long)r;
3499 WerrorS(
"expected two non-empty intvecs as arguments");
3505 if(strcmp(sys_cmd,
"henselfactors")==0)
3510 (
h->next->next->next !=
NULL) &&
3511 (
h->next->next->next->Typ() ==
POLY_CMD) &&
3512 (
h->next->next->next->next !=
NULL) &&
3513 (
h->next->next->next->next->Typ() ==
POLY_CMD) &&
3514 (
h->next->next->next->next->next !=
NULL) &&
3515 (
h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3516 (
h->next->next->next->next->next->next ==
NULL))
3518 int xIndex = (int)(
long)
h->Data();
3519 int yIndex = (int)(
long)
h->next->Data();
3520 poly hh = (poly)
h->next->next->Data();
3521 poly f0 = (poly)
h->next->next->next->Data();
3522 poly g0 = (poly)
h->next->next->next->next->Data();
3523 int d = (int)(
long)
h->next->next->next->next->next->Data();
3531 res->data = (
char *)L;
3536 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3543 if (strcmp(sys_cmd,
"astep") == 0)
3548 I=(ideal)
h->CopyD();
3561 if (strcmp(sys_cmd,
"PrintMat") == 0)
3571 a=(int)((
long)(
h->Data()));
3576 b=(int)((
long)(
h->Data()));
3591 metric=(int)((
long)(
h->Data()));
3602 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3615 if(strcmp(sys_cmd,
"NCGetType")==0)
3621 res->data=(
void *)(-1L);
3628 if(strcmp(sys_cmd,
"ForceSCA")==0)
3635 b = (int)((
long)(
h->Data()));
3641 e = (int)((
long)(
h->Data()));
3652 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3664 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3676 if(strcmp(sys_cmd,
"test64")==0)
3692 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3698 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3709 if(strcmp(sys_cmd,
"LU")==0)
3719 res->data=(
char*)bb;
3724 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3731 if(strcmp(sys_cmd,
"sort")==0)
3741 if(strcmp(sys_cmd,
"uniq")==0)
3751 if(strcmp(sys_cmd,
"GF")==0)
3756 int p=(int)(
long)
h->Data();
3757 int n=(int)(
long)
h->next->Data();
3758 char *
v=(
char*)
h->next->next->CopyD();
3774 if(strcmp(sys_cmd,
"power1")==0)
3777 poly
f=(poly)
h->CopyD();
3779 res->data=(
void *)
g;
3783 if(strcmp(sys_cmd,
"power2")==0)
3786 poly
f=(poly)
h->Data();
3788 for(
int i=0;
i<2000;
i++)
3790 res->data=(
void *)
g;
3793 if(strcmp(sys_cmd,
"power3")==0)
3796 poly
f=(poly)
h->Data();
3807 poly p1536=
pMult(p1024,p512);
3808 poly p1792=
pMult(p1536,p256);
3809 poly p1920=
pMult(p1792,p128);
3810 poly p1984=
pMult(p1920,p64);
3811 poly p2000=
pMult(p1984,p16);
3812 res->data=(
void *)p2000;
3833 if(strcmp(sys_cmd,
"ccluster")==0)
3843 int pol_with_complex_coeffs=0;
3845 pol_with_complex_coeffs=1;
3851 fmpq_poly_t fre, fim;
3853 if (pol_with_complex_coeffs==1)
3858 fmpq_t center_re,center_im,boxsize,eps;
3864 int n=fmpq_poly_length(fre);
3865 fmpq_t* re_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3866 fmpq_t* im_part=(fmpq_t*)
omAlloc(n*
sizeof(fmpq_t));
3868 for(
int i=0;
i<n;
i++)
3869 { fmpq_init(re_part[
i]); fmpq_init(im_part[
i]); }
3874 long nb_threads = (long)
feOptValue(FE_OPT_CPUS);
3875 strategy = strategy+(nb_threads<<6);
3878 if (pol_with_complex_coeffs==0)
3879 nn=ccluster_interface_poly_real(re_part,im_part,
mult,fre,center_re,center_im,boxsize,eps,strategy,verbosity);
3881 nn=ccluster_interface_poly_real_imag(re_part,im_part,
mult,fre,fim,center_re,center_im,boxsize,eps,strategy,verbosity);
3885 for(
int i=0;
i<nn;
i++)
3899 for(
int i=n-1;
i>=0;
i--) { fmpq_clear(re_part[
i]); fmpq_clear(im_part[
i]); }
3903 fmpq_clear(center_re); fmpq_clear(center_im); fmpq_clear(boxsize); fmpq_clear(eps);
3904 fmpq_poly_clear(fre);
3905 if (pol_with_complex_coeffs==1) fmpq_poly_clear(fim);
3917 if(strcmp(sys_cmd,
"evaluate")==0)
3919 extern number
maEvalAt(
const poly
p,
const number* pt,
const ring r);
3922 WerrorS(
"expected system(\"evaluate\",<poly>,..)");
3925 poly
p=(poly)
h->Data();
3932 WerrorS(
"system(\"evaluate\",<poly>,<number>..) - expect number");
3935 pt[
i]=(number)
h->Data();
3943 if(strcmp(sys_cmd,
"DivRem")==0)
3948 poly
p=(poly)
h->CopyD();
3949 poly q=(poly)
h->next->CopyD();
3958 WerrorS(
"expected system(\"DivRem\",<poly>,<poly>)");
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)
ideal F5main(ideal id, ring r, int opt, int plus, int termination)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
CFList int bool & irred
[in,out] Is A irreducible?
int probIrredTest(const CanonicalForm &F, double error)
given some error probIrredTest detects irreducibility or reducibility of F with confidence level 1-er...
poly unifastmult(poly f, poly g, ring r)
poly pFastPowerMC(poly f, int n, ring r)
static int max(int a, int b)
poly pFastPower(poly f, int n, ring r)
poly multifastmult(poly f, poly g, ring r)
void WerrorS(const char *s)
feOptIndex feGetOptIndex(const char *name)
const char * feSetOptValue(feOptIndex opt, char *optarg)
static void * feOptValue(feOptIndex opt)
EXTERN_VAR struct fe_option feOptSpec[]
static char * feResource(feResourceConfig config, int warn)
void feStringAppendBrowsers(int warn)
STATIC_VAR int nfMinPoly[16]
This file is work in progress and currently not part of the official Singular.
void convSingPFlintP(fmpq_poly_t res, poly p, const ring r)
void convSingNFlintN(fmpz_t f, mpz_t z)
void convFlintNSingN(mpz_t z, fmpz_t f)
matrix singflint_rref(matrix m, const ring R)
bigintmat * singflint_LLL(bigintmat *A, bigintmat *T)
number maEvalAt(const poly p, const number *pt, const ring r)
evaluate the polynomial p at the pt given by the array pt
lists gmsNF(ideal p, ideal g, matrix B, int D, int K)
void HilbertSeries_OrbitData(ideal S, int lV, bool IG_CASE, bool mgrad, bool odp, int trunDegHs)
ideal RightColonOperation(ideal S, poly w, int lV)
ideal id_TensorModuleMult(const int m, const ideal M, const ring rRing)
STATIC_VAR coordinates * points
static BOOLEAN length(leftv result, leftv arg)
#define IMATELEM(M, I, J)
BOOLEAN jjSORTLIST(leftv, leftv arg)
BOOLEAN jjUNIQLIST(leftv, leftv arg)
BOOLEAN spaddProc(leftv result, leftv first, leftv second)
BOOLEAN iiCheckTypes(leftv args, const short *type_list, int report)
check a list of arguemys against a given field of types return TRUE if the types match return FALSE (...
BOOLEAN semicProc3(leftv res, leftv u, leftv v, leftv w)
BOOLEAN spectrumfProc(leftv result, leftv first)
BOOLEAN spmulProc(leftv result, leftv first, leftv second)
BOOLEAN spectrumProc(leftv result, leftv first)
ring rSubring(ring org_ring, sleftv *rv)
BOOLEAN semicProc(leftv res, leftv u, leftv v)
KINLINE poly ksOldSpolyRed(poly p1, poly p2, poly spNoether)
poly fglmLinearCombination(ideal source, poly monset)
poly fglmNewLinearCombination(ideal source, poly monset)
poly kNFBound(ideal F, ideal Q, poly p, int bound, int syzComp, int lazyReduce)
VAR int(* test_PosInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
VAR int(* test_PosInT)(const TSet T, const int tl, LObject &h)
int posInT17(const TSet set, const int length, LObject &p)
int posInT11(const TSet set, const int length, LObject &p)
int posInT1(const TSet set, const int length, LObject &p)
int posInT0(const TSet, const int length, LObject &)
int posInT2(const TSet set, const int length, LObject &p)
int posInT_pLength(const TSet set, const int length, LObject &p)
int posInT13(const TSet set, const int length, LObject &p)
int posInT17_c(const TSet set, const int length, LObject &p)
int posInT_EcartFDegpLength(const TSet set, const int length, LObject &p)
int posInT15(const TSet set, const int length, LObject &p)
int posInT110(const TSet set, const int length, LObject &p)
int posInT19(const TSet set, const int length, LObject &p)
int posInT_FDegpLength(const TSet set, const int length, LObject &p)
BOOLEAN kVerify2(ideal F, ideal Q)
BOOLEAN kVerify1(ideal F, ideal Q)
static bool rIsSCA(const ring r)
poly pOppose(ring Rop_src, poly p, const ring Rop_dst)
opposes a vector p from Rop to currRing (dst!)
static nc_type & ncRingType(nc_struct *p)
int setNCExtensions(int iMask)
poly nc_p_Bracket_qq(poly p, const poly q, const ring r)
returns [p,q], destroys p
matrix nc_PrintMat(int a, int b, ring r, int metric)
returns matrix with the info on noncomm multiplication
bool sca_Force(ring rGR, int b, int e)
bool luSolveViaLDUDecomp(const matrix pMat, const matrix lMat, const matrix dMat, const matrix uMat, const poly l, const poly u, const poly lTimesU, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LDU-decomposit...
void henselFactors(const int xIndex, const int yIndex, const poly h, const poly f0, const poly g0, const int d, poly &f, poly &g)
Computes a factorization of a polynomial h(x, y) in K[[x]][y] up to a certain degree in x,...
void lduDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &dMat, matrix &uMat, poly &l, poly &u, poly &lTimesU)
LU-decomposition of a given (m x n)-matrix with performing only those divisions that yield zero remai...
matrix mp_Transp(matrix a, const ring R)
ideal sm_UnFlatten(ideal a, int col, const ring R)
matrix mp_InitI(int r, int c, int v, const ring R)
make it a v * unit matrix
matrix mpNew(int r, int c)
create a r x c zero-matrix
ideal sm_Flatten(ideal a, const ring R)
#define MATELEM(mat, i, j)
1-based access to matrix
void mult(unsigned long *result, unsigned long *a, unsigned long *b, unsigned long p, int dega, int degb)
unsigned long * computeMinimalPolynomial(unsigned long **matrix, unsigned n, unsigned long p)
This file provides miscellaneous functionality.
EXTERN_VAR size_t gmp_output_digits
bool complexNearZero(gmp_complex *c, int digits)
The main handler for Singular numbers which are suitable for Singular polynomials.
BOOLEAN ncInitSpecialPairMultiplication(ring r)
ideal Approx_Step(ideal L)
Ann: ???
ideal twostd(ideal I)
Compute two-sided GB:
void newstructShow(newstruct_desc d)
BOOLEAN newstruct_set_proc(const char *bbname, const char *func, int args, procinfov pr)
#define omFreeSize(addr, size)
const char * omError2String(omError_t error)
const char * omError2Serror(omError_t error)
omError_t om_InternalErrorStatus
char * omFindExec(const char *name, char *exec)
#define omPrintCurrentBackTrace(fd)
void pPrintDivisbleByStat()
void p_Content(poly ph, const ring r)
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
poly p_Cleardenom(poly p, const ring r)
static poly p_Add_q(poly p, poly q, const ring r)
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
static void p_Setm(poly p, const ring r)
static unsigned pLength(poly a)
poly pcvP2CV(poly p, int d0, int d1)
int pcvBasis(lists b, int i, poly m, int d, int n)
int pcvDim(int d0, int d1)
lists pcvPMulL(poly p, lists l1)
poly pcvCV2P(poly cv, int d0, int d1)
lists pcvLAddL(lists l1, lists l2)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
poly p_DivRem(poly p, poly q, poly &rest, const ring r)
Compatiblity layer for legacy polynomial operations (over currRing)
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL
#define pLmDeleteAndNext(p)
like pLmDelete, returns pNext(p)
#define pGetExp(p, i)
Exponent.
#define pDivisibleBy(a, b)
returns TRUE, if leading monom of a divides leading monom of b i.e., if there exists a expvector c > ...
#define pCopy(p)
return a copy of the poly
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
int redRat(poly *h, poly *reducer, int *red_length, int rl, int ishift, ring r)
poly nc_rat_ReduceSpolyNew(const poly p1, poly p2, int ishift, const ring r)
void StringSetS(const char *st)
const char feNotImplemented[]
void PrintS(const char *s)
void Werror(const char *fmt,...)
BOOLEAN rComplete(ring r, int force)
this needs to be called whenever a new ring is created: new fields in ring are created (like VarOffse...
void p_DebugPrint(poly p, const ring r)
void rDebugPrint(const ring r)
void rSetSyzComp(int k, const ring r)
static BOOLEAN rField_is_R(const ring r)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
static BOOLEAN rField_is_long_C(const ring r)
static int rBlocks(const ring r)
static BOOLEAN rField_is_Q(const ring r)
static BOOLEAN rIsNCRing(const ring r)
static BOOLEAN rField_is_long_R(const ring r)
#define rField_is_Ring(R)
poly ringNF(poly f, ideal G, ring r)
poly plain_spoly(poly f, poly g)
poly ringRedNF(poly f, ideal G, ring r)
int testGB(ideal I, ideal GI)
static short scaLastAltVar(ring r)
static short scaFirstAltVar(ring r)
void sdb_edit(procinfo *pi)
int simpleipc_cmd(char *cmd, int id, int v)
ideal id_Vec2Ideal(poly vec, const ring R)
int ssiReservePort(int clients)
BOOLEAN assumeStdFlag(leftv h)
int M3ivSame(intvec *temp, intvec *u, intvec *v)
intvec * MivWeightOrderdp(intvec *ivstart)
ideal TranMImprovwalk(ideal G, intvec *curr_weight, intvec *target_tmp, int nP)
intvec * MivMatrixOrderdp(int nV)
ideal Mfwalk(ideal G, intvec *ivstart, intvec *ivtarget, int reduction, int printout)
intvec * MPertVectors(ideal G, intvec *ivtarget, int pdeg)
intvec * MivWeightOrderlp(intvec *ivstart)
ideal Mprwalk(ideal Go, intvec *orig_M, intvec *target_M, int weight_rad, int op_deg, int tp_deg, int nP, int reduction, int printout)
intvec * MivMatrixOrder(intvec *iv)
ideal MAltwalk2(ideal Go, intvec *curr_weight, intvec *target_weight)
ideal MAltwalk1(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight)
ideal Mrwalk(ideal Go, intvec *orig_M, intvec *target_M, int weight_rad, int pert_deg, int reduction, int printout)
ideal Mfrwalk(ideal G, intvec *ivstart, intvec *ivtarget, int weight_rad, int reduction, int printout)
ideal Mwalk(ideal Go, intvec *orig_M, intvec *target_M, ring baseRing, int reduction, int printout)
ideal Mpwalk(ideal Go, int op_deg, int tp_deg, intvec *curr_weight, intvec *target_weight, int nP, int reduction, int printout)
int MivSame(intvec *u, intvec *v)
ideal MwalkInitialForm(ideal G, intvec *ivw)
intvec * MivMatrixOrderlp(int nV)
intvec * Mfpertvector(ideal G, intvec *ivtarget)
intvec * MPertVectorslp(ideal G, intvec *ivtarget, int pdeg)
intvec * MkInterRedNextWeight(intvec *iva, intvec *ivb, ideal G)
intvec * MwalkNextWeight(intvec *curr_weight, intvec *target_weight, ideal G)
intvec * Mivperttarget(ideal G, int ndeg)
intvec * MPertNextWeight(intvec *iva, ideal G, int deg)
int * iv2array(intvec *iv, const ring R)
#define omMarkAsStaticAddr(A)
#define omPrintUsedTrackAddrs(F, max)