On Sun, Mar 11, 2012 at 6:58 PM, Michael Goffioul
<michael.goffi...@gmail.com> wrote:
> To confirm my suspicion, I tested the following sample:
>
> #include "config.h"
> #include <math.h>
> #include <stdio.h>
>
> int main (int argc, char** argv)
> {
>        volatile float x;
>        float zero = 0.0f;
>
>        x = 1.0f / zero;
>        {
>                int exp;
> #ifdef __cplusplus
>                float y = gnulib::frexpf (x, &exp);
> #else
>                float y = frexpf (x, &exp);
> #endif
>                if (y != x)
>                        printf ("failed\n");
>        }
>
>        return 0;
> }
>
> This code will print "failed" when the MSVC implementation is used
> instead of the gnulib replacement. The files config.h and math.h are
> taken from the compiled octave sources. When compiling in C mode, it
> works fine, nothing is printed. When compiled in C++ mode, it fails.
> In C++ mode, I can even compile and link it without including gnulib
> sources like frexp.c, which indicates gnulib replacement is not used.
>
> Michael.

Additional information: frexpf is actually defined as a macro in C,
and as an inline function in C++.

Michael.

Reply via email to