[Python-Dev] [numpy wishlist] Interpreter support for temporary elision in third-party classes (original) (raw)
Nathaniel Smith njs at pobox.com
Sat Jun 7 18:56:16 CEST 2014
- Previous message: [Python-Dev] [numpy wishlist] Interpreter support for temporary elision in third-party classes
- Next message: [Python-Dev] [numpy wishlist] Interpreter support for temporary elision in third-party classes
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Jun 7, 2014 at 1:37 AM, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
Julian Taylor wrote:
tpcanelide receives two objects and returns one of three values: * can work inplace, operation is associative * can work inplace but not associative * cannot work inplace Does it really need to be that complicated? Isn't it sufficient just to ask the object potentially being overwritten whether it's okay to overwrite it? I.e. a parameterless method returning a boolean.
For the numpy case, we really need to see all the operands, and know what the operation in question is. Consider
tmp1 = np.ones((3, 1)) tmp2 = np.ones((1, 3)) tmp1 + tmp2
which returns an array with shape (3, 3).
Both input arrays are temporaries, but neither of them can be stolen to use for the output array.
Or suppose 'a' is an array of integers and 'b' is an array of floats, then 'a + b' and 'a += b' have very different results (the former upcasts 'a' to float, the latter has to either downcast 'b' to int or raise an error). But the casting rules depend on the particular input types and the particular operation -- operations like & and << want to cast to int, < and > return bools, etc. So one really needs to know all the details of the operation before one can determine whether temporary elision is possible.
-n
-- Nathaniel J. Smith Postdoctoral researcher - Informatics - University of Edinburgh http://vorpus.org
- Previous message: [Python-Dev] [numpy wishlist] Interpreter support for temporary elision in third-party classes
- Next message: [Python-Dev] [numpy wishlist] Interpreter support for temporary elision in third-party classes
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]