MathGroup Archive 2000

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

Search the Archive

Re: Conditionals with multiple tests?

  • To: mathgroup at
  • Subject: [mg24136] Re: [mg24104] Conditionals with multiple tests?
  • From: Matt.Johnson at
  • Date: Wed, 28 Jun 2000 02:11:52 -0400 (EDT)
  • Sender: owner-wri-mathgroup at

This automatically assigns the values to your variables depending on the
relationship between a, b, and c:

f[a_, b_, c_] := {p1, p2, p3} = Which[
      a < b < c, {value11,value12, value13},
      a > b > c, {value21, vlaue22, value23},
      True, {value31, value32, value33}]


"A. E. Siegman" <siegman at> on 06/26/2000 10:51:57 PM

Subject: [mg24136]  [mg24104] Conditionals with multiple tests?

Let's say I want to assign values to three variables p1, p2, p3 that
will depend on five different (and nonoverlapping) tests test1 to test 5.

One way to do this is obviously

      p1 = Which[test1, value11, test2, value12, . . . ]
      p2 = Which[test1, value21, test2, value22, . . . ]
      p3 = Which[test1, value31, test2, value32, . . . ]

But a more compact and (for me anyway) neater approach is

   Which[test1, p1=value11; p2=value21; p3=value31,
              test2, p1=value21; p2=value22; p3=value32,
              test3, . . .
              test4, . . .
              test5, . . . ]

Is this form legal?  That is, can one use:

      Which[test1, expr1, test2, expr2, . . .]

where expr1, expr2, . . . may be compound expressions?

(I would say that The Mathematica Book is not at all clear on this
point, as regards either Which[] or If[].)

If not, is there a legal way to implement the basic objective?

  • Prev by Date: Re: Output cell linebreaks
  • Next by Date: RE: Conditionals with multiple tests?
  • Previous by thread: Conditionals with multiple tests?
  • Next by thread: RE: Conditionals with multiple tests?