[NumPy-Tickets] [NumPy] #1546: function prod fails over arrays without warm

NumPy Trac numpy-tickets@scipy....
Thu Jul 15 09:12:10 CDT 2010

#1546: function prod fails over arrays without warm
  Reporter:  mmarquez  |       Owner:  somebody     
      Type:  defect    |      Status:  closed       
  Priority:  normal    |   Milestone:  2.0.0        
 Component:  Other     |     Version:               
Resolution:  wontfix   |    Keywords:  function prod
Changes (by pv):

  * status:  new => closed
  * resolution:  => wontfix


 Numpy is intended for high-performance computing, and attempts to stay
 close to the hardware level. This includes following the integer
 arithmetic of current hardware. This is a conscious design decision.
 Possible discussion about changing this should be directed to the mailing

 Unlike for floating-point numbers, there is usually no hardware-level
 performance-efficient way to detect integer overflows. Numpy is the same
 boat as C and many other languages in this, and does not attempt to do
 trade safety over performance.

 The phrase "modular arithmetic" is perhaps a bit vague, probably should be
 corrected to "the modular hardware arithmetic". You can verify that the
 result coincides with modular arithmetic, exactly as claimed:
 def modulo(x):
     x -= 2**32 * (x//(2**32))
     while x > 2**31 - 1:
         x -= 2**32
     while x < -2**31:
         x += 2**32
     return x

 def fact(n):
     # Python arbitrary-precision integers
     return reduce(lambda a, b: a*b, range(2, long(n)+1))

 def fact2(n):
     return reduce(lambda a, b: modulo(a*b), range(2, long(n)+1))

 for i in range(2,50,5):
     print "Fact of i %d is %d == %d" % (i, modulo(fact(i)), fact2(i))

Ticket URL: <http://projects.scipy.org/numpy/ticket/1546#comment:2>
NumPy <http://projects.scipy.org/numpy>
My example project

More information about the NumPy-Tickets mailing list