2294 char *sys_cmd=(
char *)(h->
Data());
2297 if (strcmp(sys_cmd,
"syz") == 0)
2301 const char *
s=(
const char *)h->
Data();
2302 if (strcmp(s,
"posInT_EcartFDegpLength")==0)
2304 else if (strcmp(s,
"posInT_FDegpLength")==0)
2306 else if (strcmp(s,
"posInT_pLength")==0)
2308 else if (strcmp(s,
"posInT0")==0)
2310 else if (strcmp(s,
"posInT1")==0)
2312 else if (strcmp(s,
"posInT2")==0)
2314 else if (strcmp(s,
"posInT11")==0)
2316 else if (strcmp(s,
"posInT110")==0)
2318 else if (strcmp(s,
"posInT13")==0)
2320 else if (strcmp(s,
"posInT15")==0)
2322 else if (strcmp(s,
"posInT17")==0)
2324 else if (strcmp(s,
"posInT17_c")==0)
2326 else if (strcmp(s,
"posInT19")==0)
2328 else PrintS(
"valid posInT:0,1,2,11,110,13,15,17,17_c,19,_EcartFDegpLength,_FDegpLength,_pLength,_EcartpLength\n");
2340 if(strcmp(sys_cmd,
"locNF")==0)
2347 ideal
m=(ideal)h->
Data();
2350 int n=(int)((
long)h->
Data());
2415 if(strcmp(sys_cmd,
"p")==0)
2420 Warn(
"Sorry: not available for release build!");
2426 if(strcmp(sys_cmd,
"setsyzcomp")==0)
2430 int k = (int)(
long)h->
Data();
2438 if(strcmp(sys_cmd,
"r")==0)
2443 Warn(
"Sorry: not available for release build!");
2455 if(strcmp(sys_cmd,
"changeRing")==0)
2459 for (
int i = 1;
i <= varN;
i++)
2462 sprintf(h,
"x%d",
i);
2467 res->
data = (
void*)0L;
2472 if(strcmp(sys_cmd,
"mtrack")==0)
2483 fd = fopen((
char*) h->Data(),
"w");
2485 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2489 max = (int)(
long)h->Data();
2494 if (fd !=
NULL) fclose(fd);
2500 if(strcmp(sys_cmd,
"mtrack_all")==0)
2507 fd = fopen((
char*) h->Data(),
"w");
2509 Warn(
"Can not open %s for writing og mtrack. Using stdout");
2514 if (fd !=
NULL) fclose(fd);
2522 if(strcmp(sys_cmd,
"backtrace")==0)
2530 #if !defined(OM_NDEBUG) 2532 if (strcmp(sys_cmd,
"omMemoryTest")==0)
2536 PrintS(
"\n[om_Info]: \n");
2538 #define OM_PRINT(name) Print(" %-22s : %10ld \n", #name, om_Info . name) 2539 OM_PRINT(MaxBytesSystem);
2540 OM_PRINT(CurrentBytesSystem);
2541 OM_PRINT(MaxBytesSbrk);
2542 OM_PRINT(CurrentBytesSbrk);
2543 OM_PRINT(MaxBytesMmap);
2544 OM_PRINT(CurrentBytesMmap);
2545 OM_PRINT(UsedBytes);
2546 OM_PRINT(AvailBytes);
2547 OM_PRINT(UsedBytesMalloc);
2548 OM_PRINT(AvailBytesMalloc);
2549 OM_PRINT(MaxBytesFromMalloc);
2550 OM_PRINT(CurrentBytesFromMalloc);
2551 OM_PRINT(MaxBytesFromValloc);
2552 OM_PRINT(CurrentBytesFromValloc);
2553 OM_PRINT(UsedBytesFromValloc);
2554 OM_PRINT(AvailBytesFromValloc);
2556 OM_PRINT(UsedPages);
2557 OM_PRINT(AvailPages);
2558 OM_PRINT(MaxRegionsAlloc);
2559 OM_PRINT(CurrentRegionsAlloc);
2564 PrintS(
"\n[om_Opts]: \n");
2565 #define OM_PRINT(format, name) Print(" %-22s : %10" format"\n", #name, om_Opts . name) 2566 OM_PRINT(
"d", MinTrack);
2567 OM_PRINT(
"d", MinCheck);
2568 OM_PRINT(
"d", MaxTrack);
2569 OM_PRINT(
"d", MaxCheck);
2570 OM_PRINT(
"d", Keep);
2571 OM_PRINT(
"d", HowToReportErrors);
2572 OM_PRINT(
"d", MarkAsStatic);
2573 OM_PRINT(
"u", PagesPerRegion);
2574 OM_PRINT(
"p", OutOfMemoryFunc);
2575 OM_PRINT(
"p", MemoryLowFunc);
2576 OM_PRINT(
"p", ErrorHook);
2581 Print(
"\n\n[om_ErrorStatus] : '%s' (%s)\n",
2584 Print(
"[om_InternalErrorStatus]: '%s' (%s)\n",
2597 #if defined(PDEBUG) || defined(PDIV_DEBUG) 2598 if(strcmp(sys_cmd,
"pDivStat")==0)
2608 if(strcmp(sys_cmd,
"alarm")==0)
2615 struct itimerval t,o;
2616 memset(&t,0,
sizeof(t));
2617 t.it_value.tv_sec =(unsigned)((
unsigned long)h->Data());
2618 setitimer(ITIMER_VIRTUAL,&t,&o);
2628 if(strcmp(sys_cmd,
"red")==0)
2643 if(strcmp(sys_cmd,
"fastcomb")==0)
2651 Warn(
"Wrong types for poly= comb(ideal,poly)");
2656 (ideal)h->Data(),(
poly)h->next->Data());
2664 if(strcmp(sys_cmd,
"comb")==0)
2672 Warn(
"Wrong types for poly= comb(ideal,poly)");
2677 (ideal)h->Data(),(
poly)h->next->Data());
2686 if(strcmp(sys_cmd,
"listall")==0)
2688 void listall(
int showproc);
2690 if ((h!=
NULL) && (h->Typ()==
INT_CMD)) showproc=(int)((
long)h->Data());
2698 if(strcmp(sys_cmd,
"proclist")==0)
2700 void piShowProcList();
2708 if(strcmp(sys_cmd,
"newton")==0)
2712 || (h->next->next->Typ()!=
INT_CMD))
2714 WerrorS(
"system(\"newton\",<poly>,<int>,<int>) expected");
2723 for (i=0;pp!=
NULL;i++)
2736 (
int) (h->next->Data()),
2737 (
int) (h->next->next->Data())
2750 L->
m[1].
data=(
void *)(
long)r.achse;
2752 L->
m[2].
data=(
void *)(
long)r.deg;
2756 L->
m[3].
data=(
void *)(
long)r.anz_punkte;
2758 int anz = r.anz_punkte;
2761 for (i=0; i<anz*
dim; i++)
2764 L->
m[4].
data=(
void *)v;
2771 (*w)[
i] = r.deg_tab[
i];
2774 while (r.deg_tab[i-1] != -2);
2776 L->
m[5].
data=(
void *)w;
2785 res->
data=(
void *)L;
2808 if (strcmp(sys_cmd,
"minpoly") == 0)
2812 Werror(
"expected exactly one argument: %s",
2813 "a square matrix with number entries");
2823 WerrorS(
"expected exactly one argument: " 2824 "a square matrix with number entries");
2831 res->
data = (
void *)theMinPoly;
2832 for (
int i = 0; i < n; i++)
delete[] ml[i];
2834 delete[] polyCoeffs;
2841 if (strcmp(sys_cmd,
"sdb_flags") == 0)
2849 WerrorS(
"system(\"sdb_flags\",`int`) expected");
2858 if (strcmp(sys_cmd,
"sdb_edit") == 0)
2867 WerrorS(
"system(\"sdb_edit\",`proc`) expected");
2875 #if 0 // for testing only 2876 if (strcmp(sys_cmd,
"GF") == 0)
2893 if (strcmp(sys_cmd,
"svd") == 0)
2908 if (strcmp(sys_cmd,
"DLL") == 0)
2910 typedef void (*Void_Func)();
2911 typedef int (*Int_Func)(int);
2919 f=(Int_Func)
dynl_sym(hh,
"PlusDll");
2921 if (f!=
NULL) printf(
"%d\n",
f(i));
2922 else PrintS(
"cannot find PlusDll\n");
2928 f= (Void_Func)
dynl_sym(hh,
"TestDll");
2930 else PrintS(
"cannot find TestDll\n");
2937 #ifdef HAVE_RING2TOM 2939 if (strcmp(sys_cmd,
"findZeroPoly")==0)
2949 #ifdef HAVE_VANIDEAL 2950 if (strcmp(sys_cmd,
"createG0")==0)
2975 if (strcmp(sys_cmd,
"redNF_ring")==0)
2980 ideal
G = (ideal) h->Data();
2988 if (strcmp(sys_cmd,
"hilbroune") == 0)
2993 I=(ideal)h->CopyD();
3002 if (strcmp(sys_cmd,
"f5")==0)
3011 ideal G = (ideal) h->Data();
3015 opt = (int) (
long) h->Data();
3023 plus = (int) (
long) h->Data();
3031 termination = (int) (
long) h->Data();
3037 res->
data=(ideal)
F5main(G,r,opt,plus,termination);
3044 if (strcmp(sys_cmd,
"NF_ring")==0)
3049 ideal G = (ideal) h->Data();
3055 if (strcmp(sys_cmd,
"spoly")==0)
3066 if (strcmp(sys_cmd,
"testGB")==0)
3068 ideal I = (ideal) h->Data();
3070 ideal GI = (ideal) h->Data();
3079 if ( (strcmp(sys_cmd,
"AltVarStart") == 0) || (strcmp(sys_cmd,
"AltVarEnd") == 0) )
3083 if((h!=
NULL) && (h->Typ()==
RING_CMD)) r = (ring)h->Data();
else 3085 WerrorS(
"`system(\"AltVarStart/End\"[,<ring>])` expected");
3093 if(strcmp(sys_cmd,
"AltVarStart") == 0)
3100 WerrorS(
"`system(\"AltVarStart/End\",<ring>) requires a SCA ring");
3106 #ifdef HAVE_RATGRING 3107 if (strcmp(sys_cmd,
"intratNF") == 0)
3122 I=(ideal)h->CopyD();
3130 is=(int)((
long)(h->Data()));
3138 for(k=0; k < id; k++)
3142 PrintS(
"starting redRat\n");
3160 if (strcmp(sys_cmd,
"ratNF") == 0)
3179 is=(int)((
long)(h->Data()));
3194 if (strcmp(sys_cmd,
"ratSpoly") == 0)
3212 is=(int)((
long)(h->Data()));
3226 #endif // HAVE_RATGRING 3228 if (strcmp(sys_cmd,
"ratVar") == 0)
3245 return (start==0)||(end==0)||(start>end);
3249 if (strcmp(sys_cmd,
"unifastmult")==0)
3259 if (strcmp(sys_cmd,
"multifastmult")==0)
3269 if (strcmp(sys_cmd,
"mults")==0)
3276 if (strcmp(sys_cmd,
"fastpower")==0)
3281 int n=(int)((
long)h->Data());
3287 if (strcmp(sys_cmd,
"normalpower")==0)
3291 int n=(int)((
long)h->Data());
3297 if (strcmp(sys_cmd,
"MCpower")==0)
3302 int n=(int)((
long)h->Data());
3308 if (strcmp(sys_cmd,
"bit_subst")==0)
3320 if (strcmp(sys_cmd,
"gcd") == 0)
3337 int d=(int)(
long)h->next->Data();
3338 char *s=(
char *)h->Data();
3353 if (strcmp(sys_cmd,
"subring") == 0)
3367 if (strcmp(sys_cmd,
"HNF") == 0)
3389 WerrorS(
"expected `system(\"HNF\",<matrix|intmat|bigintmat>)`");
3397 if (strcmp (sys_cmd,
"probIrredTest") == 0)
3402 char *s=(
char *)h->next->Data();
3403 double error= atof (s);
3415 if (strcmp(sys_cmd,
"python") == 0)
3420 c=(
const char*)h->Data();
3421 if (!PyInitialized) {
3469 if(strcmp(sys_cmd,
"GNUmpLoad")==0)
3473 char* filename = (
char*)h->Data();
3474 FILE* f = fopen(filename,
"r");
3477 WerrorS(
"invalid file name (in paths use '/')");
3480 mpz_t
m; mpz_init(m);
3481 mpz_inp_str(m, f, 10);
3485 res->
data = (
void*)n;
3490 WerrorS(
"expected valid file name as a string");
3502 if(strcmp(sys_cmd,
"intvecMatchingSegments")==0)
3506 (h->next->next ==
NULL))
3511 int validEntries = 0;
3512 for (
int k = 0; k <= ivec->
rows() - jvec->
rows(); k++)
3514 if (memcmp(&(*ivec)[k], &(*jvec)[0],
3515 sizeof(
int) * jvec->
rows()) == 0)
3517 if (validEntries == 0)
3521 r->
resize(validEntries + 1);
3522 (*r)[validEntries] = k + 1;
3528 res->
data = (
void*)r;
3533 WerrorS(
"expected two non-empty intvecs as arguments");
3544 if(strcmp(sys_cmd,
"intvecOverlap")==0)
3548 (h->next->next ==
NULL))
3552 int ir = ivec->
rows();
int jr = jvec->
rows();
3553 int r = jr;
if (ir < jr) r = ir;
3554 while ((r >= 1) && (memcmp(&(*ivec)[ir - r], &(*jvec)[0],
3555 sizeof(
int) * r) != 0))
3558 res->
data = (
void*)(
long)
r;
3563 WerrorS(
"expected two non-empty intvecs as arguments");
3569 if(strcmp(sys_cmd,
"henselfactors")==0)
3572 (h->next !=
NULL) && (h->next->Typ() ==
INT_CMD) &&
3573 (h->next->next !=
NULL) && (h->next->next->Typ() ==
POLY_CMD) &&
3574 (h->next->next->next !=
NULL) &&
3575 (h->next->next->next->Typ() ==
POLY_CMD) &&
3576 (h->next->next->next->next !=
NULL) &&
3577 (h->next->next->next->next->Typ() ==
POLY_CMD) &&
3578 (h->next->next->next->next->next !=
NULL) &&
3579 (h->next->next->next->next->next->Typ() ==
INT_CMD) &&
3580 (h->next->next->next->next->next->next ==
NULL))
3582 int xIndex = (int)(
long)h->Data();
3583 int yIndex = (int)(
long)h->next->Data();
3584 poly hh = (
poly)h->next->next->Data();
3585 poly f0 = (
poly)h->next->next->next->Data();
3586 poly g0 = (
poly)h->next->next->next->next->Data();
3587 int d = (int)(
long)h->next->next->next->next->next->Data();
3595 res->
data = (
char *)L;
3600 WerrorS(
"expected argument list (int, int, poly, poly, poly, int)");
3606 if(strcmp(sys_cmd,
"neworder")==0)
3620 if (strcmp(sys_cmd,
"astep") == 0)
3625 I=(ideal)h->CopyD();
3638 if (strcmp(sys_cmd,
"PrintMat") == 0)
3648 a=(int)((
long)(h->Data()));
3653 b=(int)((
long)(h->Data()));
3668 metric=(int)((
long)(h->Data()));
3679 if(strcmp(sys_cmd,
"NCUseExtensions")==0)
3692 if(strcmp(sys_cmd,
"NCGetType")==0)
3698 res->
data=(
void *)(-1L);
3705 if(strcmp(sys_cmd,
"ForceSCA")==0)
3712 b = (int)((
long)(h->Data()));
3718 e = (int)((
long)(h->Data()));
3729 if(strcmp(sys_cmd,
"ForceNewNCMultiplication")==0)
3741 if(strcmp(sys_cmd,
"ForceNewOldNCMultiplication")==0)
3753 if(strcmp(sys_cmd,
"test64")==0)
3769 Print(
"SIZEOF_LONG=%d\n",SIZEOF_LONG);
3775 if(strcmp(sys_cmd,
"cache_chinrem")==0)
3778 Print(
"caching inverse in chines remainder:%d\n",n_SwitchChinRem);
3780 n_SwitchChinRem=(int)(
long)h->Data();
3786 if(strcmp(sys_cmd,
"LU")==0)
3796 res->
data=(
char*)bb;
3801 WerrorS(
"system(\"LU\",<cmatrix>) expected");
3808 if(strcmp(sys_cmd,
"sort")==0)
3818 if(strcmp(sys_cmd,
"uniq")==0)
3829 if(strcmp(sys_cmd,
"power1")==0)
3834 res->
data=(
void *)g;
3838 if(strcmp(sys_cmd,
"power2")==0)
3843 for(
int i=0;i<2000;i++)
3845 res->
data=(
void *)g;
3848 if(strcmp(sys_cmd,
"power3")==0)
3867 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
#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)
CanonicalForm n_convSingNFactoryN(number n, BOOLEAN setChar, const coeffs r)
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)
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
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 > ...
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()
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)