From: Chris S. <san...@us...> - 2005-09-01 08:14:10
|
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):= |