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