Немного трудно понять, в чем проблема. Это синтаксис, необходимый для создания квадратных корней и степеней?
Квадратный корень: sqrtf(float)
Сила: powf(float, float)
- второй поплавок - это сила, на которую вы хотите поднять первый поплавок.
Немного проще для степени двойки (возможно, легче для чтения) просто сначала вычислить промежуточное значение, а затем умножить его на себя:
valueA * valueA
Кроме того, не забывайте соблюдать осторожность в отношении приоритета оператора в C. Умножение, деление и модуль оцениваются перед сложением и вычитанием. Убедитесь, что вы заключили все в квадратные скобки надлежащим образом, или, что еще лучше - как предложено @Warkst в вашем посте, - выполните вычисления в несколько шагов. Таким образом, у вас возникли проблемы с:
// sqrt((1-((p2+0.1)/(p1+0.1))-b) / (1-b))^2
float part1 = (p2 + 0.1) / (p1 + 0.1);
float part2 = (1 - part1 - b) / (1 - b);
float part3 = sqrtf(part2);
float result = part3 * part3;
part1/2/3
возможно, не идеальные имена переменных, но вы поняли.