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
|
||||
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;
|
||||
}
|
||||
}
|
||||
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
|
||||
@ -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
|
||||
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 (check[1,1] - h != 0)
|
||||
{
|
||||
print("Some conversions use a unit. Answer might not be accurate");
|
||||
}
|
||||
if (check[1,1] - h != 0)
|
||||
{
|
||||
print("Some conversions use a unit. Answer might not be accurate");
|
||||
}
|
||||
}
|
||||
|
||||
return(v);
|
||||
@ -655,14 +658,14 @@ proc MalgrFormVect(matrix v, list #)
|
||||
option(redSB);
|
||||
option(redTail);
|
||||
option(redThrough);
|
||||
rv = system("reduce_bound", v, K, maxibound);
|
||||
rv = system("reduce_bound", module(v), K*freemodule(a), maxibound);
|
||||
}
|
||||
else
|
||||
{
|
||||
option(redTail);
|
||||
option(redThrough);
|
||||
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
|
||||
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
|
||||
}
|
||||
|
||||
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