On Mon, Jan 24, 2011 at 1:13 PM, John Salvatier <jsalv...@u.washington.edu>wrote:
> Looks like this is related to issue 41 ( > http://code.google.com/p/numexpr/issues/detail?id=41&can=1). That might not be the same issue. You can fix the "randomness" by setting the number of threads to 1, as in input [6] here: In [1]: import numexpr as ne In [2]: x = zeros(8192)+0.01 In [3]: ne.evaluate('sum(x, axis=0)') Out[3]: array(71.119999999999479) In [4]: ne.evaluate('sum(x, axis=0)') Out[4]: array(81.920000000005004) In [5]: ne.evaluate('sum(x, axis=0)') Out[5]: array(68.379999999998077) In [6]: ne.set_num_threads(1) In [7]: ne.evaluate('sum(x, axis=0)') Out[7]: array(81.920000000005004) In [8]: ne.evaluate('sum(x, axis=0)') Out[8]: array(81.920000000005004) In [9]: ne.evaluate('sum(x, axis=0)') Out[9]: array(81.920000000005004) Warren > > > On Mon, Jan 24, 2011 at 10:29 AM, John Salvatier < > jsalv...@u.washington.edu> wrote: > >> I also get the same issue with prod() >> >> >> On Mon, Jan 24, 2011 at 10:23 AM, Warren Weckesser < >> warren.weckes...@enthought.com> wrote: >> >>> I see the same "randomness", but at a different array size: >>> >>> In [23]: numpy.__version__ >>> Out[23]: '1.4.0' >>> >>> In [24]: import numexpr >>> >>> In [25]: numexpr.__version__ >>> Out[25]: '1.4.1' >>> >>> In [26]: x = zeros(8192)+0.01 >>> >>> In [27]: print evaluate('sum(x, axis=0)') >>> 72.97 >>> >>> In [28]: print evaluate('sum(x, axis=0)') >>> 66.92 >>> >>> In [29]: print evaluate('sum(x, axis=0)') >>> 67.9 >>> >>> In [30]: x = zeros(8193)+0.01 >>> >>> In [31]: print evaluate('sum(x, axis=0)') >>> 72.63 >>> >>> In [32]: print evaluate('sum(x, axis=0)') >>> 71.74 >>> >>> In [33]: print evaluate('sum(x, axis=0)') >>> 81.93 >>> >>> In [34]: x = zeros(8191)+0.01 >>> >>> In [35]: print evaluate('sum(x, axis=0)') >>> 81.91 >>> >>> In [36]: print evaluate('sum(x, axis=0)') >>> 81.91 >>> >>> >>> Warren >>> >>> >>> >>> On Mon, Jan 24, 2011 at 12:19 PM, John Salvatier < >>> jsalv...@u.washington.edu> wrote: >>> >>>> Forgot to mention that I am using numexpr 1.4.1 and numpy 1.5.1 >>>> >>>> >>>> On Mon, Jan 24, 2011 at 9:47 AM, John Salvatier < >>>> jsalv...@u.washington.edu> wrote: >>>> >>>>> Hello, >>>>> >>>>> I have discovered a strange bug with numexpr. numexpr.evaluate gives >>>>> randomized results on arrays larger than 2047 elements. The following >>>>> program demonstrates this: >>>>> >>>>> from numpy import * >>>>> from numexpr import evaluate >>>>> >>>>> def func(x): >>>>> >>>>> return evaluate("sum(x, axis = 0)") >>>>> >>>>> >>>>> x = zeros(2048)+.01 >>>>> >>>>> print evaluate("sum(x, axis = 0)") >>>>> print evaluate("sum(x, axis = 0)") >>>>> >>>>> For me this prints different results each time, for example: >>>>> >>>>> 11.67 >>>>> 14.84 >>>>> >>>>> If we set the size to 2047 I get consistent results. >>>>> >>>>> 20.47 >>>>> 20.47 >>>>> >>>>> Interestingly, if I do not add .01 to x, it consistently sums to 0. >>>> >>>> >>>> >>>> _______________________________________________ >>>> NumPy-Discussion mailing list >>>> NumPy-Discussion@scipy.org >>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion >>>> >>>> >>> >>> _______________________________________________ >>> NumPy-Discussion mailing list >>> NumPy-Discussion@scipy.org >>> http://mail.scipy.org/mailman/listinfo/numpy-discussion >>> >>> >> > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion