Re: Boolean 0/1 function -- Conditional definitions and Thread

• To: mathgroup <mathgroup at yoda.physics.unc.edu>
• Subject: Re: Boolean 0/1 function -- Conditional definitions and Thread
• From: HAY at leicester.ac.uk
• Date: Thu, 5 NOV 92 15:38:27 GMT

```Following up Robby Villegas's observation about using Thread here is a a little
number featuring it. Many variations are possible.

Let

xlist = {a,b,c,d};

{a <= y <= b, b <= y <= c, c <= y <= d}

{f[y, a], f[y, b], f[y, c]}

{If[a <= y <= b, f[y, a], 0], If[b <= y <= c, f[y, b], 0],
If[c <= y <= d, f[y, c], 0]}

Plus@@%

If[a <= y <= b, f[y, a], 0] + If[b <= y <= c, f[y, b], 0] +
If[c <= y <= d, f[y, c], 0]

The construction  If@@{....} is needed since If has the attribute HoldAll; so we
get

If[condns, fvalues, 0]

Re Robby's warning

> fvalues = Thread[ f[y, xlist] ]

> as long as 'y' isn't a list itself (if it's a number, say).

We can get round this problem by using the extra slots in  Thread

Thread[ f[{1,4}, xlist], List, -1 ]

{f[{1, 4}, a], f[{1, 4}, b], f[{1, 4}, c], f[{1, 4}, d]}

Allan Hayes
hay at leicester.ac.uk

```