Hi,

On Tue, Apr 29, 2014 at 2:08 PM, Kai Tietz <ktiet...@googlemail.com> wrote:
> 2014-04-29 21:16 GMT+02:00 Matthew Brett <matthew.br...@gmail.com>:
>> Hi,
>>
>> I'm sorry to ask this question without more information, but I'm
>> hoping you can give me an idea what more information I need.
>>
>> Some of us got very interested in using Mingw-w64 as the standard
>> compiler for Python numerical tools such as numpy and scipy:
>>
>> https://github.com/numpy/numpy/wiki
>> http://www.mail-archive.com/numpy-discussion@scipy.org/msg44967.html
>>
>> One question that came up was the accuracy of the mingw exp function:
>>
>> http://www.mail-archive.com/numpy-discussion@scipy.org/msg44950.html
>>
>> I believe this is implemented here:
>>
>> http://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/math/exp.def.h
>>
>> It looks as if this implementation is slightly less accurate than
>> other implementations on OSX and Linux:
>>
>> http://www.mail-archive.com/numpy-discussion@scipy.org/msg44987.html
>>
>> Specifically, the Linux implementation achieves 100% floating point
>> accuracy, whereas the Mingw-w64 implementation gets about 80% of
>> values exactly (floating point) correct, with the remainder off by one
>> unit at the last place (ULP).
>
> Hmm, well, we use here variant provided by netbsd.

Just to check - you mean the Mingw-w64 assembly should give identical
results to this function in C?

http://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/lib/libm/src/e_exp.c

> This 1 ULP thing
> isn't necessarily an inaccuracy in general.  Mostly it might be either
> an issue of rounding, or of method you use to display them.  If you
> want more accurate value-print I would recommment to use the
> __mingw_(printf) functions instead of the MS-C-runtime one.  Issue
> here is that values by MS-printf getting rounded different (and
> sometimes inaccurate).

Yes, sorry, I wasn't very clear.  To work out the correct values I
used a multiple precision math library in Python working at 100
decimal digits of precision:

https://gist.github.com/matthew-brett/11301221

I didn't use printf for these values, they are being manipulated as
doubles in Python, with the values for exp comping from calls to exp
via the Python code. So, I think these accuracy values are correct,
and I've checked with equivalent tests for multiplication (guaranteed
to closest floating point value), but I'm happy to hear otherwise.

>> I writing to ask whether I should investigate this further to see if
>> another implementation would give better accuracy for similar speed.
>> Or do y'all consider the current accuracy good enough?
>
> Of course we are interested in approving our math accuracy.  It would
> be great to improve it.  Nevertheless keep please in mind that not all
> licenses (and so not all implementations) are acceptable for us.
> And for such patches some testcases would be important, too.
> Another pretty important thing here is also the
> calculation-performance.  Another interesting aspect of current
> implementation would be to make calculation table-based without use of
> x87-FPU instructions (especially for x64).

OK - thanks - then I will investigate further and let you know what I
find, if anything.

Best,

Matthew

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.  Get 
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to