2012-04-16 14 views
8

Ho un codepad.cos'è "riferimento non definito a" pow "'

On line 15 all'interno di una per la funzione

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 linea power=pow(inp,j); ho aggiunto j invece di utilizzare i perché mi ha dato lo stesso errore. undefined reference to 'pow'.

Se sostituisco j con 2, quindi funziona perfettamente ma quando uso j=i non funzionerà. C'è un problema con l'incremento di questa linea?

Voglio che questo incrementi e non mi passi un errore.

+1

Gcc sta barando :) Vedi [questo] (https://gcc.gnu.org/gcc-4.3/changes.html#mpfropts) – Deqing

risposta

20

È necessario eseguire il collegamento con la libreria matematica. Con gcc, ciò significherebbe passare -lm durante il collegamento.

Il motivo per cui non si lamenta quando si utilizza 2 come valore di esponente è perché il compilatore sta ottimizzando la chiamata pow.

+0

Huh. 'Gcc' fa davvero questa ottimizzazione? È selvaggio –

+0

@ ErnestFriedman-Hill Sì ottimizza a 'inp * inp' – Paulpro

+0

WoW bella risposta, non mi aspetto che ottimizzi la chiamata – Lefteris

Problemi correlati