2012-04-16 23 views
8

codepad var. fonksiyonu'pow' tanımsız başvurusu nedir '

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

hat power=pow(inp,j); için iç hat 15 üzerinde

Ben bana aynı hata verdi çünkü sadece i kullanmak yerine j ekledi. undefined reference to 'pow'.

j'u 2 ile değiştirirseniz, o zaman iyi çalışır, ancak j=i'u kullandığımda işe yaramaz. Bu çizgiyi arttırmakla ilgili bir problem var mı?

Bunun artmasını ve bir hata yapmamasını istiyorum.

+1

Gcc aldatıyor :) Bkz. [This] (https://gcc.gnu.org/gcc-4.3/changes.html#mpfropts) – Deqing

cevap

20

Matematik kitaplığı ile bağlantı kurmanız gerekir. Gcc ile, bu bağlantı sırasında -lm geçmesi anlamına gelir.

2'u üs değeri olarak kullandığınızda şikayet etmemesinin nedeni, derleyicinin pow çağrıyı en iyi duruma getirmesidir.

+0

Huh. Gcc gerçekten bu optimizasyonu yapıyor mu? Bu vahşi. –

+0

@ ErnestFriedman-Hill Evet, inp * inp ' – Paulpro

+0

için en iyi değere ulaşır. İyi bir yanıt, beklemeyi en iyi duruma getirmesini beklemez. – Lefteris