[SciPy-user] Arithmetic Errors

Travis Oliphant oliphant.travis at ieee.org
Mon Jul 17 20:10:36 EDT 2006


John Lawless wrote:
> Travis,
>
>      Thanks!
>
> 1).  I haven't found any documentation on dtype='O'.  (I purchased your
>      trelgol book but it hasn't arrived yet.)  Does 'O' guarantee no
>      wrong answers?
>   
The object data-type uses Python objects instead of low-level C-types 
for the calculations.  So, it gives the same calculations that Python 
would do (but of course it's much slower).
> 2).  My actual code was more complex than the example I posted.  It was
>      giving correct answers until I increased the dataset size.  Then,
>      luckily, the result became obviously wrong.  I can go through a
>      code and try to coerce everything to double but, when debugging a
>      large code, how can one ever be sure that all types are coerced
>      correctly if no errors are generated?
>   
NumPy uses c data-types for calculations.  It is therefore, *much* 
faster, but you have to take precautions about overflowing on integer 
operations.

> 3).  AFAIK, checking for overflows should take no CPU time whatsoever
>      unless an exception is actually generated. 
This is true for floating point operations, but you were doing integer 
multiplication.    There is no support for hardware multiply overflow in 
NumPy (is there even such a thing?). 

Python checks for overflow on integer arithmetic by doing some 
additional calculations.    It would be possible to add slower, integer 
over-flow checking ufuncs to NumPy if this was desired and you could 
replace the standard non-checking functions pretty easily.


-Travis






More information about the SciPy-User mailing list