add correct multiplication by units
This commit is contained in:
parent
06957fc5fe
commit
af26d3cb59
40
.singularhistory
Normal file
40
.singularhistory
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
quit;
|
||||||
|
quit;
|
||||||
|
quit;
|
||||||
|
quit;
|
||||||
|
quit;
|
||||||
|
ring r = 0,(X(1..30)),ds;
|
||||||
|
ideal i = maxideal(50);
|
||||||
|
qring Q = i;
|
||||||
|
setring Q;
|
||||||
|
reduce(x(1)^51);
|
||||||
|
reduce(X(1)^51);
|
||||||
|
reduce(X(1)^51,ideal(0));
|
||||||
|
reduce(X(1)^51,std(ideal(0)));
|
||||||
|
basering;
|
||||||
|
Q = std(Q);
|
||||||
|
nameof(basering);
|
||||||
|
std(X(1)^51);
|
||||||
|
setring r;
|
||||||
|
qring q2 = std(maxideal(50));
|
||||||
|
setring q2;
|
||||||
|
reduce(X(1)^51,std(0));
|
||||||
|
basering;
|
||||||
|
quit;
|
||||||
|
ring r = 0,(x(1..8)),ds;
|
||||||
|
ideal i = maxideal(50);
|
||||||
|
ring r = 0,(x(1..8)),ds;
|
||||||
|
ideal i = maxideal(10);
|
||||||
|
i;
|
||||||
|
qring q = std(i);
|
||||||
|
ring r = 0,(x(1..)),ds;
|
||||||
|
ideal i = maxideal(5);
|
||||||
|
ring r = 0,(x(1..3)),ds;
|
||||||
|
ideal i = maxideal(20);
|
||||||
|
ideal i = maxideal(40);
|
||||||
|
qring q = std(i);
|
||||||
|
basering;
|
||||||
|
setring r;
|
||||||
|
ring r = 0,(x(1..6)),ds;
|
||||||
|
ideal i = maxideal(40);
|
||||||
|
qring q = std(i);
|
||||||
@ -354,14 +354,10 @@ proc GenerateOYModule(matrix GOX, matrix GOY, list #)
|
|||||||
M = M + MatrixToVector(auxcol); // Convert to GOX
|
M = M + MatrixToVector(auxcol); // Convert to GOX
|
||||||
if (MalgrFormToOX(auxcol) != col and flag_unit == 0)
|
if (MalgrFormToOX(auxcol) != col and flag_unit == 0)
|
||||||
{
|
{
|
||||||
|
print("Warning: a unit has been used for the MalgrForm of the target module. Computations might not be accurate.");
|
||||||
flag_unit = 1;
|
flag_unit = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (flag_unit ==1)
|
|
||||||
{
|
|
||||||
print("Warning: a unit has been used for the MalgrForm of the target module. Computations might not be accurate.");
|
|
||||||
flag_unit = -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert GOX to an O_n -module
|
// Convert GOX to an O_n -module
|
||||||
@ -377,7 +373,14 @@ proc GenerateOYModule(matrix GOX, matrix GOY, list #)
|
|||||||
col = submat(GOX,intvec(1..a),intvec(i)); // Pick the next generator in GOX
|
col = submat(GOX,intvec(1..a),intvec(i)); // Pick the next generator in GOX
|
||||||
for (j=1; j<= m; j++)
|
for (j=1; j<= m; j++)
|
||||||
{
|
{
|
||||||
M = M + MatrixToVector(MalgrFormVect(Gens[j]*col));
|
if (s>0)
|
||||||
|
{
|
||||||
|
M = M + MatrixToVector(MalgrFormVect(Gens[j]*col, mappingf^k)); // Convert to GOX
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
M = M + MatrixToVector(MalgrFormVect(Gens[j]*col));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -592,10 +595,10 @@ proc MalgrFormPoly(poly h, list #)
|
|||||||
|
|
||||||
if (s == 0)
|
if (s == 0)
|
||||||
{
|
{
|
||||||
if (check[1,1] - h != 0)
|
if (check[1,1] - h != 0)
|
||||||
{
|
{
|
||||||
print("Some conversions use a unit. Answer might not be accurate");
|
print("Some conversions use a unit. Answer might not be accurate");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return(v);
|
return(v);
|
||||||
@ -655,14 +658,14 @@ proc MalgrFormVect(matrix v, list #)
|
|||||||
option(redSB);
|
option(redSB);
|
||||||
option(redTail);
|
option(redTail);
|
||||||
option(redThrough);
|
option(redThrough);
|
||||||
rv = system("reduce_bound", v, K, maxibound);
|
rv = system("reduce_bound", module(v), K*freemodule(a), maxibound);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
option(redTail);
|
option(redTail);
|
||||||
option(redThrough);
|
option(redThrough);
|
||||||
rv = reduce(v,K); // Obtain Malgrange form as a sum. This should be a polynomial only in X's and
|
rv = reduce(v,K); // Obtain Malgrange form as a sum. This should be a polynomial only in X's and
|
||||||
// the elements of Gens in "linear" form
|
// the elements of Gens in "linear" form
|
||||||
}
|
}
|
||||||
|
|
||||||
poly prod = 1;
|
poly prod = 1;
|
||||||
|
|||||||
7
example.c
Normal file
7
example.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
ring r = 0,(x,y),ds;
|
||||||
|
|
||||||
|
ideal f = x,xy+y6+y9;
|
||||||
|
|
||||||
|
AeNormal(f);
|
||||||
|
quit;
|
||||||
7
example2.c
Normal file
7
example2.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
ring r = 0,(x,y,z),ds;
|
||||||
|
|
||||||
|
ideal f = x,y,yz+z6+z8,z3+xz;
|
||||||
|
|
||||||
|
AeNormal(f, maxideal(2));
|
||||||
|
quit;
|
||||||
7
example3.c
Normal file
7
example3.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
LIB"AeCodPruebas.lib";
|
||||||
|
ring r = 0,(x,y),ds;
|
||||||
|
|
||||||
|
ideal f = x,y2,y3+x2y;
|
||||||
|
|
||||||
|
AeNormal(f);
|
||||||
|
quit;
|
||||||
Loading…
Reference in New Issue
Block a user