Usa algo así para depurar. Convierte las variables a double a ver que te da el programa cuando falla.
Código (c) [Seleccionar]
#include <stdio.h>
#include <math.h>
#define obj2bin(obj) execobj2bin(&#obj, sizeof(#obj))
static void execobj2bin(void *obj, size_t size) {
for(int i = size - 1; i >= 0; --i)
for(int j = 7; j >= 0; --j)
printf("%d", ((char*)obj)[i]>>j & 1);
}
int main( void ) {
int x = 10;
int y = 2;
int z = pow(x,y);
printf("10 al cuadrado es igual a %i \n", z );
printf("x = "); obj2bin(x); puts("");
printf("y = "); obj2bin(y); puts("");
printf("z = "); obj2bin(z); puts("");
getchar();
}