From: Chris S. <san...@us...> - 2005-11-08 19:39:53
|
Update of /cvsroot/stack/stack-1-0/scripts/maxima In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11909/scripts/maxima Modified Files: stackfun.php stackmaxima.mac Log Message: Index: stackmaxima.mac =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/maxima/stackmaxima.mac,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** stackmaxima.mac 8 Nov 2005 09:41:40 -0000 1.40 --- stackmaxima.mac 8 Nov 2005 19:39:42 -0000 1.41 *************** *** 34,41 **** /* ********************************** */ ! set_plot_option([RUN_VIEWER,FALSE]); ! set_plot_option([PLOT_FORMAT, GNUPLOT]); ! set_plot_option([NTICKS, 20]); ! set_plot_option([ADAPT_DEPTH, 20]); --- 34,41 ---- /* ********************************** */ ! set_plot_option([run_viewer,false]); ! set_plot_option([plot_format, gnuplot]); ! set_plot_option([nticks, 20]); ! set_plot_option([adapt_depth, 20]); *************** *** 46,51 **** round(x) := ?ROUND(x); truncate(x) := ?TRUNCATE(x); ! ALIAS(int,integrate); /* Allows integrate to be called with int() */ ! ALIAS(simplify,fullratsimp); /* Allows simplify to be something */ decimalplaces(x,n) := float(round(10^n*float(x))/(10^n)); --- 46,51 ---- round(x) := ?ROUND(x); truncate(x) := ?TRUNCATE(x); ! alias(int,integrate); /* Allows integrate to be called with int() */ ! alias(simplify,fullratsimp); /* Allows simplify to be something */ decimalplaces(x,n) := float(round(10^n*float(x))/(10^n)); *************** *** 54,58 **** e:exp(1); pi:%pi; ! ALIAS(ln,log); /* ********************************** */ --- 54,58 ---- e:exp(1); pi:%pi; ! alias(ln,log); /* ********************************** */ *************** *** 152,159 **** if OPT_OUTPUT="MathML" then str:mathml(expr,false), ! /* String display */ ! if str="String" then str:STRING(expr), /* If no correct options have been set */ ! if str="" then str:STRING(expr), return(str) ); --- 152,159 ---- if OPT_OUTPUT="MathML" then str:mathml(expr,false), ! /* string display */ ! if str="String" then str:string(expr), /* If no correct options have been set */ ! if str="" then str:string(expr), return(str) ); *************** *** 356,360 **** ); ! /* Determines if we are using an equation */ inequalityp(ex) := block( if atom(ex) then return(FALSE), --- 356,360 ---- ); ! /* Determines if we are using an inequality */ inequalityp(ex) := block( if atom(ex) then return(FALSE), *************** *** 363,366 **** --- 363,377 ---- ); + /* Reduces an inequality to either ? > 0 or ? >=0 */ + ineqreduce(ex) := block( + if op(ex)="=" then ex:ev(part(ex,1) - part(ex,2),simp,trigreduce) = 0, + if op(ex)=">" then ex:ev(part(ex,1) - part(ex,2),simp,trigreduce) > 0, + if op(ex)=">=" then ex:ev(part(ex,1) - part(ex,2),simp,trigreduce) >= 0, + if op(ex)="<" then ex:ev(part(ex,2) - part(ex,1),simp,trigreduce) > 0, + if op(ex)="<=" then ex:ev(part(ex,2) - part(ex,1),simp,trigreduce) >= 0, + return(ex) + ); + + /* commonfac(l) returns the hcf of a list of numbers */ commonfaclist(l) := block([i,a,ret], *************** *** 511,526 **** 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),"","")) --- 522,530 ---- block([RawMark,SA1,SB1], RawMark:0, ! SA:ineqreduce(SA), ! SB:ineqreduce(SB), ! SA1:ev(part(SA,1),simp), ! SB1:ev(part(SB,1),simp), ! if (op(SA)=op(SB) and Stack_Test(SA1,SB1)) then RawMark:1, return(StackReturnOb("true",STRING(RawMark),"","")) *************** *** 566,571 **** FeedBack:"", /* Check they are equal */ ! SA:map(trigsimp,SA), ! SB:map(trigsimp,SB), if (subsetp(SA,SB) and subsetp(SB,SA)) then return(StackReturnOb("true","1",AnswerNote,FeedBack)), --- 570,575 ---- FeedBack:"", /* Check they are equal */ ! SA:map(ineqreduce,map(trigsimp,SA)), ! SB:map(ineqreduce,map(trigsimp,SB)), if (subsetp(SA,SB) and subsetp(SB,SA)) then return(StackReturnOb("true","1",AnswerNote,FeedBack)), *************** *** 765,779 **** list: args( sExpr ), if topOp = "//" then block( ! val: "false", ! rawmk : String(0), ansnote: "ATPartFrac_single_fraction", fb:StackAddFeedback("","ATPartFrac_single_fraction") ) ! else if topOp = "+" or topOp = "-" or topOp = "*" then block( val: "true", ! rawmk: String(1), ! ansnote: "ATPartFrac_true", ! fb:StackAddFeedback("","ATPartFrac_true") ), ret: StackReturnOb(val,rawmk,ansnote,fb), return(ret) --- 769,795 ---- list: args( sExpr ), if topOp = "//" then block( ! val: "true", /* Whether a single fraction is an invalid answer is really a ! matter of taste! */ ! rawmk : string(0), ansnote: "ATPartFrac_single_fraction", fb:StackAddFeedback("","ATPartFrac_single_fraction") ) ! else if topOp = "+" or topOp = "-" or topOp = "*" then block([sExprPartFrac,oldsimp], ! oldsimp:simp, ! simp:true, val: "true", ! sExprPartFrac:ev(partfrac(sExpr,wrt),simp), ! if sExprPartFrac=expand(sExpr) or sExprPartFrac=sExpr then block( ! rawmk: string(1), ! ansnote:"ATPartFrac_true" ! ) ! else block( ! rawmk: string(0), ! ansnote:"ATPartFrac_false" ! ), ! fb:StackAddFeedback("","ATPartFrac_true"), ! simp:oldsimp ), + if (quiet) then fb:"", ret: StackReturnOb(val,rawmk,ansnote,fb), return(ret) *************** *** 782,789 **** block( val: "false", ! rawmk: String(0), ansnote : "ATPartFrac_diff_variables", fb:StackAddFeedback("","ATPartFrac_diff_variables"), ! ret: StackReturnOb(val, rawmk, ansnote,fb) ) else --- 798,806 ---- block( val: "false", ! rawmk: string(0), ansnote : "ATPartFrac_diff_variables", fb:StackAddFeedback("","ATPartFrac_diff_variables"), ! if (quiet) then fb:"", ! ret: StackReturnOb(val, rawmk, ansnote,fb) ) else *************** *** 797,803 **** block( val:"true", ! rawmk: String(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")), ret: StackReturnOb(val,rawmk,ansnote,fb), return(ret) --- 814,821 ---- block( val:"true", ! rawmk: string(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")), + if (quiet) then fb:"", ret: StackReturnOb(val,rawmk,ansnote,fb), return(ret) *************** *** 808,818 **** ret: quadTest(sExpr,tExpr,wrt) else if sDeg = 3 then ! ret: tripTest(sExpr, tExpr, wrt) else ! ret: singTest(sExpr, tExpr) ) ) ), ! if (quiet) then FeedBack:"", return(ret) )$ --- 826,836 ---- ret: quadTest(sExpr,tExpr,wrt) else if sDeg = 3 then ! ret: tripTest(sExpr,tExpr,wrt) else ! ret: singTest(sExpr,tExpr) ) ) ), ! if (quiet) then fb:"", return(ret) )$ *************** *** 1105,1109 **** if topOp = "//" then block( val: "false", ! rawmk : String(0), ansnote: "ATPartFrac_single_fraction", fb:"AtPartFrac_single_Fraction" --- 1123,1127 ---- if topOp = "//" then block( val: "false", ! rawmk : string(0), ansnote: "ATPartFrac_single_fraction", fb:"AtPartFrac_single_Fraction" *************** *** 1111,1115 **** else if topOp = "+" or topOp = "-" or topOp = "*" then block( val: "true", ! rawmk: String(1), ansnote: "ATPartFrac_true", fb: "AtPartFrac_true" --- 1129,1133 ---- else if topOp = "+" or topOp = "-" or topOp = "*" then block( val: "true", ! rawmk: string(1), ansnote: "ATPartFrac_true", fb: "AtPartFrac_true" *************** *** 1121,1125 **** block( val: "true", ! rawmk: String(0), ansnote : "ATPartFrac_diff_variables", fb:"AtPartFrac_diff_variables" --- 1139,1143 ---- block( val: "true", ! rawmk: string(0), ansnote : "ATPartFrac_diff_variables", fb:"AtPartFrac_diff_variables" *************** *** 1137,1141 **** block( val:"true", ! rawmk: String(0), ansnote: "ATPartFrac_denom_ret", fb: Sconcat("AtPartFrac_denom_ret ", denom(factor(sExpr)), " " , denom(factor(tExpr))) --- 1155,1159 ---- block( val:"true", ! rawmk: string(0), ansnote: "ATPartFrac_denom_ret", fb: Sconcat("AtPartFrac_denom_ret ", denom(factor(sExpr)), " " , denom(factor(tExpr))) *************** *** 1174,1178 **** block( val: "true", ! rawmk: String(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$\$")) --- 1192,1196 ---- block( val: "true", ! rawmk: string(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$\$")) *************** *** 1182,1186 **** block( val: "true", ! rawmk: String(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")) --- 1200,1204 ---- block( val: "true", ! rawmk: string(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")) *************** *** 1189,1193 **** block( val:"true", ! rawmk: String(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$\$")) --- 1207,1211 ---- block( val:"true", ! rawmk: string(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$\$")) *************** *** 1231,1235 **** block( val:"true", ! rawmk: String(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(sE),"\$"), StackDISP(denom(tE),"\$")) --- 1249,1253 ---- block( val:"true", ! rawmk: string(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(sE),"\$"), StackDISP(denom(tE),"\$")) *************** *** 1238,1242 **** block( val:"true", ! rawmk: String(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(sE,"\$")) --- 1256,1260 ---- block( val:"true", ! rawmk: string(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(sE,"\$")) *************** *** 1272,1276 **** block( val:"true", ! rawmk: String(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$")) --- 1290,1294 ---- block( val:"true", ! rawmk: string(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$")) *************** *** 1281,1285 **** block( val: "true", ! rawmk: String(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")) --- 1299,1303 ---- block( val: "true", ! rawmk: string(0), ansnote: "ATPartFrac_denom_ret", fb: StackAddFeedback("","ATPartFrac_denom_ret", StackDISP(denom(factor(sExpr)),"\$"), StackDISP(denom(factor(tExpr)),"\$")) *************** *** 1288,1292 **** block( val: "true", ! rawmk: String(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$")) --- 1306,1310 ---- block( val: "true", ! rawmk: string(0), ansnote: "ATPartFrac_ret_expression", fb: StackAddFeedback("", "ATPartFrac_ret_expression", StackDISP(factor(sExpr),"\$")) Index: stackfun.php =================================================================== RCS file: /cvsroot/stack/stack-1-0/scripts/maxima/stackfun.php,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** stackfun.php 8 Nov 2005 09:41:40 -0000 1.3 --- stackfun.php 8 Nov 2005 19:39:42 -0000 1.4 *************** *** 73,76 **** --- 73,81 ---- $stack_cmd['inequalityp']['use'] = 't'; + $stack_cmd['ineqreduce']['doc'] = "Takes an expression, and if an inequality or equation reduces it to the form of either <tt>? > 0</tt>, or <tt>? > =0</tt>, or <tt>? = 0</tt> and fully simplifies the left hand side. Useful for comparisons of sets, lists etc. Does nothing to expressions which are not an inequality, or equation."; + $stack_cmd['ineqreduce']['syntax'] = 'ineqreduce(ex)'; + $stack_cmd['ineqreduce']['type'] = 'algebra'; + $stack_cmd['ineqreduce']['use'] = 't'; + $stack_cmd['anyfloatex']['doc'] = 'Takes an expression <tt>ex</tt> and returns TRUE if any of the coefficients are floating point numbers.'; $stack_cmd['anyfloatex']['syntax'] = 'anyfloatex(ex)'; |