Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Possible Duplicate:
Determine whether some expression contains a given symbol

Let's say I have some expression:

sample = {1, 1/q, f[m]}

And I want to check it if it has the symbol m in it.

My question: Is there a clean or fast way of checking if m is in the equation?


What I came up with so far:

Do[StringFreeQ[ToString[sample], "m"], {i, 300}] // AbsoluteTiming
(* {0.0120007, Null} *)

and

Do[(sample /. m -> Unique[]) === (sample /. m -> Unique[]), {i, 300}] // AbsoluteTiming
(* {0.0100005, Null} *)

These solutions work, but I feel like there might be a faster, functional way of doing this.

share|improve this question
    
What about FreeQ? –  Rojo Sep 27 '12 at 3:51
    
FreeQ - but thats too short for an answer ;-) –  user21 Sep 27 '12 at 3:52
    
@Rojo Don't MemberQ and FreeQ only check on the first level? I checked this for MemberQ before. –  VF1 Sep 27 '12 at 3:52
    
No, FreeQ checks all levels by default. Both can take a level specification anyway –  Rojo Sep 27 '12 at 3:53
    
Counterexample: FreeQ[{1, 1/q, D[m, t]}, m] –  VF1 Sep 27 '12 at 3:53
show 2 more comments

marked as duplicate by rm -rf Sep 27 '12 at 3:59

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1 Answer

up vote 0 down vote accepted

How about:

sample = {1, 1/q, ff[f[m]]};
FreeQ[sample, m]
(* False *)
share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.