<div dir="ltr"><div><div>Hi Julian,<br><br></div>to distinguish between mingw32 and mingw-w64 we need something like this:<br><br>#include <stdlib.h><br>if !defined(HAVE_EXPM1) || defined(__MINGW64_VERSION_MAJOR)<br>
<br>instead of<br><br>if !defined(HAVE_EXPM1) || defined(__MINGW32__)<br><br></div><div>the latter is true for both: mingw32 and mingw-w64. I guess the mingw32 implementation of expm1 is again different.<br></div><div><br>
</div>stdlib.h has to be included to define __MINGW64_VERSION_MAJOR<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-23 23:27 GMT+02:00 Julian Taylor <span dir="ltr"><<a href="mailto:jtaylor.debian@googlemail.com" target="_blank">jtaylor.debian@googlemail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On 23.04.2014 21:25, Matthew Brett wrote:<br>
> Hi,<br>
><br>
> On Tue, Apr 15, 2014 at 12:34 AM, Julian Taylor<br>
> <<a href="mailto:jtaylor.debian@googlemail.com">jtaylor.debian@googlemail.com</a>> wrote:<br>
>> On Tue, Apr 15, 2014 at 4:30 AM, Matthew Brett <<a href="mailto:matthew.brett@gmail.com">matthew.brett@gmail.com</a>> wrote:<br>
>>><br>
>>> It looks as though mingw-w64 is at fault, and I was confused (still<br>
>>> am) because of the different behavior with double and a constant:<br>
>>><br>
>>> #include <stdio.h><br>
>>> #include <math.h><br>
>>><br>
>>> int main() {<br>
>>>     double z, i = -0.0;<br>
>>>     printf("With double %f=%f, with constant=%f\n",<br>
>>>    i, expm1(i), expm1(-0.));<br>
>>> }<br>
>>><br>
>>> gives:<br>
>>><br>
>>> With double -0.000000=0.000000, with constant=-0.000000<br>
>>><br>
>>> That was ugly to track down.<br>
>>><br>
>>> What is the right way to work round this (using the numpy version<br>
>>> instead of the system version I suppose)?<br>
>>><br>
>><br>
>> The right way is to file a bug at mingw and get it fixed at the source.<br>
><br>
> <a href="http://sourceforge.net/p/mingw-w64/code/6594/" target="_blank">http://sourceforge.net/p/mingw-w64/code/6594/</a><br>
<br>
</div>great thanks for reporting it.<br>
<div class=""><br>
><br>
>> Additionally as this time npymath seems to be better (thats 3 bugs in<br>
>> npymath vs 1 in mingw on my scoreboard) one could use the mingw<br>
>> preprocessor define instead of HAVE_EXP1M to select this function from<br>
>> npymath.<br>
><br>
> Sorry to be slow - could you unpack what you mean in this paragraph?<br>
> Is there a way to force use of the numpy version of the function using<br>
> environment variables or similar?<br>
><br>
<br>
</div>I mean something along the line of attached patch, maybe you can try it.<br>
If it works I can file a numpy PR.<br>
<br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br></div>