2344 char *sys_cmd=(
char *)(h->
Data());
2347 if (strcmp(sys_cmd,
"syz") == 0)
2351 const char *
s=(
const char *)h->
Data();
2352 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2354 else if (strcmp(s,
"posInT_FDegpLength")==0)
2356 else if (strcmp(s,
"posInT_pLength")==0)
2358 else if (strcmp(s,
"posInT0")==0)
2360 else if (strcmp(s,
"posInT1")==0)
2362 else if (strcmp(s,
"posInT2")==0)
2364 else if (strcmp(s,
"posInT11")==0)
2366 else if (strcmp(s,
"posInT110")==0)
2368 else if (strcmp(s,
"posInT13")==0)
2370 else if (strcmp(s,
"posInT15")==0)
2372 else if (strcmp(s,
"posInT17")==0)
2374 else if (strcmp(s,
"posInT17_c")==0)
2376 else if (strcmp(s,
"posInT19")==0)
2378 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2390 if(strcmp(sys_cmd,
"locNF")==0)
2395 poly
f=(poly)h->
Data();
2397 ideal
m=(ideal)h->
Data();
2400 int n=(int)((
long)h->
Data());
2465 if(strcmp(sys_cmd,
"p")==0)
2470 WarnS(
"Sorry: not available for release build!");
2476 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2480 int k = (int)(
long)h->
Data();
2488 if(strcmp(sys_cmd,
"r")==0)
2493 WarnS(
"Sorry: not available for release build!");
2505 if(strcmp(sys_cmd,
"changeRing")==0)
2509 for (
int i = 1;
i <= varN;
i++)
2512 sprintf(h,
"x%d",
i);
2517 res->
data = (
void*)0L;
2522 if(strcmp(sys_cmd,
"mtrack")==0)
2533 char *fn=(
char*) h->Data();
2534 fd = fopen(fn,
"w");
2536 Warn(
"Can not open %s for writing og mtrack. Using stdout",fn);
2540 max = (int)(
long)h->Data();
2545 if (fd !=
NULL) fclose(fd);
2549 WerrorS(
"system(\"mtrack\",..) is not implemented in this version");
2556 if(strcmp(sys_cmd,
"backtrace")==0)
2564 #if !defined(OM_NDEBUG) 2566 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2570 PrintS(
"\n[om_Info]: \n");
2572 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name) 2573 OM_PRINT(MaxBytesSystem);
2574 OM_PRINT(CurrentBytesSystem);
2575 OM_PRINT(MaxBytesSbrk);
2576 OM_PRINT(CurrentBytesSbrk);
2577 OM_PRINT(MaxBytesMmap);
2578 OM_PRINT(CurrentBytesMmap);
2579 OM_PRINT(UsedBytes);
2580 OM_PRINT(AvailBytes);
2581 OM_PRINT(UsedBytesMalloc);
2582 OM_PRINT(AvailBytesMalloc);
2583 OM_PRINT(MaxBytesFromMalloc);
2584 OM_PRINT(CurrentBytesFromMalloc);
2585 OM_PRINT(MaxBytesFromValloc);
2586 OM_PRINT(CurrentBytesFromValloc);
2587 OM_PRINT(UsedBytesFromValloc);
2588 OM_PRINT(AvailBytesFromValloc);
2590 OM_PRINT(UsedPages);
2591 OM_PRINT(AvailPages);
2592 OM_PRINT(MaxRegionsAlloc);
2593 OM_PRINT(CurrentRegionsAlloc);
2598 PrintS(
"\n[om_Opts]: \n");
2599 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name) 2600 OM_PRINT(
"d", MinTrack);
2601 OM_PRINT(
"d", MinCheck);
2602 OM_PRINT(
"d", MaxTrack);
2603 OM_PRINT(
"d", MaxCheck);
2604 OM_PRINT(
"d", Keep);
2605 OM_PRINT(
"d", HowToReportErrors);
2606 OM_PRINT(
"d", MarkAsStatic);
2607 OM_PRINT(
"u", PagesPerRegion);
2608 OM_PRINT(
"p", OutOfMemoryFunc);
2609 OM_PRINT(
"p", MemoryLowFunc);
2610 OM_PRINT(
"p", ErrorHook);
2615 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2618 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2631 #if defined(PDEBUG) || defined(PDIV_DEBUG) 2632 if(strcmp(sys_cmd,
"pDivStat")==0)
2642 if(strcmp(sys_cmd,
"red")==0)
2657 if(strcmp(sys_cmd,
"fastcomb")==0)
2665 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2670 (ideal)h->Data(),(poly)h->next->Data());
2678 if(strcmp(sys_cmd,
"comb")==0)
2686 WarnS(
"Wrong types for poly= comb(ideal,poly)");
2691 (ideal)h->Data(),(poly)h->next->Data());
2700 if(strcmp(sys_cmd,
"listall")==0)
2702 void listall(
int showproc);
2704 if ((h!=
NULL) && (h->Typ()==
INT_CMD)) showproc=(int)((
long)h->Data());
2712 if(strcmp(sys_cmd,
"proclist")==0)
2714 void piShowProcList();
2722 if(strcmp(sys_cmd,
"newton")==0)
2726 || (h->next->next->Typ()!=
INT_CMD))
2728 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2731 poly
p=(poly)(h->Data());
2737 for (i=0;pp!=
NULL;i++)
2750 (
int) (h->next->Data()),
2751 (
int) (h->next->next->Data())
2764 L->
m[1].
data=(
void *)(
long)r.achse;
2766 L->
m[2].
data=(
void *)(
long)r.deg;
2770 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2772 int anz = r.anz_punkte;
2775 for (i=0; i<anz*
dim; i++)
2778 L->
m[4].
data=(
void *)v;
2785 (*w)[
i] = r.deg_tab[
i];
2788 while (r.deg_tab[i-1] != -2);
2790 L->
m[5].
data=(
void *)w;
2799 res->
data=(
void *)L;
2822 if (strcmp(sys_cmd,
"minpoly") == 0)
2826 Werror(
"expected exactly one argument: %s",
2827 "a square matrix with number entries");
2837 WerrorS(
"expected exactly one argument: " 2838 "a square matrix with number entries");
2845 res->
data = (
void *)theMinPoly;
2846 for (
int i = 0; i < n; i++)
delete[] ml[i];
2848 delete[] polyCoeffs;
2855 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2863 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2872 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2881 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2889 #if 0 // for testing only 2890 if (strcmp(sys_cmd,
"GF") == 0)
2907 if (strcmp(sys_cmd,
"svd") == 0)
2922 if (strcmp(sys_cmd,
"DLL") == 0)
2924 typedef void (*Void_Func)();
2925 typedef int (*Int_Func)(int);
2933 f=(Int_Func)
dynl_sym(hh,
"PlusDll");
2935 if (f!=
NULL) printf(
"%d\n",
f(i));
2936 else PrintS(
"cannot find PlusDll\n");
2942 f= (Void_Func)
dynl_sym(hh,
"TestDll");
2944 else PrintS(
"cannot find TestDll\n");
2951 #ifdef HAVE_RING2TOM 2953 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2956 poly f = (poly) h->Data();
2963 #ifdef HAVE_VANIDEAL 2964 if (strcmp(sys_cmd,
"createG0")==0)
2989 if (strcmp(sys_cmd,
"redNF_ring")==0)
2992 poly f = (poly) h->Data();
2994 ideal
G = (ideal) h->Data();
3002 if (strcmp(sys_cmd,
"hilbroune") == 0)
3014 if (strcmp(sys_cmd,
"f5")==0)
3023 ideal G = (ideal) h->Data();
3027 opt = (int) (
long) h->Data();
3035 plus = (int) (
long) h->Data();
3043 termination = (int) (
long) h->Data();
3049 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
3056 if (strcmp(sys_cmd,
"NF_ring")==0)
3059 poly f = (poly) h->Data();
3061 ideal G = (ideal) h->Data();
3067 if (strcmp(sys_cmd,
"spoly")==0)
3069 poly f =
pCopy((poly) h->Data());
3071 poly
g =
pCopy((poly) h->Data());
3078 if (strcmp(sys_cmd,
"testGB")==0)
3080 ideal I = (ideal) h->Data();
3082 ideal GI = (ideal) h->Data();
3091 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3095 if((h!=
NULL) && (h->Typ()==
RING_CMD)) r = (ring)h->Data();
else 3097 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3105 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3112 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3118 #ifdef HAVE_RATGRING 3119 if (strcmp(sys_cmd,
"intratNF") == 0)
3134 I=(ideal)h->CopyD();
3142 is=(int)((
long)(h->Data()));
3150 for(k=0; k < id; k++)
3154 PrintS(
"starting redRat\n");
3172 if (strcmp(sys_cmd,
"ratNF") == 0)
3191 is=(int)((
long)(h->Data()));
3206 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3224 is=(int)((
long)(h->Data()));
3238 #endif // HAVE_RATGRING 3240 if (strcmp(sys_cmd,
"ratVar") == 0)
3257 return (start==0)||(end==0)||(start>end);
3261 if (strcmp(sys_cmd,
"unifastmult")==0)
3263 poly f = (poly)h->Data();
3265 poly g=(poly)h->Data();
3271 if (strcmp(sys_cmd,
"multifastmult")==0)
3273 poly f = (poly)h->Data();
3275 poly g=(poly)h->Data();
3281 if (strcmp(sys_cmd,
"mults")==0)
3288 if (strcmp(sys_cmd,
"fastpower")==0)
3291 poly f = (poly)h->Data();
3293 int n=(int)((
long)h->Data());
3299 if (strcmp(sys_cmd,
"normalpower")==0)
3301 poly f = (poly)h->Data();
3303 int n=(int)((
long)h->Data());
3309 if (strcmp(sys_cmd,
"MCpower")==0)
3312 poly f = (poly)h->Data();
3314 int n=(int)((
long)h->Data());
3320 if (strcmp(sys_cmd,
"bit_subst")==0)
3323 poly outer = (poly)h->Data();
3325 poly inner=(poly)h->Data();
3332 if (strcmp(sys_cmd,
"gcd") == 0)
3347 int d=(int)(
long)h->next->Data();
3348 char *s=(
char *)h->Data();
3363 if (strcmp(sys_cmd,
"subring") == 0)
3377 if (strcmp(sys_cmd,
"HNF") == 0)
3399 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3407 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3412 char *s=(
char *)h->next->Data();
3413 double error= atof (s);
3424 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3428 char* filename = (
char*)h->Data();
3429 FILE* f = fopen(filename,
"r");
3432 WerrorS(
"invalid file name (in paths use '/')");
3435 mpz_t
m; mpz_init(m);
3436 mpz_inp_str(m, f, 10);
3440 res->
data = (
void*)n;
3445 WerrorS(
"expected valid file name as a string");
3457 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3461 (h->next->next ==
NULL))
3466 int validEntries = 0;
3467 for (
int k = 0; k <= ivec->
rows() - jvec->
rows(); k++)
3469 if (memcmp(&(*ivec)[k], &(*jvec)[0],
3470 sizeof(
int) * jvec->
rows()) == 0)
3472 if (validEntries == 0)
3476 r->
resize(validEntries + 1);
3477 (*r)[validEntries] = k + 1;
3483 res->
data = (
void*)r;
3488 WerrorS(
"expected two non-empty intvecs as arguments");
3499 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3503 (h->next->next ==
NULL))
3507 int ir = ivec->
rows();
int jr = jvec->
rows();
3508 int r = jr;
if (ir < jr) r = ir;
3509 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3510 sizeof(
int) * r) != 0))
3513 res->
data = (
void*)(
long)r;
3518 WerrorS(
"expected two non-empty intvecs as arguments");
3524 if(strcmp(sys_cmd,
"henselfactors")==0)
3527 (h->next !=
NULL) && (h->next->Typ() ==
INT_CMD) &&
3528 (h->next->next !=
NULL) && (h->next->next->Typ() ==
POLY_CMD) &&
3529 (h->next->next->next !=
NULL) &&
3530 (h->next->next->next->Typ() ==
POLY_CMD) &&
3531 (h->next->next->next->next !=
NULL) &&
3532 (h->next->next->next->next->Typ() ==
POLY_CMD) &&
3533 (h->next->next->next->next->next !=
NULL) &&
3534 (h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3535 (h->next->next->next->next->next->next ==
NULL))
3537 int xIndex = (int)(
long)h->Data();
3538 int yIndex = (int)(
long)h->next->Data();
3539 poly hh = (poly)h->next->next->Data();
3540 poly f0 = (poly)h->next->next->next->Data();
3541 poly g0 = (poly)h->next->next->next->next->Data();
3542 int d = (int)(
long)h->next->next->next->next->next->Data();
3550 res->
data = (
char *)L;
3555 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3562 if (strcmp(sys_cmd,
"astep") == 0)
3567 I=(ideal)h->CopyD();
3580 if (strcmp(sys_cmd,
"PrintMat") == 0)
3590 a=(int)((
long)(h->Data()));
3595 b=(int)((
long)(h->Data()));
3610 metric=(int)((
long)(h->Data()));
3621 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3634 if(strcmp(sys_cmd,
"NCGetType")==0)
3640 res->
data=(
void *)(-1L);
3647 if(strcmp(sys_cmd,
"ForceSCA")==0)
3654 b = (int)((
long)(h->Data()));
3660 e = (int)((
long)(h->Data()));
3671 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3683 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3695 if(strcmp(sys_cmd,
"test64")==0)
3711 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3717 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3720 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3722 n_SwitchChinRem=(int)(
long)h->Data();
3728 if(strcmp(sys_cmd,
"LU")==0)
3738 res->
data=(
char*)bb;
3743 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3750 if(strcmp(sys_cmd,
"sort")==0)
3760 if(strcmp(sys_cmd,
"uniq")==0)
3770 if(strcmp(sys_cmd,
"tensor")==0)
3784 if(strcmp(sys_cmd,
"GF")==0)
3789 int p=(int)(
long)h->Data();
3790 int n=(int)(
long)h->next->Data();
3791 char *v=(
char*)h->next->next->CopyD();
3807 if(strcmp(sys_cmd,
"power1")==0)
3810 poly f=(poly)h->CopyD();
3812 res->
data=(
void *)g;
3816 if(strcmp(sys_cmd,
"power2")==0)
3819 poly f=(poly)h->Data();
3821 for(
int i=0;i<2000;i++)
3823 res->
data=(
void *)g;
3826 if(strcmp(sys_cmd,
"power3")==0)
3829 poly f=(poly)h->Data();
3840 poly p1536=
pMult(p1024,p512);
3841 poly p1792=
pMult(p1536,p256);
3842 poly p1920=
pMult(p1792,p128);
3843 poly p1984=
pMult(p1920,p64);
3844 poly p2000=
pMult(p1984,p16);
3845 res->
data=(
void *)p2000;
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)
BOOLEAN jjSORTLIST(leftv, leftv arg)
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
void error(const char *fmt,...)
#define omFreeSize(addr, size)
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)
ideal mp_Tensor(ideal A, ideal B, const ring r)
CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
Creation data needed for finite fields.
int posInT0(const TSet, const int length, LObject &)
void * dynl_open(char *filename)
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)
#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)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
The main handler for Singular numbers which are suitable for Singular polynomials.
const char feNotImplemented[]
BOOLEAN jjUNIQLIST(leftv, leftv arg)
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)
void rDebugPrint(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
static unsigned pLength(poly a)
#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 > ...
poly fglmLinearCombination(ideal source, poly monset)
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)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
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()
void omPrintUsedTrackAddrs(FILE *fd, int max_frames)
void omMarkAsStaticAddr(void *addr)
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)
poly ringNF(poly f, ideal G, ring r)
int posInT_FDegpLength(const TSet set, const int length, LObject &p)
poly fglmNewLinearCombination(ideal source, poly monset)
void Werror(const char *fmt,...)
int posInT13(const TSet set, const int length, LObject &p)
poly unifastmult(poly f, poly g, ring r)
#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
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
ideal F5main(ideal id, ring r, int opt, int plus, int termination)