Hi, On Wed, Apr 23, 2014 at 1:43 AM, Nathaniel Smith <n...@pobox.com> wrote: > On Wed, Apr 23, 2014 at 6:22 AM, Matthew Brett <matthew.br...@gmail.com> > wrote: >> Hi, >> >> I'm exploring Mingw-w64 for numpy building, and I've found it gives a >> slightly different answer for 'exp' than - say - gcc on OSX. >> >> The difference is of the order of the eps value for the output number >> (2 * eps for a result of ~2.0). >> >> Is accuracy somewhere specified for C functions like exp? Or is >> accuracy left as an implementation detail for the C library author? > > C99 says (sec 5.2.4.2.2) that "The accuracy of the floating point > operations ... and of the library functions in <math.h> and > <complex.h> that return floating point results is implemenetation > defined. The implementation may state that the accuracy is unknown." > (This last sentence is basically saying that with regard to some > higher up clauses that required all conforming implementations to > document this stuff, saying "eh, who knows" counts as documenting it. > Hooray for standards!) > > Presumably the accuracy in this case is a function of the C library > anyway, not the compiler?
Mingw-w64 implementation is in assembly: http://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/math/exp.def.h > Numpy has its own implementations for a > bunch of the math functions, and it's been unclear in the past whether > numpy or the libc implementations were better in any particular case. I only investigated this particular value, in which case it looked as though the OSX value was closer to the exact value (via sympy.mpmath) - by ~1 unit-at-the-last-place. This was causing a divergence in the powell optimization path and therefore a single scipy test failure. I haven't investigated further - was wondering what investigation I should do, more than running the numpy / scipy test suites. Cheers, Matthew _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion