From 0707f826aa723466ba7643be0221cdf57d88cafa Mon Sep 17 00:00:00 2001 From: cmwslw Date: Tue, 18 Jul 2017 00:28:42 -0700 Subject: [PATCH] More cases for Together. --- expreduce/resources/manip.m | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/expreduce/resources/manip.m b/expreduce/resources/manip.m index 981a260..1473225 100644 --- a/expreduce/resources/manip.m +++ b/expreduce/resources/manip.m @@ -1,5 +1,6 @@ Together::usage = "`Together[e]` attempts to put the terms in `e` under the same denominator."; -Together[(rest___ + a_*Rational[b_,c_])/d_] := (Print[5];Together[(a b+c rest)/(c d)]); +Together[(rest___ + a_*Rational[b_,c_])/d_] := (Print[5];Together[(a b+Expand[c Plus[rest]])/(c d)]); +Together[a_+Rational[b_,c_]*d_] := (Print[7];Together[(a c+b d)/c]); Together[(e_)^p_?((NumberQ[#] && # =!= -1)&)] := Together[Together[e]^p]; Together[(a_/b_+rest___)/d_] := (Print[1];Together[(a+Expand[b Plus[rest]])/(b d)]); @@ -7,6 +8,7 @@ Together[a_/b_+c_+rest___] := (Print[2];Together[(a+b c)/b+rest]); Together[1/(a__Plus) + b__] := (Print[3];Together[(1+Expand[a*Plus[b]])/(a)]); Together[1/(a__Plus)+1/(b__Plus) + c___] := (Print[6];Together[(a+b+Expand[a*b*Plus[c]])/(a*b)]); +Together[1/(a_Symbol)+ rest___] := (Print[8];Together[(1+Expand[a*Plus[rest]])/(a)]); Together[e_] := e; Attributes[Together] = {Listable, Protected}; @@ -18,7 +20,8 @@ ESameTest[(c+a d+b d)/d, a+b+c/d//Together], ESameTest[(a+b+c+d)/((a+b) (c+d)), 1/(a+b)+1/(c+d)//Together], ESameTest[(a+b+c-a^2 c-a b c+d-a^2 d-a b d)/((a+b) (c+d)), 1/(a+b)+1/(c+d)-a//Together], - ESameTest[-(a/(2+a)), Together[a/(-2+a+a^2)-a^2/(-2+a+a^2)]], + (*Only for when we have Cancel:*) + (*ESameTest[-(a/(2+a)), Together[a/(-2+a+a^2)-a^2/(-2+a+a^2)]],*) ESameTest[(a+b c)/b, a/b+c//Together], ESameTest[(b c+a d)/(b d), (a+(b c)/d)/b//Together], ESameTest[(b c+a d)/d, a+(b c)/d//Together], @@ -32,6 +35,19 @@ ESameTest[(a+b c+b e)/(b d), (c+e+ a/b)/d//Together], ESameTest[(6+a)/(2 a), (3 + a/2)/a//Together], ESameTest[(a b+c rest)/(c d), (rest + a*b/c)/d//Together], - ESameTest[(1+a c+b c)/(a+b), 1/(a+b)+c//Together] + ESameTest[(1+a c+b c)/(a+b), 1/(a+b)+c//Together], + ESameTest[(c+a d+b d)/d, Together[(c + a*d + b*d)/d]], + ESameTest[(6+a+2 b)/(2 a), (3+a/2+b)/a//Together], + ESameTest[a/(b e), (a/b)/e//Together], + ESameTest[(a+a^2 c+a b c+a d+b d)/(a (a+b)), Together[1/(a + b) + c+d/a]], + ESameTest[(a+b) (c+d), (a+b)(c+d)//Together], + ESameTest[(a+b+c+d)/((a+b) (c+d)), 1/(a + b)+1/(c+d)//Together], + ESameTest[1/(a+b), 1/(a + b)//Together], + ESameTest[(a+b c e f)/(b c), a/(b*c)+(e*f)//Together], + ESameTest[(a+b+c-a^2 c-a b c+d-a^2 d-a b d)/((a+b) (c+d)), Together[1/(a + b) + 1/(c + d) - a]], + ESameTest[(a+b)/(a b), 1/a+1/b//Together], + ESameTest[(a+b+a b c)/(a b), 1/a+1/b+c//Together], + ESameTest[(1+c d)/c, 1/c+d//Together], + ESameTest[(a+b+a b c+a b d)/(a b), 1/a+1/b+c+d//Together] ] };