775 int i,
j=0,
k=0,
l,rows,cols,mr;
776 int *temp1,*temp2,*temp3;
812 WarnS(
"betti-command: Input is not homogeneous!");
816 if (weights==
NULL) weights=
w;
819 while ((r0_len>0) && (
res[0]->
m[r0_len-1]==
NULL)) r0_len--;
830 temp1 = (
int*)
omAlloc0((
l+1)*
sizeof(int));
831 temp2 = (
int*)
omAlloc((
l+1)*
sizeof(int));
835 for (
i=0;
i<cols-1;
i++)
838 memset(temp2,0,(
l+1)*
sizeof(
int));
848 WerrorS(
"input not a resolution");
854 if (temp2[
j+1]-
i>rows) rows = temp2[
j+1]-
i;
855 if (temp2[
j+1]-
i<mr) mr = temp2[
j+1]-
i;
868 if (rows <(*weights)[
j]+1) rows=(-mr)+(*weights)[
j]+1;
884 (*result)[(-mr)*cols] = rkl;
885 if ((!
idIs0(
res[0])) && ((*result)[(-mr)*cols]==0))
886 (*
result)[(-mr)*cols] = 1;
888 tocancel = (
int*)
omAlloc0((rows+1)*
sizeof(int));
889 memset(temp1,0,(
l+1)*
sizeof(
int));
892 memset(temp2,0,
l*
sizeof(
int));
896 memset(temp2,0,
l*
sizeof(
int));
902 for(
j=0;
j<=rows+mr;
j++)
908 for (
i=0;
i<cols-1;
i++)
911 memset(temp2,0,
l*
sizeof(
int));
929 for (
j=mr;
j<rows+mr;
j++)
936 memset(tocancel,0,(rows+1)*
sizeof(
int));
948 for (
j=0;
j<=rows;
j++)
960 if ((tomin) && (mr<0))
962 for (
j=1;
j<=rows+mr+1;
j++)
964 for (
k=1;
k<=cols;
k++)
969 for (
j=rows+mr+1;
j<=rows+1;
j++)
971 for (
k=1;
k<=cols;
k++)
989 for (
i=0;
i<exactresult->
rows();
i++)
991 for (
j=0;
j<exactresult->
cols();
j++)
996 if (row_shift!=
NULL) *row_shift = mr;
static int si_max(const int a, const int b)
void show(int mat=0, int spaces=0) const
void WerrorS(const char *s)
BOOLEAN idTestHomModule(ideal m, ideal Q, intvec *w)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
static BOOLEAN idHomModule(ideal m, ideal Q, intvec **w)
static BOOLEAN length(leftv result, leftv arg)
#define IMATELEM(M, I, J)
#define omFreeSize(addr, size)
void p_SetModDeg(intvec *w, ring r)
static long p_FDeg(const poly p, const ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pGetComp(p)
Component.
void PrintS(const char *s)
long id_RankFreeModule(ideal s, ring lmRing, ring tailRing)
return the maximal component number found in any polynomial in s
int syDetect(ideal id, int index, BOOLEAN homog, int *degrees, int *tocancel)