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();
}