Re: Boolean 0/1 function

• To: MathGroup at yoda.physics.unc.edu
• Subject: Re: Boolean 0/1 function
• From: villegas
• Date: Tue, 3 Nov 92 08:07:55 CST

```Joseph McWilliams asked how to define a Boolean function which
returns 1 or 0 (instead of the Mathematica Booleans 'True' and
'False'):

>  I am trying to recursively define a piecewise function in the
>  following manner:
>
>  ========================
>  s=0
>  For[i=0,i<=(n-1), i++,
>  		s = s + f[y,x[i]]*Indicator[y,x[i],x[i+1]]
>     ]
>  ========================
>
>  I would like Indicator[y,x[i],x[i+1]] to equal 1 if x[i]<= y <=x[i+1]
>  and 0 otherwise.

You could define a function which maps the symbol 'True' to 1, and 'False'
to 0:

BooleanBit[True] = 1
BooleanBit[False] = 0

Then apply attach this function to any expression whose output you expect
to be 'True' or 'False'.  For instance, the inequality you wrote:

s=0
For[i=0,i<=(n-1), i++,
s = s + f[y,x[i]] * BooleanBit[ x[i] <= y <= x[i+1] ]
]

If you wished, you could define BooleanBit to return some flag for cases
where a test returns neither 'True' nor 'False', which could happen if

An alternative way to code this computation, more Mathematica-esque
in that it is structural and functional, could go something like:

(* Initialization of values *)

xlist = {x1, x2, ..., xn}  (where any 'xi' stands for the value of 'x[i]'

y = <whatever>   (the value you had for 'y')

(* Computation *)

fvalues = Map[f[y, #]&, Drop[xlist, -1] ]

consecutivepairs = Partition[xlist, 2, 1]

boolvalues = Apply[BooleanBit[#1 <= y <= #2]&, consecutivepairs, {1}]

total = Apply[Plus, fvalues * boolvalues]

The 'fvalues' could also be without using any pure functions, with a
structural command:

fvalues = Thread[ f[y, xlist] ]

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

Robby Villegas
Technical Support
Wolfram Research

```

• Prev by Date: New Educational Discount for MathTensor
• Next by Date: Editing Mma graphs on a Sun
• Previous by thread: New Educational Discount for MathTensor
• Next by thread: Editing Mma graphs on a Sun