2012-04-16 12 views
8

Tengo codepad.¿cuál es 'referencia indefinida para' pow ''

en la línea 15 dentro de una función de

for(i=2; i<=90; i+=2){ 
    int j=0+i; 
    printf("%i\n",i); 
    power=pow(inp,j); 
    factor=factorial(i); 
    if(i%4==0)fAns += power/factor; 
    else fAns -= power/factor; 
    } 

la línea power=pow(inp,j); que añade j en lugar de usar i porque me dio el mismo error. undefined reference to 'pow'.

Si reemplazo j con 2, entonces funciona bien, pero cuando uso j=i no funciona. ¿Hay algún problema al incrementar esta línea?

Quiero que se incremente y no me arroje un error.

+1

Gcc está haciendo trampa :) Ver [esto] (https://gcc.gnu.org/gcc-4.3/changes.html#mpfropts) – Deqing

Respuesta

20

Debe establecer un enlace con la biblioteca de matemáticas. Con gcc, esto significaría pasar -lm durante la vinculación.

La razón por la que no se queja cuando usa 2 como el valor del exponente es porque el compilador está optimizando la llamada pow.

+0

Huh. ¿'Gcc' realmente hace esa optimización? Eso es salvaje. –

+0

@ ErnestFriedman-Hill Sí optimiza a 'inp * inp' – Paulpro

+0

WoW buena respuesta, no esperaría que optimizar la llamada – Lefteris