Update of /cvsroot/stack/stack-1-0/scripts/maxima
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31035/scripts/maxima
Modified Files:
stackmaxima.mac
Log Message:
Added "equation" and "inequality" input types to the AlgEquiv Answer test.
Index: stackmaxima.mac
===================================================================
RCS file: /cvsroot/stack/stack-1-0/scripts/maxima/stackmaxima.mac,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** stackmaxima.mac 29 Aug 2005 16:33:55 -0000 1.29
--- stackmaxima.mac 1 Sep 2005 08:13:57 -0000 1.30
***************
*** 280,283 ****
--- 280,297 ----
RETURN(ret) )$
+ /* Determines if we are using an equation */
+ equationp(ex) := BLOCK(
+ if atom(ex) then RETURN(FALSE),
+ if "="= op(ex) then RETURN(TRUE),
+ RETURN(FALSE)
+ );
+
+ /* Determines if we are using an equation */
+ inequalityp(ex) := BLOCK(
+ if atom(ex) then RETURN(FALSE),
+ if ">"= op(ex) or "<"= op(ex) or ">="= op(ex) or "<="= op(ex)then RETURN(TRUE),
+ RETURN(FALSE)
+ );
+
/* commonfac(l) returns the hcf of a list of numbers */
commonfaclist(l) := BLOCK([i,a,ret],
***************
*** 329,333 ****
if matrixp(SB) then
if matrixp(SA)#TRUE then
! return(StackReturnOb("false","0","ATAlgEquiv_SA_notmatrix",StackAddFeedback("","ATAlgEquiv_SA_notmatrix")))
else
return(ATMatrix(SA,SB)),
--- 343,347 ----
if matrixp(SB) then
if matrixp(SA)#TRUE then
! return(StackReturnOb("false","0","ATAlgEquiv_SA_not_matrix",StackAddFeedback("","ATAlgEquiv_SA_not_matrix")))
else
return(ATMatrix(SA,SB)),
***************
*** 335,341 ****
if listp(SB) then
if listp(SA)#TRUE then
! return(StackReturnOb("false","0","ATAlgEquiv_SA_notlist",StackAddFeedback("","ATAlgEquiv_SA_notlist")))
else
return(ATList(SA,SB)),
/* Are we dealing with lists? */
if setp(SB) then
--- 349,367 ----
if listp(SB) then
if listp(SA)#TRUE then
! return(StackReturnOb("false","0","ATAlgEquiv_SA_not_list",StackAddFeedback("","ATAlgEquiv_SA_not_list")))
else
return(ATList(SA,SB)),
+ /* Are we dealing with an equation? */
+ if equationp(SB) then
+ if equationp(SA)#TRUE then
+ return(StackReturnOb("false","0","ATAlgEquiv_SA_not_equation",StackAddFeedback("","ATAlgEquiv_SA_not_equation")))
+ else
+ return(ATEquation(SA,SB)),
+ /* Are we dealing with an equation? */
+ if inequalityp(SB) then
+ if inequalityp(SA)#TRUE then
+ return(StackReturnOb("false","0","ATAlgEquiv_SA_not_inequality",StackAddFeedback("","ATAlgEquiv_SA_not_inequality")))
+ else
+ return(ATInequality(SA,SB)),
/* Are we dealing with lists? */
if setp(SB) then
***************
*** 391,394 ****
--- 417,451 ----
)$
+ ATEquation(SA,SB):=
+ BLOCK([RawMark,SA1,SB1,SB2],
+ RawMark:0,
+ SB1:rhs(SB)-lhs(SB),
+ SB2:lhs(SB)-rhs(SB),
+ SA1:rhs(SA)-lhs(SA),
+ if Stack_Test(SA1,SB1) or Stack_Test(SA1,SB2) then
+ RawMark:1,
+ RETURN(StackReturnOb("true",STRING(RawMark),"",""))
+ )$
+
+ ATInequality(SA,SB):=
+ BLOCK([RawMark,SA1,SB1],
+ RawMark:0,
+ SA1:1,
+ SB1:0,
+ if op(SA)=op(SB) then (
+ SA1:part(SA,1)-part(SA,2),
+ SB1:part(SB,1)-part(SB,2)
+ ),
+ if (op(SA)=">" and op(SB)="<") or (op(SA)="<" and op(SB)=">") or
+ (op(SA)=">=" and op(SB)="<=") or (op(SA)="<=" and op(SB)=">=") then (
+ SA1:part(SA,1)-part(SA,2),
+ SB1:part(SB,2)-part(SB,1)
+ ),
+ if Stack_Test(SA1,SB1) then
+ RawMark:1,
+ RETURN(StackReturnOb("true",STRING(RawMark),"",""))
+ )$
+
+
/* An answer test based on two matrices for SA and SB */
ATMatrix(SA,SB):=
|