RFA: Add definition of M_LOG2_E when compiling in ISO C99 mode
Jeff Johnston
jjohnstn@redhat.com
Thu Sep 6 20:15:00 GMT 2007
Thanks Nick for pointing this out. I have made a patch, slightly
different than yours, that fixes the problem. Basically, I just defined
a macro _M_LOG2E that is defined regardless. The macro is used by log2
and log2f and M_LOG2E uses it as well.
-- Jeff J.
Nick Clifton wrote:
> Hi Jeff,
>
> I ran across a small problem with the definition of the log2 macro
> in newlib/libc/include/math.h. The problem is that the macro is
> defined when compiling in ISO C99 mode, but that the M_LOG2_E value
> that it uses is not. Here is an example:
>
> % cat foo.c
> #include <math.h>
> int main (void) { return (int) log2 (0.0); }
>
> % newlib-using-gcc -std=c99 -c foo.c
> foo.c: In function 'main':
> foo.c:2: error: 'M_LOG2_E' undeclared (first use in this function)
>
> The patch below fixes this problem by adding a definition of M_LOG2_E
> if the log2 macro has been defined but the constant has not.
>
> OK to apply ?
>
> Cheers
> Nick
>
> newlib/ChangeLog
> 2007-09-06 Nick Clifton <nickc@redhat.com>
>
> * libc/include/math.h (M_LOG2_E): Ensure that this macro is
> defined if the log2 macro is defined.
>
> Index: newlib/libc/include/math.h
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/include/math.h,v
> retrieving revision 1.28
> diff -c -3 -p -r1.28 math.h
> *** newlib/libc/include/math.h 11 Jul 2007 18:09:08 -0000 1.28
> --- newlib/libc/include/math.h 6 Sep 2007 11:33:55 -0000
> *************** extern __IMPORT _LIB_VERSION_TYPE _LIB_V
> *** 464,469 ****
> --- 464,473 ----
>
> #endif /* ! defined (__STRICT_ANSI__) */
>
> + #if defined log2 && ! defined M_LOG2_E
> + #define M_LOG2_E 0.693147180559945309417
> + #endif
> +
> _END_STD_C
>
> #ifdef __FAST_MATH__
>
More information about the Newlib
mailing list