On Wed, Jan 25, 2012 at 12:03 AM, Charles R Harris <charlesr.harris@gmail.com> wrote:
On Tue, Jan 24, 2012 at 4:21 PM, Kathleen M Tacina <Kathleen.M.Tacina@nasa.gov> wrote:
I found something similar, with a very simple example.
On 64-bit linux, python 2.7.2, numpy development version:
In [22]: a = 4000*np.ones((1024,1024),dtype=np.float32)
In [23]: a.mean() Out[23]: 4034.16357421875
In [24]: np.version.full_version Out[24]: '2.0.0.dev-55472ca'
But, a Windows XP machine running python 2.7.2 with numpy 1.6.1 gives:
a = np.ones((1024,1024),dtype=np.float32) a.mean() 4000.0 np.version.full_version '1.6.1'
Yes, the results are platform/compiler dependent. The 32 bit platforms tend to use extended precision accumulators and the x87 instruction set. The 64 bit platforms tend to use sse2+. Different precisions, even though you might think they are the same.
just to confirm, same computer as before but the python 3.2 version is 64 bit, now I get the "Linux" result Python 3.2 (r32:88445, Feb 20 2011, 21:30:00) [MSC v.1500 64 bit (AMD64)] on win32
import numpy as np np.__version__ '1.5.1' a = 4000*np.ones((1024,1024),dtype=np.float32) a.mean() 4034.16357421875 a.mean(0).mean(0) 4000.0 a.mean(dtype=np.float64) 4000.0
Josef
<snip>
Chuck
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion