Most likely this bug was reported before; but I couldn't seem to find it in this database. So, just in case. The bug is with gcc 3.3.5; I know 3.4.4 works fine.
=========== test #include <stdio.h> #include <math.h> int main() { int g_size = 8; int dim; double dd; dd = log2(g_size); dim = (pow(2, (int)dd) >= g_size)?(int)dd : (int)dd + 1; printf("log2(%d) = %.1f pow(2, (int)%d) >= %d = %d\n", g_size, dd, (int)dd, g_size, (pow(2, (int)dd) >= g_size)); return 0; } ============ compile & run > gcc -v Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/specs Configured with: /scratch/portage/tmp/portage/gcc-3.3.5-r1/work/gcc-3.3.5/configure --enable-version-specific-runtime-libs --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.3.5 --includedir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.5 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.5/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.3.5/info --with-gxx-include-dir=/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/include/g++-v3 --host=i686-pc-linux-gnu --disable-altivec --disable-nls --enable-__cxa_atexit --enable-clocale=gnu --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --enable-shared --enable-threads=posix --enable-java-awt=gtk --enable-languages=c,c++,f77,java Thread model: posix gcc version 3.3.5 (Gentoo Linux 3.3.5-r1, ssp-3.3.2-3, pie-8.7.7.1) > gcc -lm test_math.c > ./a.out log2(8) = 1075199136.0 pow(2, (int)1075199136) >= 8 = 1 -- Summary: math function log2 bug Product: gcc Version: 3.3.5 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bxin33 at gmail dot com GCC build triplet: PIII + Gentoo Linux 2.6.11 + GCC 3.3.5 GCC host triplet: PIII + Gentoo Linux 2.6.11 + GCC 3.3.5 GCC target triplet: PIII + Gentoo Linux 2.6.11 + GCC 3.3.5 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26927