Как разобраться с функцией pow?

Запускаю задачку, но не могу понять вытекающую из неё проблему. Как решить и понять?

В коде:

#include <stdio.h>
#include <math.h>

float F(float x, float y, float z);

int main(){
    float x,y,z,b,k,P;
    x=6.5;
    b=8/9;
    k=4.5;
    P = tan(F(x,b,k))+cbrt(F(k,pow(b,2),x))-pow(F,2)(b + 0.1,k,pow(x, 2));
}

float F(float x, float y, float z){
    float f;
    f = pow(x,2)-pow(y,2)+z;
    return f;
}

Возникает проблема в данной строке:

    P = tan(F(x,b,k))+cbrt(F(k,pow(b,2),x))-pow(F,2)(b + 0.1,k,pow(x, 2));

Консоль говорит:

main.cpp: In function ‘int main()’:
main.cpp:11:52: error: no matching function for call to ‘pow(float (&)(float, float, float), int)’
   11 |     P = tan(F(x,b,k))+cbrt(F(k,pow(b,2),x))-pow(F,2)(b + 0.1,k,pow(x, 2));
      |                                                    ^

Ответы (1 шт):

Автор решения: Anton Menshov

В строке:

P = tan(F(x,b,k))+cbrt(F(k,pow(b,2),x))-pow(F,2)(b + 0.1,k,pow(x, 2));

один из вызовов std::pow является pow(F,2), где F - это вовсе не число, а функция:

float F(float x, float y, float z);

Передать ее напрямую в std::pow не получится, да и бессмысленно.

Я подозреваю, что это опечатка, и планировалось вызвать: pow(F(XXX),2), где XXX - это аргумент к F(). Определитесь, с тем, что есть XXX в вашем вычислении.

→ Ссылка