<br>import numpy as np<br>import operator<br>np.seterr(all=&#39;raise&#39;)<br>a=np.arange(1)+1<br>print(a.dtype)<br># int32<br>for num in range(1,17):<br>    a=np.arange(num)+1<br>    b=np.multiply.reduce(a)<br>    print(&#39;%s! = %s&#39;%(num,b)) <br>
#     c=reduce(operator.mul,range(1,num+1))<br>#     assert(b==c)<br><br>The code above outputs<br><br>int32<br>1! = 1<br>2! = 2<br>3! = 6<br>4! = 24<br>5! = 120<br>6! = 720<br>7! = 5040<br>8! = 40320<br>9! = 362880<br>10! = 3628800<br>
11! = 39916800<br>12! = 479001600<br>13! = 1932053504<br>14! = 1278945280<br>15! = 2004310016<br>16! = 2004189184<br><br>The results for 14! and above are wrong due to overflow of the int32 data type.<br>Is there a way to setup numpy so it will raise an error when this occurs?<br>
<br>