[Numpy-discussion] Slightly off-topic - accuracy of C exp function?
matthew.brett at gmail.com
Wed Apr 23 14:59:23 EDT 2014
On Wed, Apr 23, 2014 at 1:43 AM, Nathaniel Smith <njs at pobox.com> wrote:
> On Wed, Apr 23, 2014 at 6:22 AM, Matthew Brett <matthew.brett at gmail.com> wrote:
>> 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 18.104.22.168.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:
> 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.
More information about the NumPy-Discussion