> 
>>   
>> That is sort of the point of all this.  We are using 16 bit integers because 
>> we wanted to be as efficient as possible and didn't need anything larger.  
>> Note, that is what we changed the code to, I am just wondering if we are 
>> being too cautious.  The casting kwarg looks to be what I might want, though 
>> it isn't as clean as just writing an "*=" statement.
>> 
>> 
>> I think even there you will have an intermediate float array followed by a 
>> cast.
> 
> This is true, but it is done in chunks of a fixed size (controllable by a 
> thread-local variable or keyword argument to the ufunc).    
> 
> How difficult would it be to change in-place operations back to the "unsafe" 
> default?
> 
> Probably not too difficult, but I think it would be a mistake. What keyword 
> argument are you referring to? In the current case, I think what is wanted is 
> a scaling function that will actually do things in place. The matplotlib 
> folks would probably be happier with the result if they simply coded up a 
> couple of small Cython routines to do that.

http://docs.scipy.org/doc/numpy/reference/ufuncs.html#ufunc

In particular, the extobj keyword argument or the thread-local variable at 
umath.UFUNC_PYVALS_NAME

But, the problem is not just for matplotlib.   Matplotlib is showing a symptom 
of the problem of just changing the default casting mode in one release.    I 
think this is too stark of a change for a single minor release without some 
kind of glide path or warning system.

I think we need to change in-place multiplication back to "unsafe" and then put 
in the release notes that we are planning on changing this for 1.8.   It would 
be ideal if we could raise a warning when "unsafe" castings occur. 

-Travis


_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to