[Numpy-discussion] Can numpy catch this error for me?

Nathaniel Peterson nathanielpeterson08 at gmail.com
Tue Apr 7 15:19:24 EDT 2009


import numpy as np
import operator
np.seterr(all='raise')
a=np.arange(1)+1
print(a.dtype)
# int32
for num in range(1,17):
    a=np.arange(num)+1
    b=np.multiply.reduce(a)
    print('%s! = %s'%(num,b))
#     c=reduce(operator.mul,range(1,num+1))
#     assert(b==c)

The code above outputs

int32
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 1932053504
14! = 1278945280
15! = 2004310016
16! = 2004189184

The results for 14! and above are wrong due to overflow of the int32 data
type.
Is there a way to setup numpy so it will raise an error when this occurs?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20090407/b83c4849/attachment.html>


More information about the NumPy-Discussion mailing list