Re: LeafCount

• To: mathgroup at smc.vnet.net
• Subject: [mg25958] Re: LeafCount
• From: "Allan Hayes" <hay at haystack.demon.co.uk>
• Date: Tue, 14 Nov 2000 03:46:52 -0500 (EST)
• References: <8ug9h6\$idn@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Will

?LeafCount

"LeafCount[expr] gives the total number of indivisible subexpressions in \
expr."

So the following seems correct to me, since the heads Plus and Times must be
counted.

Plus[x, Times[y, z]] // LeafCount

5

Re:

myLeafCount[expr_] :=
Length[Flatten[Hold[expr] /. x_ :> List /; Head[x] == Symbol]]

The Hold may not be doing what you want, since expr will have been evaluated
before being passed. Solution: use attribute HoldAll (or Hold First).
Also, why not x_Symbol.

SetAttributes[myLeafCount2, HoldAll]

myLeafCount2[expr_] :=
Length[Flatten[Hold[expr] /. x_ Symbol :> List ]]

However these are technicalities.
The following seem to have a bearing on the difference.

Level[Plus[2, Times[y, z]], {-1}]

{2, y, z}

Level[Plus[2, Times[y, z]], {-1}, Heads -> True]

{Plus, 2, Times, y, z}

--
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565

"Will Self" <wself at msubillings.edu> wrote in message
news:8ug9h6\$idn at smc.vnet.net...
> In the expression Plus[x, Times[y, z]] I would say that there are 3
> terminal nodes (leaves), x, y, and z.  The built-in function LeafCount,
> which purports to count the number of terminal nodes in the expression
> tree, actually counts *all* the nodes.  So
> LeafCount[Plus[x, Times[y, z]]]  --->  5
> Am I missing something here, or is it true that LeafCount is wrongly
> described in the Mathematica Book?
>
> Here is mine:
>
> myLeafCount[expr_]:=
>   Length[Flatten[Hold[expr] /. x_ :> List /; Head[x] == Symbol]]
>
> Does anyone see anything wrong with this?  Or have another suggestion?
>
> Will Self
> private email replies appreciated
>
>
> Sent via Deja.com http://www.deja.com/
>

```

• Prev by Date: True 64 Unix and Mathematica
• Next by Date: OptimizeExpression further enhanced?
• Previous by thread: Re: LeafCount
• Next by thread: How to find Complex roots !!