2222 char *sys_cmd=(
char *)(h->
Data());
2225 if (strcmp(sys_cmd,
"syz") == 0)
2242 const char *
s=(
const char *)h->
Data();
2243 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2245 else if (strcmp(s,
"posInT_FDegpLength")==0)
2247 else if (strcmp(s,
"posInT_pLength")==0)
2249 else if (strcmp(s,
"posInT0")==0)
2251 else if (strcmp(s,
"posInT1")==0)
2253 else if (strcmp(s,
"posInT2")==0)
2255 else if (strcmp(s,
"posInT11")==0)
2257 else if (strcmp(s,
"posInT110")==0)
2259 else if (strcmp(s,
"posInT13")==0)
2261 else if (strcmp(s,
"posInT15")==0)
2263 else if (strcmp(s,
"posInT17")==0)
2265 else if (strcmp(s,
"posInT17_c")==0)
2267 else if (strcmp(s,
"posInT19")==0)
2269 else Print(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2281 if(strcmp(sys_cmd,
"locNF")==0)
2288 ideal
m=(ideal)h->
Data();
2291 int n=(int)((
long)h->
Data());
2356 if(strcmp(sys_cmd,
"p")==0)
2361 Warn(
"Sorry: not available for release build!");
2367 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2371 int k = (int)(
long)h->
Data();
2379 if(strcmp(sys_cmd,
"r")==0)
2384 Warn(
"Sorry: not available for release build!");
2396 if(strcmp(sys_cmd,
"changeRing")==0)
2400 for (
int i = 1;
i <= varN;
i++)
2403 sprintf(h,
"x%d",
i);
2408 res->
data = (
void*)0L;
2413 if(strcmp(sys_cmd,
"mtrack")==0)
2424 fd = fopen((
char*) h->Data(),
"w");
2426 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2430 max = (int)(
long)h->Data();
2435 if (fd !=
NULL) fclose(fd);
2441 if(strcmp(sys_cmd,
"mtrack_all")==0)
2448 fd = fopen((
char*) h->Data(),
"w");
2450 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2455 if (fd !=
NULL) fclose(fd);
2463 if(strcmp(sys_cmd,
"backtrace")==0)
2471 #if !defined(OM_NDEBUG)
2473 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2477 PrintS(
"\n[om_Info]: \n");
2479 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name)
2480 OM_PRINT(MaxBytesSystem);
2481 OM_PRINT(CurrentBytesSystem);
2482 OM_PRINT(MaxBytesSbrk);
2483 OM_PRINT(CurrentBytesSbrk);
2484 OM_PRINT(MaxBytesMmap);
2485 OM_PRINT(CurrentBytesMmap);
2486 OM_PRINT(UsedBytes);
2487 OM_PRINT(AvailBytes);
2488 OM_PRINT(UsedBytesMalloc);
2489 OM_PRINT(AvailBytesMalloc);
2490 OM_PRINT(MaxBytesFromMalloc);
2491 OM_PRINT(CurrentBytesFromMalloc);
2492 OM_PRINT(MaxBytesFromValloc);
2493 OM_PRINT(CurrentBytesFromValloc);
2494 OM_PRINT(UsedBytesFromValloc);
2495 OM_PRINT(AvailBytesFromValloc);
2497 OM_PRINT(UsedPages);
2498 OM_PRINT(AvailPages);
2499 OM_PRINT(MaxRegionsAlloc);
2500 OM_PRINT(CurrentRegionsAlloc);
2505 PrintS(
"\n[om_Opts]: \n");
2506 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name)
2507 OM_PRINT(
"d", MinTrack);
2508 OM_PRINT(
"d", MinCheck);
2509 OM_PRINT(
"d", MaxTrack);
2510 OM_PRINT(
"d", MaxCheck);
2511 OM_PRINT(
"d", Keep);
2512 OM_PRINT(
"d", HowToReportErrors);
2513 OM_PRINT(
"d", MarkAsStatic);
2514 OM_PRINT(
"u", PagesPerRegion);
2515 OM_PRINT(
"p", OutOfMemoryFunc);
2516 OM_PRINT(
"p", MemoryLowFunc);
2517 OM_PRINT(
"p", ErrorHook);
2522 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2525 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2538 #if defined(PDEBUG) || defined(PDIV_DEBUG)
2539 if(strcmp(sys_cmd,
"pDivStat")==0)
2549 if(strcmp(sys_cmd,
"alarm")==0)
2556 struct itimerval t,o;
2557 memset(&t,0,
sizeof(t));
2558 t.it_value.tv_sec =(unsigned)((
unsigned long)h->Data());
2559 setitimer(ITIMER_VIRTUAL,&t,&o);
2569 if(strcmp(sys_cmd,
"red")==0)
2584 if(strcmp(sys_cmd,
"fastcomb")==0)
2592 Warn(
"Wrong types for poly= comb(ideal,poly)");
2597 (ideal)h->Data(),(
poly)h->next->Data());
2605 if(strcmp(sys_cmd,
"comb")==0)
2613 Warn(
"Wrong types for poly= comb(ideal,poly)");
2618 (ideal)h->Data(),(
poly)h->next->Data());
2627 if(strcmp(sys_cmd,
"listall")==0)
2629 void listall(
int showproc);
2631 if ((h!=
NULL) && (h->Typ()==
INT_CMD)) showproc=(int)((
long)h->Data());
2639 if(strcmp(sys_cmd,
"proclist")==0)
2641 void piShowProcList();
2649 if(strcmp(sys_cmd,
"newton")==0)
2653 || (h->next->next->Typ()!=
INT_CMD))
2655 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2664 for (i=0;pp!=
NULL;i++)
2677 (
int) (h->next->Data()),
2678 (
int) (h->next->next->Data())
2691 L->
m[1].
data=(
void *)(
long)r.achse;
2693 L->
m[2].
data=(
void *)(
long)r.deg;
2697 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2699 int anz = r.anz_punkte;
2702 for (i=0; i<anz*
dim; i++)
2705 L->
m[4].
data=(
void *)v;
2712 (*w)[
i] = r.deg_tab[
i];
2715 while (r.deg_tab[i-1] != -2);
2717 L->
m[5].
data=(
void *)w;
2726 res->
data=(
void *)L;
2749 if (strcmp(sys_cmd,
"minpoly") == 0)
2753 Werror(
"expected exactly one argument: %s",
2754 "a square matrix with number entries");
2764 WerrorS(
"expected exactly one argument: "
2765 "a square matrix with number entries");
2772 res->
data = (
void *)theMinPoly;
2773 for (
int i = 0; i <
n; i++)
delete[] ml[i];
2775 delete[] polyCoeffs;
2782 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2790 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2799 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2808 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2816 #if 0 // for testing only
2817 if (strcmp(sys_cmd,
"GF") == 0)
2833 if (strcmp(sys_cmd,
"std") == 0)
2839 i1=(ideal)h->CopyD();
2845 i2=(int)((
long)h->Data());
2855 if (strcmp(sys_cmd,
"svd") == 0)
2870 if (strcmp(sys_cmd,
"DLL") == 0)
2872 typedef void (*Void_Func)();
2873 typedef int (*Int_Func)(int);
2881 f=(Int_Func)
dynl_sym(hh,
"PlusDll");
2883 if (f!=
NULL) printf(
"%d\n",
f(i));
2884 else PrintS(
"cannot find PlusDll\n");
2890 f= (Void_Func)
dynl_sym(hh,
"TestDll");
2892 else PrintS(
"cannot find TestDll\n");
2899 #ifdef HAVE_RING2TOM
2901 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2911 #ifdef HAVE_VANIDEAL
2912 if (strcmp(sys_cmd,
"createG0")==0)
2937 if (strcmp(sys_cmd,
"redNF_ring")==0)
2942 ideal
G = (ideal) h->Data();
2950 if (strcmp(sys_cmd,
"hilbroune") == 0)
2955 I=(ideal)h->CopyD();
2964 if (strcmp(sys_cmd,
"f5")==0)
2973 ideal G = (ideal) h->Data();
2977 opt = (int) (
long) h->Data();
2985 plus = (int) (
long) h->Data();
2993 termination = (int) (
long) h->Data();
2999 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
3006 if (strcmp(sys_cmd,
"NF_ring")==0)
3011 ideal G = (ideal) h->Data();
3017 if (strcmp(sys_cmd,
"spoly")==0)
3028 if (strcmp(sys_cmd,
"testGB")==0)
3030 ideal I = (ideal) h->Data();
3032 ideal GI = (ideal) h->Data();
3041 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3045 if((h!=
NULL) && (h->Typ()==
RING_CMD)) r = (ring)h->Data();
else
3047 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3055 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3062 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3068 #ifdef HAVE_RATGRING
3069 if (strcmp(sys_cmd,
"intratNF") == 0)
3084 I=(ideal)h->CopyD();
3092 is=(int)((
long)(h->Data()));
3100 for(k=0; k < id; k++)
3104 Print(
"starting redRat\n");
3122 if (strcmp(sys_cmd,
"ratNF") == 0)
3141 is=(int)((
long)(h->Data()));
3156 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3174 is=(int)((
long)(h->Data()));
3188 #endif // HAVE_RATGRING
3190 if (strcmp(sys_cmd,
"ratVar") == 0)
3207 return (start==0)||(end==0)||(start>end);
3211 if (strcmp(sys_cmd,
"unifastmult")==0)
3221 if (strcmp(sys_cmd,
"multifastmult")==0)
3231 if (strcmp(sys_cmd,
"mults")==0)
3238 if (strcmp(sys_cmd,
"fastpower")==0)
3243 int n=(int)((
long)h->Data());
3249 if (strcmp(sys_cmd,
"normalpower")==0)
3253 int n=(int)((
long)h->Data());
3259 if (strcmp(sys_cmd,
"MCpower")==0)
3264 int n=(int)((
long)h->Data());
3270 if (strcmp(sys_cmd,
"bit_subst")==0)
3282 if (strcmp(sys_cmd,
"gcd") == 0)
3299 int d=(int)(
long)h->next->Data();
3300 char *s=(
char *)h->Data();
3315 if (strcmp(sys_cmd,
"subring") == 0)
3329 if (strcmp(sys_cmd,
"HNF") == 0)
3350 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3355 char *s=(
char *)h->next->Data();
3356 double error= atof (s);
3368 if (strcmp(sys_cmd,
"python") == 0)
3373 c=(
const char*)h->Data();
3374 if (!PyInitialized) {
3422 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3426 char* filename = (
char*)h->Data();
3427 FILE* f = fopen(filename,
"r");
3430 WerrorS(
"invalid file name (in paths use '/')");
3433 mpz_t
m; mpz_init(m);
3434 mpz_inp_str(m, f, 10);
3438 res->
data = (
void*)n;
3443 WerrorS(
"expected valid file name as a string");
3455 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3459 (h->next->next ==
NULL))
3464 int validEntries = 0;
3465 for (
int k = 0; k <= ivec->
rows() - jvec->
rows(); k++)
3467 if (memcmp(&(*ivec)[k], &(*jvec)[0],
3468 sizeof(
int) * jvec->
rows()) == 0)
3470 if (validEntries == 0)
3474 r->
resize(validEntries + 1);
3475 (*r)[validEntries] = k + 1;
3481 res->
data = (
void*)r;
3486 WerrorS(
"expected two non-empty intvecs as arguments");
3497 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3501 (h->next->next ==
NULL))
3505 int ir = ivec->
rows();
int jr = jvec->
rows();
3506 int r = jr;
if (ir < jr) r = ir;
3507 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3508 sizeof(
int) * r) != 0))
3511 res->
data = (
void*)(
long)
r;
3516 WerrorS(
"expected two non-empty intvecs as arguments");
3522 if(strcmp(sys_cmd,
"henselfactors")==0)
3525 (h->next !=
NULL) && (h->next->Typ() ==
INT_CMD) &&
3526 (h->next->next !=
NULL) && (h->next->next->Typ() ==
POLY_CMD) &&
3527 (h->next->next->next !=
NULL) &&
3528 (h->next->next->next->Typ() ==
POLY_CMD) &&
3529 (h->next->next->next->next !=
NULL) &&
3530 (h->next->next->next->next->Typ() ==
POLY_CMD) &&
3531 (h->next->next->next->next->next !=
NULL) &&
3532 (h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3533 (h->next->next->next->next->next->next ==
NULL))
3535 int xIndex = (int)(
long)h->Data();
3536 int yIndex = (int)(
long)h->next->Data();
3537 poly hh = (
poly)h->next->next->Data();
3538 poly f0 = (
poly)h->next->next->next->Data();
3539 poly g0 = (
poly)h->next->next->next->next->Data();
3540 int d = (int)(
long)h->next->next->next->next->next->Data();
3548 res->
data = (
char *)L;
3553 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3559 if(strcmp(sys_cmd,
"neworder")==0)
3573 if (strcmp(sys_cmd,
"astep") == 0)
3578 I=(ideal)h->CopyD();
3591 if (strcmp(sys_cmd,
"PrintMat") == 0)
3601 a=(int)((
long)(h->Data()));
3606 b=(int)((
long)(h->Data()));
3621 metric=(int)((
long)(h->Data()));
3632 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3645 if(strcmp(sys_cmd,
"NCGetType")==0)
3651 res->
data=(
void *)(-1L);
3658 if(strcmp(sys_cmd,
"ForceSCA")==0)
3665 b = (int)((
long)(h->Data()));
3671 e = (int)((
long)(h->Data()));
3682 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3694 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3706 if(strcmp(sys_cmd,
"test64")==0)
3722 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3728 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3731 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3733 n_SwitchChinRem=(int)(
long)h->Data();
3739 if(strcmp(sys_cmd,
"LU")==0)
3749 res->
data=(
char*)bb;
3754 WerrorS(
"system(\"LU\",<cmatrix>) expected");
int posInT_pLength(const TSet set, const int length, LObject &p)
const CanonicalForm int s
poly pFastPower(poly f, int n, ring r)
void p_DebugPrint(poly p, const ring r)
Class used for (list of) interpreter objects.
const char * omError2String(omError_t error)
ring rSubring(ring org_ring, sleftv *rv)
void resize(int new_length)
int posInT2(const TSet set, const int length, LObject &p)
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...
int posInT1(const TSet set, const int length, LObject &p)
short * iv2array(intvec *iv, const ring R)
number n_convFactoryNSingN(const CanonicalForm n, const coeffs r)
void sdb_edit(procinfo *pi)
static const int SW_USE_EZGCD_P
set to 1 to use EZGCD over F_q
int setNCExtensions(int iMask)
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
#define omFreeSize(addr, size)
const CanonicalForm CFMap CFMap int &both_non_zero int n
poly pFastPowerMC(poly f, int n, ring r)
omError_t om_InternalErrorStatus
poly nc_rat_ReduceSpolyNew(const poly p1, poly p2, int ishift, const ring r)
static FORCE_INLINE int n_GetChar(const coeffs r)
Return the characteristic of the coeff. domain.
static coordinates * points
void * dynl_sym(void *handle, const char *symbol)
void WerrorS(const char *s)
int testGB(ideal I, ideal GI)
int posInT15(const TSet set, const int length, LObject &p)
static bool rIsPluralRing(const ring r)
we must always have this test!
CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
static int pLength(poly a)
int posInT0(const TSet, const int length, LObject &)
void * dynl_open(char *filename)
static poly fglmNewLinearCombination(ideal source, poly monset)
matrix mp_Transp(matrix a, const ring R)
bool sca_Force(ring rGR, int b, int e)
unsigned long * computeMinimalPolynomial(unsigned long **matrix, unsigned n, unsigned long p)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pGetExp(p, i)
Exponent.
int posInT11(const TSet set, const int length, LObject &p)
int posInT17_c(const TSet set, const int length, LObject &p)
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...
matrix nc_PrintMat(int a, int b, ring r, int metric)
returns matrix with the info on noncomm multiplication
static int max(int a, int b)
poly uni_subst_bits(poly outer_uni, poly inner_multi, ring r)
poly multifastmult(poly f, poly g, ring r)
const char feNotImplemented[]
const char * omError2Serror(omError_t error)
static FORCE_INLINE number n_InitMPZ(mpz_t n, const coeffs r)
conversion of a GMP integer to number
poly nc_rat_CreateSpoly(poly pp1, poly pp2, int ishift, const ring r)
BOOLEAN assumeStdFlag(leftv h)
void PrintS(const char *s)
int posInT17(const TSet set, const int length, LObject &p)
static const int SW_USE_CHINREM_GCD
set to 1 to use modular gcd over Z
#define pHead(p)
returns newly allocated copy of Lm(p), coef is copied, next=NULL, p might be NULL ...
matrix singntl_HNF(matrix m, const ring s)
static short scaFirstAltVar(ring r)
poly ringRedNF(poly f, ideal G, ring r)
poly kFindZeroPoly(poly input_p, ring leadRing, ring tailRing)
void rSetSyzComp(int k, const ring r)
ideal Approx_Step(ideal L)
Ann: ???
poly plain_spoly(poly f, poly g)
INLINE_THIS void Init(int l=0)
matrix mpNew(int r, int c)
create a r x c zero-matrix
int posInT_EcartFDegpLength(const TSet set, const int length, LObject &p)
const Variable & v
< [in] a sqrfree bivariate poly
matrix mp_InitI(int r, int c, int v, const ring R)
make it a v * unit matrix
CanonicalForm convSingPFactoryP(poly p, const ring r)
#define pDivisibleBy(a, b)
returns TRUE, if leading monom of a divides leading monom of b i.e., if there exists a expvector c > ...
int probIrredTest(const CanonicalForm &F, double error)
given some error probIrredTest detects irreducibility or reducibility of F with confidence level 1-er...
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 (...
int posInT110(const TSet set, const int length, LObject &p)
static const int SW_USE_QGCD
set to 1 to use Encarnacion GCD over Q(a)
static const int SW_USE_EZGCD
set to 1 to use EZGCD over Z
static short scaLastAltVar(ring r)
static bool rIsSCA(const ring r)
BOOLEAN ncInitSpecialPairMultiplication(ring r)
CFList int bool & irred
[in,out] Is A irreducible?
int(* test_PosInT)(const TSet T, const int tl, LObject &h)
#define omPrintCurrentBackTrace(fd)
static nc_type & ncRingType(nc_struct *p)
KINLINE poly ksOldSpolyRed(poly p1, poly p2, poly spNoether)
int redRat(poly *h, poly *reducer, int *red_length, int rl, int ishift, ring r)
#define pLmDeleteAndNext(p)
like pLmDelete, returns pNext(p)
void pPrintDivisbleByStat()
ideal idXXX(ideal h1, int k)
void omPrintUsedTrackAddrs(FILE *fd, int max_frames)
void omMarkAsStaticAddr(void *addr)
void omPrintUsedAddrs(FILE *fd, int max_frames)
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete 'p'
int posInT19(const TSet set, const int length, LObject &p)
int(* test_PosInL)(const LSet set, const int length, LObject *L, const kStrategy strat)
ideal id_Vec2Ideal(poly vec, const ring R)
char * singclap_neworder(ideal I, const ring r)
poly ringNF(poly f, ideal G, ring r)
int posInT_FDegpLength(const TSet set, const int length, LObject &p)
void Werror(const char *fmt,...)
int posInT13(const TSet set, const int length, LObject &p)
poly unifastmult(poly f, poly g, ring r)
static poly fglmLinearCombination(ideal source, poly monset)
#define pCopy(p)
return a copy of the poly
#define MATELEM(mat, i, j)
void n_Print(number &a, const coeffs r)
print a number (BEWARE of string buffers!) mostly for debugging
ideal F5main(ideal id, ring r, int opt, int plus, int termination)