MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: LeafCount Question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg25808] Re: LeafCount Question
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Sat, 28 Oct 2000 01:41:02 -0400 (EDT)
  • Organization: Universitaet Leipzig
  • References: <8t63s9$eg2@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

Unprotect[Plus]

Plus /: MakeBoxes[Plus[arg__], fmt_:TraditionalForm] :=
     
  Module[{sarg = {arg}, pos, neg},
      neg = Select[sarg, MatchQ[#, a_*_ /; a < 0] &];
       pos = Complement[sarg, neg];
    pos = {MakeBoxes[#, fmt], "+"} & /@ pos;
    neg = {"-", MakeBoxes[#, fmt]} & /@  (-# & /@ neg);
    pos = Flatten[#, 1] & /@ {pos, neg};
    RowBox[
      Join @@ pos //. {a1___, "+", "-", a2___} :> {a1, "-", 
              a2} /.
             {a1__, "+"} :> {a1}]
    ]

Protect[Plus]

may produce the formating you want.

Regards
  Jens

Dana wrote:
> 
> Hello.  Using Mathematica 4.0  When one solves equations, I get a little frustrated
> when the answers come out as
> -A +B, when the answer looks much better as...
> B - A
> 
> I was hoping that the "LeafCount" would be smaller with my "preferred" way,
> but for some reason, it does not look like there is a difference.
> 
> In[19]:=
> {LeafCount[-B + D], LeafCount[D - B]}
> 
> Out[19]=
> {5, 5}
> 
> Here is a simple Solve, and it is a little embarrassing to say the answer is
> (-B + D)..Etc when  everyone else will have to change this  manually to (D -
> B)...ect.
> 
> Is there a way around this?  Again, I was hoping LeafCount would do the
> trick, but it apparently does not.
> Thank you in advance.  Dana.
> 
> FullSimplify[Solve[{Y == A*X + B, Y == C*X + D}, {X, Y}],
>   ComplexityFunction -> LeafCount]
> 
> {{X -> (-B + D)/(A - C), Y -> (-(B*C) + A*D)/(A - C)}}
> 
> Since I am new to Mathematica, I noticed the following...
> Internally, it looks like no difference.  It is just frustrating.
> 
> In[25]:=
> {FullForm[(-B + D)], FullForm[(D - B)]}
> 
> Out[25]=
> {Plus[Times[-1, B], D], Plus[Times[-1, B], D]}


  • Prev by Date: RE: A simple problem
  • Next by Date: Re: LeafCount Question
  • Previous by thread: Re: LeafCount Question
  • Next by thread: Re: LeafCount Question