On 11/04/2013 09:54 AM, John W. Eaton wrote:
On 11/04/2013 12:05 PM, Rik wrote:
Aside from performance, does using gnulib::frexp solve the original
problem? The gnulib documentation is somewhat minimal and they suggest
that they only replace an existing library function if the function is
buggy. Otherwise, they fall back on the library version that is
available. This may be, however, only when you use the bare function
such as 'frexp' rather than the namespace-qualified version
'gnulib::frexp'.
The namespace thing allows gnulib to replace the function in C++ code
without introducing macros that screw things up in other places. But the
replacement code is still only used if needed. It works by using a
function pointer in the namespace that either refers to the replacement
function (usually called rpl_FOO) or the system function FOO. So there
shouldn't be much of a penalty if the system function is used.
Philip,
Can you test the solution which is in Mercurial with MinGW? It is possible
that gnulib doesn't identify the frexp on Windows as being buggy (since it
works for ordinary values) in which case it won't replace it with the
correct version.