MathGroup Archive 2005

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

Search the Archive

Re: Problems with easy simplifications


Check the Attributes of the If statement.

{HoldRest, Protected}

The second and third arguments are not evaluated. Why is this? Because
sometimes the not choosen branch might be an invalid expression that would
lead to an error message. Only the choosen branch is evaluated. In your
example Mathematica can't determine if x < a so it chooses none of the
branches and none of them are evaluated.

You could overcome this by changing your definition.

H[x_, a_, b_] := If[x < a, Evaluate[ a + b], Evaluate[a - b]]

H[x, 0, 0]
If[x < 0, 0, 0]

David Park
djmp at

From: Antonio González [mailto:gonferh2o at]
To: mathgroup at

I have found some weird behaviors of Mathematica (5.0) related to the
simplifications of easy expressions.

Take, for instance the function

   H[x_, a_, b_] = If[x < a, a + b, a - b]

If I try now to evaluate


the result

  If[x < 0, 0 + 0, 0 - 0]

(the values of a and b are irrelevat, a similar result is obtained, for
instance, with a=1, b= 2, or any integer, real or complex values). I
cannot force (at least in a simple way) Mathematica to make the addition
or the substraction. The action of Simplify or FullSimplify leaves the
expression unchanged while a Map of Simplify

   MapAll[Simplify, H[x, 0, 0]]


   If[x < 0,
     Simplify[Simplify[0] + Simplify[0]], Simplify[Simplify[
       0] + Simplify[Simplify[-1] Simplify[0]]]]

Something even worse happens if a use values already defined. For instance

   c = 0; d = 0; H[x_] = If[x < c, c + d, c - d]


  If[x < 0, c + d, c - d]

In this case, the addition is not necessary.

   c = 0; d = 0; H[x_] = If[x < c, c, d]

leads to

  If[x < 0, c, d]

Similar problems arise using the function Which.

Any explanation or help with this malfunction would be welcome.



(Eliminar el agua para responder por e-mail - Remove water to reply by

  • Prev by Date: Re: Problems with easy simplifications
  • Next by Date: Re: Problems with easy simplifications
  • Previous by thread: Re: Problems with easy simplifications
  • Next by thread: Re: Inverse error function for arguments close to 1