I have a library in PARI/GP and since Sage also supports the GP calculator
I have been trying to shift my library using gp.set() and gp.get()
commands. So far all functions are working but I got a PARI/GP error while
implementing this function in Sage using gp.set(). Here is the code of that
function:
compareSides(printedgesonscreen=0) =
{
local( edge, edgesCheckList1:list, edgesCheckList2:list,
cancelCriterion);
edgesCheckList1 = listcreate(2*numberOfLines);
edgesCheckList2 = listcreate(2*numberOfLines);
for (j = 1, numberOfSpheres,
if( deleteFlag[j] == 0,
if( printedgesonscreen == 1,
print("Cell ",j," lies on the hemisphere with center at ",
divideInNumberField(K,Lambda[j],Mu[j]) );
print(" with radius square ", radiusSquare[j],
" and has the following edges:");
);
for( s = 1, length( pointsOfLine[j]),
edge = setintersect(Set(pointsOfLine[j][s]),
Set(pointsOfSphere[j]:list));
if(length(edge) == 2,
if(printedgesonscreen == 1, print(edge); );
if( setsearch(Set(edgesCheckList1),edge),
if(setsearch(Set(edgesCheckList2),edge),
if (printedgesonscreen == 1,
print("***Error in function compareSides:
triple edge in cell diagram");
);
,
listput(edgesCheckList2,edge);
);
, /* else not yet entered in edgesCheckList1 */
listput(edgesCheckList1,edge);
);
);
if(length(edge) > 2,
print("***Error in function compareSides: edge with three
corners");
);
);
);
);
if(Set(edgesCheckList1) == Set(edgesCheckList2),
print("All ", length(edgesCheckList1), " = ",
length(edgesCheckList2)," edges appear twice.");
if( length(edgesCheckList1) > 3,
cancelCriterion = 1
,
cancelCriterion = 0
);
, /* else some edges do not appear twice. */
print("Some edges do not appear twice:");
print(setminus(Set(edgesCheckList1),Set(edgesCheckList2)));
);
listkill(edgesCheckList1); listkill(edgesCheckList2);
/* Return */ cancelCriterion
};
I have run this function in the GP calculator of Sage using the
gp.console() command and it works fine but I don't understand why it is not
working using gp.set(). Here is the implementation I did:
gp.set('compareSides(printedgesonscreen=0)','{ local( edge,
edgesCheckList1:list, edgesCheckList2:list, cancelCriterion);
edgesCheckList1 = listcreate(2*numberOfLines); edgesCheckList2 =
listcreate(2*numberOfLines); for (j = 1, numberOfSpheres, if(
deleteFlag[j] == 0, if( printedgesonscreen == 1,
print("Cell ",j," lies on the hemisphere with center at ",
divideInNumberField(K,Lambda[j],Mu[j]) ); print(" with radius
square ", radiusSquare[j], " and has the following
edges:"); ); for( s = 1, length( pointsOfLine[j]), edge
= setintersect(Set(pointsOfLine[j][s]),
Set(pointsOfSphere[j]:list)); if(length(edge) == 2,
if(printedgesonscreen == 1, print(edge); ); if(
setsearch(Set(edgesCheckList1),edge),
if(setsearch(Set(edgesCheckList2),edge),
if (printedgesonscreen == 1,
print("***Error in function compareSides: triple edge in cell
diagram"); );
,
listput(edgesCheckList2,edge);
); , /* else not yet entered in edgesCheckList1
*/ listput(edgesCheckList1,edge);
); ); if(length(edge) >
2, print("***Error in function compareSides: edge with three
corners"); ); ); ); ); if(Set(edgesCheckList1) ==
Set(edgesCheckList2), print("All ", length(edgesCheckList1), "
= ", length(edgesCheckList2)," edges appear twice.");
if( length(edgesCheckList1) > 3, cancelCriterion =
1; , cancelCriterion = 0; ); ,
/* else some edges do not appear twice. */ print("Some edges
do not appear twice:");
print(setminus(Set(edgesCheckList1),Set(edgesCheckList2))); );
listkill(edgesCheckList1); listkill(edgesCheckList2); /* Return */
cancelCriterion}')
When I run this in Sage it shows a PARI/GP error and outputs the whole
code. I have been trying to find the bug since the last 3 days. Please help
me regarding this. Thank you.
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.