MathGroup Archive 1999

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

Search the Archive

Integrate with If and Which

It has been pointed out before in this newsgroup that Mathematica integrates
some conditional functions but not others.  For example, consider the
following text translation of a notebook from version 4:

In[1]:= f[u_] := If[u < 0, u, u^2];
        g[u_] := Which[u < 0, u, u >= 0, u^2];

In[3]:= Integrate[f[u], {u, -1, 1}]

Out[3]= -(1/6)

In[4]:= Integrate[g[u], {u, -1, 1}]

Out[4]= Integrate[Which[u < 0, u, u >= 0, u^2], {u, -1, 1}]

Functions f[u] and g[u] are mathematically identical integrands, but
Mathematica integrates only the former.  You can force numerical evaluation
of the latter by wrapping it in N[].

My question is, "What is the fundamental difference between If and Which
that makes Mathematica treat them differently?"  As I said above, this
Mathematica "feature" has been pointed out before and ways to avoid it have
been described, but I don't recall a post giving the reason for the
behavior.  I guess I am just curious to know if there is a logical principle



L. Dwynn Lafleur
Professor of Physics
University of Louisiana at Lafayette
lafleur at

  • Prev by Date: Syntax error on opening notebook
  • Next by Date: NonlinearRegress and numerical function
  • Previous by thread: Syntax error on opening notebook
  • Next by thread: Re: Integrate with If and Which