Binary ufuncs: add, subtract, multiply

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Binary ufuncs: add, subtract, multiply

Charles R Harris
Is it appropriate to produce a double for mixed 'Q','b' types? Or should we raise a warning instead. There is a loss of precision going to doubles anyway, and that will also often be the case for the lower precision types when multiplying. I would also feel more comfortable if the output types were symmetric in the underlying c-type, even though l,i are the same precision on my machine. That might make things easier for folks using c-types or trying to embed numpy.

add
not symmetric
in1       ?  , b  , B  , h  , H  , i  , I  , l  , L  , q  , Q  , f  , d  , g  , F  , D  , G  ,
        --------------------------------------------------------------------------------------
in2  ?  | ?  , b  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  b  | b  , b  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , F  , D  , G  ,
in2  B  | B  , h  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  h  | h  , h  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , F  , D  , G  ,
in2  H  | H  , i  , H  , i  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  i  | i  , i  , i  , i  , i  , i  , q  , i  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  I  | I  , q  , I  , q  , I  , q  , I  , q  , I  , q  , Q  , d  , d  , g  , D  , D  , G  ,
in2  l  | l  , l  , l  , l  , l  , l  , q  , l  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  L  | L  , q  , L  , q  , L  , q  , L  , q  , L  , q  , Q  , d  , d  , g  , D  , D  , G  ,
in2  q  | q  , q  , q  , q  , q  , q  , q  , q  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  Q  | Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , d  , g  , D  , D  , G  ,
in2  f  | f  , f  , f  , f  , f  , d  , d  , d  , d  , d  , d  , f  , d  , g  , F  , D  , G  ,
in2  d  | d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , g  , D  , D  , G  ,
in2  g  | g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , G  , G  , G  ,
in2  F  | F  , F  , F  , F  , F  , D  , D  , D  , D  , D  , D  , F  , D  , G  , F  , D  , G  ,
in2  D  | D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , G  , D  , D  , G  ,
in2  G  | G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  ,

subtract
not symmetric
in1       ?  , b  , B  , h  , H  , i  , I  , l  , L  , q  , Q  , f  , d  , g  , F  , D  , G  ,
        --------------------------------------------------------------------------------------
in2  ?  | ?  , b  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  b  | b  , b  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , F  , D  , G  ,
in2  B  | B  , h  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  h  | h  , h  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , F  , D  , G  ,
in2  H  | H  , i  , H  , i  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  i  | i  , i  , i  , i  , i  , i  , q  , i  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  I  | I  , q  , I  , q  , I  , q  , I  , q  , I  , q  , Q  , d  , d  , g  , D  , D  , G  ,
in2  l  | l  , l  , l  , l  , l  , l  , q  , l  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  L  | L  , q  , L  , q  , L  , q  , L  , q  , L  , q  , Q  , d  , d  , g  , D  , D  , G  ,
in2  q  | q  , q  , q  , q  , q  , q  , q  , q  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  Q  | Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , d  , g  , D  , D  , G  ,
in2  f  | f  , f  , f  , f  , f  , d  , d  , d  , d  , d  , d  , f  , d  , g  , F  , D  , G  ,
in2  d  | d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , g  , D  , D  , G  ,
in2  g  | g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , G  , G  , G  ,
in2  F  | F  , F  , F  , F  , F  , D  , D  , D  , D  , D  , D  , F  , D  , G  , F  , D  , G  ,
in2  D  | D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , G  , D  , D  , G  ,
in2  G  | G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  ,

multiply
not symmetric
in1       ?  , b  , B  , h  , H  , i  , I  , l  , L  , q  , Q  , f  , d  , g  , F  , D  , G  ,
        --------------------------------------------------------------------------------------
in2  ?  | ?  , b  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  b  | b  , b  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , F  , D  , G  ,
in2  B  | B  , h  , B  , h  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  h  | h  , h  , h  , h  , i  , i  , q  , i  , q  , q  , d  , f  , d  , g  , F  , D  , G  ,
in2  H  | H  , i  , H  , i  , H  , i  , I  , i  , I  , q  , Q  , f  , d  , g  , F  , D  , G  ,
in2  i  | i  , i  , i  , i  , i  , i  , q  , i  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  I  | I  , q  , I  , q  , I  , q  , I  , q  , I  , q  , Q  , d  , d  , g  , D  , D  , G  ,
in2  l  | l  , l  , l  , l  , l  , l  , q  , l  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  L  | L  , q  , L  , q  , L  , q  , L  , q  , L  , q  , Q  , d  , d  , g  , D  , D  , G  ,
in2  q  | q  , q  , q  , q  , q  , q  , q  , q  , q  , q  , d  , d  , d  , g  , D  , D  , G  ,
in2  Q  | Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , Q  , d  , d  , g  , D  , D  , G  ,
in2  f  | f  , f  , f  , f  , f  , d  , d  , d  , d  , d  , d  , f  , d  , g  , F  , D  , G  ,
in2  d  | d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , d  , g  , D  , D  , G  ,
in2  g  | g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , g  , G  , G  , G  ,
in2  F  | F  , F  , F  , F  , F  , D  , D  , D  , D  , D  , D  , F  , D  , G  , F  , D  , G  ,
in2  D  | D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , D  , G  , D  , D  , G  ,
in2  G  | G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  , G  ,

Chuck

_______________________________________________
Numpy-discussion mailing list
[hidden email]
http://projects.scipy.org/mailman/listinfo/numpy-discussion
Reply | Threaded
Open this post in threaded view
|

Re: Binary ufuncs: add, subtract, multiply

Stéfan van der Walt
2008/5/27 Charles R Harris <[hidden email]>:
> Is it appropriate to produce a double for mixed 'Q','b' types? Or should we
> raise a warning instead. There is a loss of precision going to doubles
> anyway, and that will also often be the case for the lower precision types
> when multiplying.

I don't think we should raise a warning by default.  If the result is
'Q', then overflow occurs in the minority of cases.

> I would also feel more comfortable if the output types
> were symmetric in the underlying c-type, even though l,i are the same
> precision on my machine.
> That might make things easier for folks using
> c-types or trying to embed numpy.

I agree.

Regards
Stéfan
_______________________________________________
Numpy-discussion mailing list
[hidden email]
http://projects.scipy.org/mailman/listinfo/numpy-discussion