<br><br><div class="gmail_quote">On Sat, May 24, 2008 at 8:40 PM, Robert Kern &lt;<a href="mailto:robert.kern@gmail.com">robert.kern@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Sat, May 24, 2008 at 9:37 PM, Charles R Harris<br>
<div><div></div><div class="Wj3C7c">&lt;<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Sat, May 24, 2008 at 8:25 PM, Robert Kern &lt;<a href="mailto:robert.kern@gmail.com">robert.kern@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Sat, May 24, 2008 at 9:09 PM, Charles R Harris<br>
&gt;&gt; &lt;<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Sat, May 24, 2008 at 7:47 PM, Robert Kern &lt;<a href="mailto:robert.kern@gmail.com">robert.kern@gmail.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Sat, May 24, 2008 at 8:31 PM, Charles R Harris<br>
&gt;&gt; &gt;&gt; &lt;<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Hi All,<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I&#39;m writing tests for ufuncs and turned up some oddities:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; In [4]: degrees(True)<br>
&gt;&gt; &gt;&gt; &gt; Out[4]: 57.29578<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; In [5]: radians(True)<br>
&gt;&gt; &gt;&gt; &gt; Out[5]: 0.017453292<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; In [6]: sin(True)<br>
&gt;&gt; &gt;&gt; &gt; Out[6]: 0.84147096<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Do we want numeric functions to apply to booleans?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I don&#39;t see a good reason to prevent it. They are just 0 and 1 under<br>
&gt;&gt; &gt;&gt; the covers and behave like it everywhere else (e.g. True + True == 2<br>
&gt;&gt; &gt;&gt; and the very useful boolean_mask.sum()).<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; True + True == 1<br>
&gt;&gt;<br>
&gt;&gt; No, True + True == 2. Try it. We might have made boolean arrays behave<br>
&gt;&gt; differently than Python bool objects, but that&#39;s not what I wrote.<br>
&gt;<br>
&gt; Robert, the C code in the inner loop is generated with<br>
&gt;<br>
&gt; /**begin repeat<br>
&gt;<br>
&gt; &nbsp; &nbsp;#TYPE=(BOOL,<br>
&gt; BYTE,UBYTE,SHORT,USHORT,INT,UINT,LONG,ULONG,LONGLONG,ULONGLONG,FLOAT,DOUBLE,LONGDOUBLE)*2#<br>
&gt; &nbsp; &nbsp;#OP=||, +*13, ^, -*13#<br>
&gt; &nbsp; &nbsp;#kind=add*14, subtract*14#<br>
&gt; &nbsp; &nbsp;#typ=(Bool, byte, ubyte, short, ushort, int, uint, long, ulong, longlong,<br>
&gt; ulonglong, float, double, longdouble)*2#<br>
&gt; */<br>
&gt;<br>
&gt; Note that || is not the same as +. Also note that subtract is implemented as<br>
&gt; xor.<br>
<br>
</div></div>I&#39;m not sure why you&#39;re showing me numpy C code. I am talking about<br>
the Python bools True and False.</blockquote><div>&nbsp;</div><div>Because I&#39;m talking about ufuncs. The original question was about ufuncs and, since array booleans are not treated as numbers for ordinary arithmetic, the question was when *do* we treat them as numbers. I&#39;m a bugger for consistency and booleans aren&#39;t consistent.<br>
<br>Chuck<br></div><br></div><br>