On Fri, 2013-12-06 at 15:30 -0500, josef.p...@gmail.com wrote: > On Fri, Dec 6, 2013 at 2:59 PM, Nathaniel Smith <n...@pobox.com> wrote: > > On Fri, Dec 6, 2013 at 11:55 AM, Alexander Belopolsky <ndar...@mac.com> > > wrote: > >> > >> > >> > >> On Fri, Dec 6, 2013 at 1:46 PM, Alan G Isaac <alan.is...@gmail.com> wrote: > >>> > >>> On 12/6/2013 1:35 PM, josef.p...@gmail.com wrote: > >>> > unary versus binary minus > >>> > >>> Oh right; I consider binary `-` broken for > >>> Boolean arrays. (Sorry Alexander; I did not > >>> see your entire issue.) > >>> > >>> > >>> > I'd rather write ~ than unary - if that's what it is. > >>> > >>> I agree. So I have no objection to elimination > >>> of the `-`. > >> > >> > >> It looks like we are close to reaching a consensus on the following points: > >> > >> 1. * is well-defined on boolean arrays and may be used in preference of & > >> in > >> code that is designed to handle 1s and 0s of any dtype in addition to > >> booleans. > >> > >> 2. + is defined consistently with * and the only issue is the absence of > >> additive inverse. This is not a problem as long as presence of - does not > >> suggest otherwise. > >> > >> 3. binary and unary minus should be deprecated because its use in > >> expressions where variables can be either boolean or numeric would lead to > >> subtle bugs. For example -x*y would produce different results from -(x*y) > >> depending on whether x is boolean or not. In all situations, ^ is > >> preferable to binary - and ~ is preferable to unary -. > >> > >> 4. changing boolean arithmetics to auto-promotion to int is precluded by a > >> significant use-case of boolean matrices. > > > > +1 > > +0.5 > (I would still prefer a different binary minus, but it would be > inconsistent with a logical unary minus that negates.) >
The question is if the current xor behaviour can make sense? It doesn't seem to make much sense mathematically? Which only leaves that `abs(x - y)` is actually what a (python) programmer might expect. I think I would like to deprecate at least the unary one. The ~ kind of behaviour just doesn't fit as far as I can see. > 5. `/` is useless > 6 `**` follows from 1. Both of these are currently not defined, they will just cause upcast to int8. I suppose it would be possible to deprecate that upcast though (same goes for most all other ufuncs/operators in principle). > > Josef > > > > > > -- > > Nathaniel J. Smith > > Postdoctoral researcher - Informatics - University of Edinburgh > > http://vorpus.org > > _______________________________________________ > > NumPy-Discussion mailing list > > NumPy-Discussion@scipy.org > > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion