[Numpy-discussion] Array scalar math ideas
Travis Oliphant
oliphant at ee.byu.edu
Thu Mar 16 16:51:04 CST 2006
I'm starting to write the remaining array scalar math tables (so that we
can speed up scalar*scalar arithmetic).
Right now, all operations involving scalars are converted to 0-d arrays
- use the ufunc machinery - and are converted back to scalars after the
operation.
The scalarmathmodule.c.src file is being written to fix this and insert
type-appropriate operations for each of the (number-type) array scalars.
My general strategy for the binary operations is going to be the
following. I wanted to bounce it off the list to see what other ideas
people had:
Code outline:
Convert inputs so that self is the array scalar of some type and other
is the other object
if (other is an array scalar of the same data-type as self)
arg3 = other
else if (other is an array scalar of a different data-type as self)
arg3 = convert_other_to_self_data_type(other)
else if (other is a Python scalar)
arg3 = convert_Python_scalar_to_array_scalar(other)
else if (other is a 0-d array)
arg3 = convert_other_to_self_data_type_from_0-d_array(other)
else
return (use ufunc to calculate result).
return (operation using self and arg3)
if an error condition is encountered, then only at that point, the
proper way to handle it will be determined by looking in the local /
global / builtin scope for the error-handling variable.
Tthis avoids the overhead of looking up what to do to the case of an
error actually occurring --- I need to change the ufuncobject.c code to
also do this and save the overhead there too --- right now what to do is
looked up every time, rather than waiting until an error is actually
detected.)
What do people think?
-Travis
More information about the Numpy-discussion
mailing list