> On Tue, Apr 7, 2009 at 14:19, Nathaniel Peterson > <nathanielpeterso...@gmail.com> wrote: > > > > 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? > > No, sorry.
Of course one can get the int behaviour by specifying dtype=object. (This way you get the longer int behaviour and the *lack of speed* to go with it.) for num in range(1,17): a=np.arange(num, dtype=object)+1 b=np.multiply.reduce(a) print('%s! = %s'%(num,b)) 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! = 6227020800 14! = 87178291200 15! = 1307674368000 16! = 20922789888000 matt -- This message and any attachments are confidential, proprietary, and may be privileged. If this message was misdirected, Barclays Global Investors (BGI) does not waive any confidentiality or privilege. If you are not the intended recipient, please notify us immediately and destroy the message without disclosing its contents to anyone. Any distribution, use or copying of this e-mail or the information it contains by other than an intended recipient is unauthorized. The views and opinions expressed in this e-mail message are the author's own and may not reflect the views and opinions of BGI, unless the author is authorized by BGI to express such views or opinions on its behalf. All email sent to or from this address is subject to electronic storage and review by BGI. Although BGI operates anti-virus programs, it does not accept responsibility for any damage whatsoever caused by viruses being passed. _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion