ComplexityFunction affects set of transformations tried by Simplify

• To: mathgroup at smc.vnet.net
• Subject: [mg71492] ComplexityFunction affects set of transformations tried by Simplify
• From: "Schochet" <schochet at netvision.net.il>
• Date: Mon, 20 Nov 2006 18:11:55 -0500 (EST)

```Oops! I originally sent this as a reply to an unrelated thread.

As part of a large computation, I wanted Mathematica to
simplify expressions of the form   Sqrt[c + d/k](c k + d)2,
where k is positive, to   (c k + d)^(5/2)/Sqrt[k]

Note that Mathematica knows that the two expressions
are equivalent:

In[1]:=expr1 = Sqrt[c + d/k](c k + d)2;
expr2 = (c k + d)^(5/2)/Sqrt[k];
Simplify[expr1 == expr2, k > 0]

Out[1]=True

Furthermore, both the LeafCount and the Depth of expr2
are smaller:

In[2]:={LeafCount[#], Depth[#]} & /@ {expr1, expr2}

Out[2]={{19, 6}, {15, 5}}

However Simplify with LeafCount as the ComplexityFunction
leaves expr1 unchanged, while Simplify with Depth as the
ComplexityFunction changes expr1 to expr2:

In[3]:=Simplify[expr1, k > 0,
ComplexityFunction -> LeafCount] // InputForm

Out[3]//InputForm=Sqrt[c + d/k]*(d + c*k)2

In[4]:=Simplify[expr1, k > 0,
ComplexityFunction -> Depth] // InputForm

Out[4]//InputForm=(d + c*k)^(5/2)/Sqrt[k]

What explains this difference in behavior? Changing the order
of calculations 3 and 4 has no effect.  Since  calculation 2
shows that the form expr2 would be preferred if it were tried,
while calculation 4 shows that the form expr2 is tried when
the ComplexityFunction is Depth, it seems that the choice of
ComplexityFunction affects the set of transformations tried
by Simplify.

For the record, I am using \$Version 5.2 for Linux (June 20, 2005)

Steve

```

• Prev by Date: Re: returning variable number of arguments from a Module[ ]
• Next by Date: Re: Why does this lead to an answer with complex numbers?
• Previous by thread: Re: Send graphics to file AND/OR to notebook with one DisplayFunction
• Next by thread: Re: ComplexityFunction affects set of transformations tried by Simplify