# Count number of summands?

Consider

fun = a+b+c+d/e


If we want to get the number of summands, we can use Length[fun], which properly gives 5 in this case. However, if fun contains only a single term

fun = d/e


Then applying Length[fun] gives 2 since now it actually counts the number of terms in the multiplication instead of summation.

Therefore, Length is rather a hack than an actually reliable function to get the number of summands. Is there an efficient function that returns the number of summands reliably?

• How complicated are these expressions? Will there ever be nested summands, like Cos[a + b] + Sin[c + d]? And in this case, is the answer 2? – march Dec 3 '15 at 17:04
• @march Yes, and yes. – Kagaratsch Dec 3 '15 at 17:05
• Also, should expressions like (a + b)^2 be treated as having length 1 or length 3? (i.e should the expressions be expanded as much as possible before calculating a length?) – march Dec 3 '15 at 17:07
• @march Yes, we better assume that we want to count fun//Expand. Otherwise the summand counting function will probably get really slow. – Kagaratsch Dec 3 '15 at 17:09

cntSummands[expr_]:=If[Head[expr]===Plus,Length[expr],If[expr === 0, 0, 1]]